关注:Java提升营,最新文章第一时间送达,10T 免费学习资料随时领取!!!

最近有人提出能不能发一些大数据相关的知识,No problem ! 今天先从安装环境说起,搭建起自己的学习环境。

Hadoop的三种搭建方式以及使用环境:

  • 单机版适合开发调试;
  • 伪分布式适合模拟集群学习;
  • 完全分布式适用生产环境。

这篇文件介绍如何搭建完全分布式的hadoop集群,一个主节点,两个数据节点。

先决条件

  1. 准备3台服务器

虚拟机物理机云上实例均可,本篇使用Openstack私有云里面的3个实例进行安装部署。

  1. 操作系统及软件版本
服务器 系统 内存 IP 规划 JDK HADOOP
node1 Ubuntu 18.04.2 LTS 8G 10.101.18.21 master JDK 1.8.0_222 hadoop-3.2.1
node2 Ubuntu 18.04.2 LTS 8G 10.101.18.8 slave1 JDK 1.8.0_222 hadoop-3.2.1
node3 Ubuntu 18.04.2 LTS 8G 10.101.18.24 slave2 JDK 1.8.0_222 hadoop-3.2.1
  1. 三台机器安装JDK

因为Hadoop是用Java语言编写的,所以计算机上需要安装Java环境,我在这使用JDK 1.8.0_222(推荐使用Sun JDK)

安装命令

  1. sudo apt install openjdk-8-jdk-headless

配置JAVA环境变量,在当前用户根目录下的.profile文件最下面加入以下内容:

  1. export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
  2. export PATH=$JAVA_HOME/bin:$PATH
  3. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

使用source命令让立即生效

  1. source .profile
  1. host配置

修改三台服务器的hosts文件

  1. vim /etc/hosts
  2. #添加下面内容,根据个人服务器IP配置
  3. 10.101.18.21 master
  4. 10.101.18.8 slave1
  5. 10.101.18.24 slave2

免密登陆配置

  1. 生产秘钥
  1. ssh-keygen -t rsa
  1. master免密登录到slave中
  1. ssh-copy-id -i ~/.ssh/id_rsa.pub master
  2. ssh-copy-id -i ~/.ssh/id_rsa.pub slave1
  3. ssh-copy-id -i ~/.ssh/id_rsa.pub slave2
  1. 测试免密登陆
  1. ssh master
  2. ssh slave1
  3. ssh slave2

Hadoop搭建

我们先在Master节点下载Hadoop包,然后修改配置,随后复制到其他Slave节点稍作修改就可以了。

  1. 下载安装包,创建Hadoop目录
  1. #下载
  2. wget http://http://apache.claz.org/hadoop/common/hadoop-3.2.1//hadoop-3.2.1.tar.gz
  3. #解压到 /usr/local 目录
  4. sudo tar -xzvf hadoop-3.2.1.tar.gz -C /usr/local
  5. #修改hadoop的文件权限
  6. sudo chown -R ubuntu:ubuntu hadoop-3.2.1.tar.gz
  7. #重命名文件夹
  8. sudo mv hadoop-3.2.1 hadoop
  1. 配置Master节点的Hadoop环境变量

和配置JDK环境变量一样,编辑用户目录下的.profile文件, 添加Hadoop环境变量:

  1. export HADOOP_HOME=/usr/local/hadoop
  2. export PATH=$PATH:$HADOOP_HOME/bin
  3. export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

执行 source .profile 让立即生效

  1. 配置Master节点

Hadoop 的各个组件均用XML文件进行配置, 配置文件都放在 /usr/local/hadoop/etc/hadoop 目录中:

  • core-site.xml:配置通用属性,例如HDFS和MapReduce常用的I/O设置等
  • hdfs-site.xml:Hadoop守护进程配置,包括namenode、辅助namenode和datanode等
  • mapred-site.xml:MapReduce守护进程配置
  • yarn-site.xml:资源调度相关配置

a. 编辑core-site.xml文件,修改内容如下:

  1. <configuration>
  2. <property>
  3. <name>hadoop.tmp.dir</name>
  4. <value>file:/usr/local/hadoop/tmp</value>
  5. <description>Abase for other temporary directories.</description>
  6. </property>
  7. <property>
  8. <name>fs.defaultFS</name>
  9. <value>hdfs://master:9000</value>
  10. </property>
  11. </configuration>

参数说明:

  • fs.defaultFS:默认文件系统,HDFS的客户端访问HDFS需要此参数
  • hadoop.tmp.dir:指定Hadoop数据存储的临时目录,其它目录会基于此路径, 建议设置到一个足够空间的地方,而不是默认的/tmp下

如没有配置hadoop.tmp.dir参数,系统使用默认的临时目录:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被删除,必须重新执行format才行,否则会出错。

b. 编辑hdfs-site.xml,修改内容如下:

  1. <configuration>
  2. <property>
  3. <name>dfs.replication</name>
  4. <value>3</value>
  5. </property>
  6. <property>
  7. <name>dfs.name.dir</name>
  8. <value>/usr/local/hadoop/hdfs/name</value>
  9. </property>
  10. <property>
  11. <name>dfs.data.dir</name>
  12. <value>/usr/local/hadoop/hdfs/data</value>
  13. </property>
  14. </configuration>

参数说明:

  • dfs.replication:数据块副本数
  • dfs.name.dir:指定namenode节点的文件存储目录
  • dfs.data.dir:指定datanode节点的文件存储目录

c. 编辑mapred-site.xml,修改内容如下:

  1. <configuration>
  2. <property>
  3. <name>mapreduce.framework.name</name>
  4. <value>yarn</value>
  5. </property>
  6. <property>
  7. <name>mapreduce.application.classpath</name>
  8. <value>$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*</value>
  9. </property>
  10. </configuration>

d. 编辑yarn-site.xml,修改内容如下:

  1. <configuration>
  2. <!-- Site specific YARN configuration properties -->
  3. <property>
  4. <name>yarn.nodemanager.aux-services</name>
  5. <value>mapreduce_shuffle</value>
  6. </property>
  7. <property>
  8. <name>yarn.resourcemanager.hostname</name>
  9. <value>master</value>
  10. </property>
  11. <property>
  12. <name>yarn.nodemanager.env-whitelist</name>
  13. <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME</value>
  14. </property>
  15. </configuration>

e. 编辑workers, 修改内容如下:

  1. slave1
  2. slave2

配置worker节点

  1. 配置Slave节点

将Master节点配置好的Hadoop打包,发送到其他两个节点:

  1. # 打包hadoop包
  2. tar -cxf hadoop.tar.gz /usr/local/hadoop
  3. # 拷贝到其他两个节点
  4. scp hadoop.tar.gz ubuntu@slave1:~
  5. scp hadoop.tar.gz ubuntu@slave2:~

在其他节点加压Hadoop包到/usr/local目录

  1. sudo tar -xzvf hadoop.tar.gz -C /usr/local/

配置Slave1和Slaver2两个节点的Hadoop环境变量:

  1. export HADOOP_HOME=/usr/local/hadoop
  2. export PATH=$PATH:$HADOOP_HOME/bin
  3. export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

启动集群

  1. 格式化HDFS文件系统

进入Master节点的Hadoop目录,执行一下操作:

  1. bin/hadoop namenode -format

格式化namenode,第一次启动服务前执行的操作,以后不需要执行。

截取部分日志(看第5行日志表示格式化成功):

  1. 2019-11-11 13:34:18,960 INFO util.GSet: VM type = 64-bit
  2. 2019-11-11 13:34:18,960 INFO util.GSet: 0.029999999329447746% max memory 1.7 GB = 544.5 KB
  3. 2019-11-11 13:34:18,961 INFO util.GSet: capacity = 2^16 = 65536 entries
  4. 2019-11-11 13:34:18,994 INFO namenode.FSImage: Allocated new BlockPoolId: BP-2017092058-10.101.18.21-1573450458983
  5. 2019-11-11 13:34:19,010 INFO common.Storage: Storage directory /usr/local/hadoop/hdfs/name has been successfully formatted.
  6. 2019-11-11 13:34:19,051 INFO namenode.FSImageFormatProtobuf: Saving image file /usr/local/hadoop/hdfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
  7. 2019-11-11 13:34:19,186 INFO namenode.FSImageFormatProtobuf: Image file /usr/local/hadoop/hdfs/name/current/fsimage.ckpt_0000000000000000000 of size 401 bytes saved in 0 seconds .
  8. 2019-11-11 13:34:19,207 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
  9. 2019-11-11 13:34:19,214 INFO namenode.FSImage: FSImageSaver clean checkpoint: txid=0 when meet shutdown.
  1. 启动Hadoop集群
  1. sbin/start-all.sh

启动过程遇到的问题与解决方案:

a. 错误:master: rcmd: socket: Permission denied

解决

执行 echo "ssh" > /etc/pdsh/rcmd_default

b. 错误:JAVA_HOME is not set and could not be found.

解决

修改三个节点的hadoop-env.sh,添加下面JAVA环境变量

  1. export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
  1. 使用jps命令查看运行情况

Master节点执行输出:

  1. 19557 ResourceManager
  2. 19914 Jps
  3. 19291 SecondaryNameNode
  4. 18959 NameNode

Slave节点执行输入:

  1. 18580 NodeManager
  2. 18366 DataNode
  3. 18703 Jps
  1. 查看Hadoop集群状态
  1. hadoop dfsadmin -report

查看结果:

  1. Configured Capacity: 41258442752 (38.42 GB)
  2. Present Capacity: 5170511872 (4.82 GB)
  3. DFS Remaining: 5170454528 (4.82 GB)
  4. DFS Used: 57344 (56 KB)
  5. DFS Used%: 0.00%
  6. Replicated Blocks:
  7. Under replicated blocks: 0
  8. Blocks with corrupt replicas: 0
  9. Missing blocks: 0
  10. Missing blocks (with replication factor 1): 0
  11. Low redundancy blocks with highest priority to recover: 0
  12. Pending deletion blocks: 0
  13. Erasure Coded Block Groups:
  14. Low redundancy block groups: 0
  15. Block groups with corrupt internal blocks: 0
  16. Missing block groups: 0
  17. Low redundancy blocks with highest priority to recover: 0
  18. Pending deletion blocks: 0
  19. -------------------------------------------------
  20. Live datanodes (2):
  21. Name: 10.101.18.24:9866 (slave2)
  22. Hostname: slave2
  23. Decommission Status : Normal
  24. Configured Capacity: 20629221376 (19.21 GB)
  25. DFS Used: 28672 (28 KB)
  26. Non DFS Used: 16919797760 (15.76 GB)
  27. DFS Remaining: 3692617728 (3.44 GB)
  28. DFS Used%: 0.00%
  29. DFS Remaining%: 17.90%
  30. Configured Cache Capacity: 0 (0 B)
  31. Cache Used: 0 (0 B)
  32. Cache Remaining: 0 (0 B)
  33. Cache Used%: 100.00%
  34. Cache Remaining%: 0.00%
  35. Xceivers: 1
  36. Last contact: Mon Nov 11 15:00:27 CST 2019
  37. Last Block Report: Mon Nov 11 14:05:48 CST 2019
  38. Num of Blocks: 0
  39. Name: 10.101.18.8:9866 (slave1)
  40. Hostname: slave1
  41. Decommission Status : Normal
  42. Configured Capacity: 20629221376 (19.21 GB)
  43. DFS Used: 28672 (28 KB)
  44. Non DFS Used: 19134578688 (17.82 GB)
  45. DFS Remaining: 1477836800 (1.38 GB)
  46. DFS Used%: 0.00%
  47. DFS Remaining%: 7.16%
  48. Configured Cache Capacity: 0 (0 B)
  49. Cache Used: 0 (0 B)
  50. Cache Remaining: 0 (0 B)
  51. Cache Used%: 100.00%
  52. Cache Remaining%: 0.00%
  53. Xceivers: 1
  54. Last contact: Mon Nov 11 15:00:24 CST 2019
  55. Last Block Report: Mon Nov 11 13:53:57 CST 2019
  56. Num of Blocks: 0
  1. 关闭Hadoop
  1. sbin/stop-all.sh

Web查看Hadoop集群状态

在浏览器输入 http://10.101.18.21:9870 ,结果如下:

在浏览器输入 http://10.101.18.21:8088 ,结果如下:

Hadoop3.2.1版本的环境搭建的更多相关文章

  1. 大数据学习笔记【一】:Hadoop-3.1.2完全分布式环境搭建(Windows 10)

    一.前言 Hadoop原理架构本人就不在此赘述了,可以自行百度,本文仅介绍Hadoop-3.1.2完全分布式环境搭建(本人使用三个虚拟机搭建). 首先,步骤: ① 准备安装包和工具: hadoop-3 ...

  2. 一步一步了解Cocos2dx 3.0 正式版本开发环境搭建(Win32/Android)

    cocos2d-x 3.0发布有一段时间了,作为一个初学者,我一直觉得cocos2d-x很坑.每个比较大的版本变动,都会有不一样的项目创建方式,每次的跨度都挺大…… 但是凭心而论,3.0RC版本开始 ...

  3. Cocos2d-X-3.0 之后的版本的环境搭建

     Cocos2d-X-3.0 之后的版本的环境搭建 由于cocos2d游戏开发引擎更新十分频繁,官方文档同步不够及时和完善.所以不要照着官方文档来照做生成工程. <点击图片就能进入网站> ...

  4. Cocos2d-X-3.0之后的版本的环境搭建

    由于cocos2d游戏开发引擎更新十分频繁,官方文档同步不够及时和完善.所以不要照着官方文档来照做生成工程. <点击图片就能进入网站> 具体的步骤: 1.获取cocos2d-X的源码v3. ...

  5. HDFS【hadoop3.1.3 windows开发环境搭建】

    目录 一.配置hadoop3.1.3 windows环境依赖 配置环境变量 添加到path路径 在cmd中测试 二.idea中的配置 创建工程/模块 添加pom.xml依赖 日志添加--配置log4j ...

  6. go 版本 gRPC 环境搭建(3.0正式版)

    之前装过 gRPC 的各个测试版本,有些残余的文件,正式版的安装和之前残留的清除整理如下:   安装 go 版本的 gRPC go 的安装略过.需要 go 1.5 以上版本. $ go version ...

  7. py-faster-rcnn(running the demo): ubuntu14.04+caffe+cuda7.5+cudnn5.1.3+python2.7环境搭建记录

    第一次写博客,以此纪念这几天安装caffe,跑faster-rcnn的血泪史.在此特别感谢网络各路大神,来自全球各地,让我能从中汲取营养,吸取经验,总结规律. faster-rcnn分为matlab版 ...

  8. Cocos2d-x 3.2 学习笔记(一)环境搭建

    目前项目无事,时间比较充裕,因此来学习下cocos2dx,当然本人也是新手一个, 写此笔记做备忘和脚步. 最近3.2版本更新出來了!官方说这是自2.x分支以来修复了超过450个bug,3.2版本是目前 ...

  9. OpenCV环境搭建

    前言 我在上本科时候曾经用过opencv,那时候还是1.x版本,还必须在linux下自己编译. 时过境迁,最近突然想起来写个小程序来分析图片,就又想起了opencv.现在已然是2.4的版本. 环境搭建 ...

随机推荐

  1. Unknown column 'user_id' in 'where clause'

    mapper位置报错Unknown column 'user_id' in 'where clause' 可能是数据库中的字段user_id包含空格

  2. idea 新建项目 coding上新建项目 idea推送到coding

    1. 注册coding a. 首先在(https://coding.net)上创建项目 ps:跳过注册 ![file](https://img2018.cnblogs.com/blog/1416679 ...

  3. HashMap底层数据结构详解

    一.HashMap底层数据结构 JDK1.7及之前:数组+链表 JDK1.8:数组+链表+红黑树 关于HashMap基本的大家都知道,但是为什么数组的长度必须是2的指数次幂,为什么HashMap的加载 ...

  4. Typesetting HDU - 6107

    Yellowstar is writing an article that contains N words and 1 picture, and the i-th word contains aia ...

  5. Sql 六种约束

    --1.主键约束问题 create table 学生表( 学号 int primary key, 姓名 varchar(10)); insert into 学生表 values(null,'a');问 ...

  6. 破阵九解:Node和浏览器之事件循环/任务队列/异步顺序/数据结构

    前言 本文内容比较长,请见谅.如有评议,还请评论区指点,谢谢大家! >> 目录 开门见山:Node和浏览器的异步执行顺序问题 两种环境下的宏任务和微任务(macrotask &&a ...

  7. 安装Ubuntu时界面显示不全,无法点击continue按钮

    按住win键和鼠标左键即可拖动界面

  8. phpstudy后门rce批量利用脚本

    写两个 一个批量检测的  一个交互式shell的 暂时py  图形化的qt写出来..有点问题 后门包 : GET / HTTP/1.1Host: 127.0.0.1User-Agent: Mozill ...

  9. 实验吧之【Forms、天网管理系统】

    Forms 原题链接 http://ctf5.shiyanbar.com/10/main.php Form 其实是个提示,代表html表单 F12 查看源码,发现 <input name=&qu ...

  10. 2019年高级Java程序员面试题汇总

    目录 JDK Dubbo Zookeeper Strut2 Spring系列 Redis系列 Mysql系列 Java多线程 消息中间件 线程池 事物 JVM 设计模式 其他 程序设计 基础知识 编程 ...