大数据技术 Linux下Hadoop2.7.1集群环境的搭建
沉沙 2018-09-27 来源 : 阅读 1024 评论 0

摘要:本篇教程探讨了大数据技术 Linux下Hadoop2.7.1集群环境的搭建,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。

本篇教程探讨了大数据技术 Linux下Hadoop2.7.1集群环境的搭建,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。

<


一、基础环境



在Linux上安装Hadoop之前,需要先安装两个程序:
1.1 安装说明
1. JDK 1.6或更高版本(本文所提到的安装的是jdk1.7);
2. SSH(安全外壳协议),推荐安装OpenSSH。
 


下面简述一下安装这两个程序的原因:
1. Hadoop是用Java开发的,Hadoop的编译及MapReduce的运行都需要使用JDK。
2. Hadoop需要通过SSH来启动salve列表中各台主机的守护进程,因此SSH也是必须安装的,即使是安装伪分布式版本(因为Hadoop并没有区分集群式和伪分布式)。对于伪分布式,Hadoop会采用与集群相同的处理方式,即依次序启动文件conf/slaves中记载的主机上的进程,只不过伪分布式中salve为localhost(即为自身),所以对于伪分布式Hadoop,SSH一样是必须的。
1.1 JDK的安装与配置
1、上传压缩包
我这里使用的是WinScp工具 上传jdk-7u76-linux-x64.tar.gz压缩包

2、解压压缩包
tar -zxvf jdk-7u76-linux-x64.tar.gz
3、将解压的目录移动到/usr/local目录下
mv /lutong/jdk1.7.0_76/ /usr/local/

4、配置环境变量
vim /etc/profile

5、重新加载/etc/profile,使配置生效
source /etc/profile
6、查看配置是否生效
echo $PATH
java -version

出现如上信息表示已经配置好了。
 

二、Host配置

由于我搭建Hadoop集群包含三台机器,所以需要修改调整各台机器的hosts文件配置,进入/etc/hosts,配置主机名和ip的映射,命令如下:
vim /etc/hosts

如果没有足够的权限,可以切换用户为root。
三台机器的内容统一增加以下host配置:
可以通过hostname来修改服务器名称为master、slave1、slave2
hostname master

 


三、Hadoop的安装与配置
3.1 创建文件目录
为了便于管理,给Master的hdfs的NameNode、DataNode及临时文件,在用户目录下创建目录:
/data/hdfs/name
/data/hdfs/data

/data/hdfs/tmp
然后将这些目录通过scp命令拷贝到Slave1和Slave2的相同目录下。


3.2 下载

首先到Apache官网(//www.apache.org/dyn/closer.cgi/hadoop/common/)下载Hadoop,从中选择推荐的下载镜像(//mirrors.hust.edu.cn/apache/hadoop/common/),我选择hadoop-2.6.0的版本,并使用以下命令下载到Master机器的
/data目录:


wget //mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.1/hadoop-2.7.1.tar.gz
然后使用以下命令将hadoop-2.7.1.tar.gz 解压缩到/data目录
tar -zxvf hadoop-2.7.1.tar.gz

3.3 配置环境变量

回到/data目录,配置hadoop环境变量,命令如下:
vim /etc/profile
在/etc/profile添加如下内容

立刻让hadoop环境变量生效,执行如下命令:
source /etc/profile
再使用hadoop命令,发现可以有提示了,则表示配置生效了。

3.4 Hadoop的配置
进入hadoop-2.7.1的配置目录:
cd /data/hadoop-2.7.1/etc/hadoop
依次修改core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml以及slaves文件。

3.4.1 修改core-site.xml
vim core-site.xml


 1 
 2 
 3 
15 
16 
17 
18 
19   hadoop.tmp.dir
20   file:/data/hdfs/tmp
21   A base for other temporary directories.
22 

23 
24   io.file.buffer.size
25   131072
26 

27 
28   fs.default.name
29   hdfs://master:9000
30 

31 
32 hadoop.proxyuser.root.hosts
33 *
34 

35 
36 hadoop.proxyuser.root.groups
37 *
38 

39 




注意:hadoop.tmp.dir的value填写对应前面创建的目录
 
3.4.2 修改vim hdfs-site.xml
vim hdfs-site.xml


 1 
 2 
 3 
16 
17 
18 
19 
20 
21 dfs.replication
22   2
23 

24 
25   dfs.namenode.name.dir
26   file:/data/hdfs/name
27   true
28 

29 
30   dfs.datanode.data.dir
31   file:/data/hdfs/data
32   true
33 

34 
35   dfs.namenode.secondary.http-address
36   master:9001
37 

38 
39   dfs.webhdfs.enabled
40   true
41 

42 
43   dfs.permissions
44   false
45 

46 


注意:dfs.namenode.name.dir和dfs.datanode.data.dir的value填写对应前面创建的目录


3.4.3 修改vim mapred-site.xml

复制template,生成xml,命令如下:
cp mapred-site.xml.template mapred-site.xml



vim  mapred-site.xml


 1 
 2 
 3 
16 
17 
18 
19 
20 
21 
22   mapreduce.framework.name
23   yarn
24 

25 
26 




 
3.4.4 修改vim yarn-site.xml
vim  yarn-site.xml


 1 
 2 
15 
16 
17 
18 
19 yarn.resourcemanager.address
20   master:18040
21 

22 
23   yarn.resourcemanager.scheduler.address
24   master:18030
25 

26 
27   yarn.resourcemanager.webapp.address
28   master:18088
29 

30 
31   yarn.resourcemanager.resource-tracker.address
32   master:18025
33 

34 
35   yarn.resourcemanager.admin.address
36   master:18141
37 

38 
39   yarn.nodemanager.aux-services
40   mapreduce.shuffle
41 

42 
43   yarn.nodemanager.aux-services.mapreduce.shuffle.class
44   org.apache.hadoop.mapred.ShuffleHandler
45 

46 




由于我们已经配置了JAVA_HOME的环境变量,所以hadoop-env.sh与yarn-env.sh这两个文件不用修改,因为里面的配置是:
export JAVA_HOME=${JAVA_HOME} 
 
3.4.5 修改data/hadoop-2.7.1/etc/hadoop/slaves
将原来的localhost删除,改成如下内容

vim /data/hadoop-2.7.1/etc/hadoop/slaves

最后,将整个hadoop-2.7.1文件夹及其子文件夹使用scp复制到slave1和slave2的相同目录中:
scp -r /data/hadoop-2.7.1 root@slave1:/data

scp -r /data/hadoop-2.7.1 root@slave2:/data

 


四、运行Hadoop
4.1 格式化NameNode

执行命令:
hadoop namenode -format
执行过程如下图:

最后的执行结果如下图:


4.2 启动NameNode

执行命令如下:
/data/hadoop-2.7.1/sbin/hadoop-daemon.sh start namenode
















 

在Master上执行jps命令,得到如下结果:

4.3 启动DataNode

执行命令如下:
/data/hadoop-2.7.1/sbin/hadoop-daemons.sh start datanode
执行结果如下:

master

slave1

slave2

说明Slave1和Slave2上的DataNode运行正常。
以上启动NameNode和DataNode的方式,可以用start-dfs.sh脚本替代:
/data/hadoop-2.7.1/sbin/start-all.sh
4.4 运行YARN

运行Yarn也有与运行HDFS类似的方式。启动ResourceManager使用以下命令:
以上方式我们就不赘述了,来看看使用start-yarn.sh的简洁的启动方式:

在Master上执行jps:

说明ResourceManager运行正常。

在两台Slave上执行jps,也会看到NodeManager运行正常,如下图:
 


4.5 查看集群是否启动成功:
  jps
  Master显示:
  SecondaryNameNode
  ResourceManager
  NameNode
  
  Slave显示:
  NodeManager
  DataNode

五、测试hadoop
5.1 测试HDFS
最后测试下亲手搭建的Hadoop集群是否执行正常,测试的命令如下图所示:

5.2 查看集群状态
  /data/hadoop-2.7.1/bin/hdfs dfsadmin -report
  

5.3 测试YARN



可以访问YARN的管理界面,验证YARN,如下图所示:


5.4 测试mapreduce




不想编写mapreduce代码。幸好Hadoop安装包里提供了现成的例子,在Hadoop的share/hadoop/mapreduce目录下。运行例子:


 5.5 测试查看HDFS:
//115.29.51.97:50070/dfshealth.html#tab-overview

 
六、配置运行Hadoop中遇见的问题
6.1 JAVA_HOME未设置
启动的时候报:

则需要/data/hadoop-2.7.1/etc/hadoop/hadoop-env.sh,添加JAVA_HOME路径

6.2 ncompatible clusterIDs
由于配置Hadoop集群不是一蹴而就的,所以往往伴随着配置——>运行——>。。。——>配置——>运行的过程,所以DataNode启动不了时,往往会在查看日志后,发现以下问题:





此问题是由于每次启动Hadoop集群时,会有不同的集群ID,所以需要清理启动失败节点上data目录(比如我创建的/home/jiaan.gja/hdfs/data)中的数据。

6.3 NativeCodeLoader的警告
在测试Hadoop时,细心的人可能看到截图中的警告信息:

     

本文由职坐标整理发布,学习更多的大数据技术相关知识,请关注职坐标大技术云计算大技术技术频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程