作者:qk墨砚轩 | 来源:互联网 | 2023-09-10 17:34
一、 背景
最近这两周在UCloud公司实习,第一周尝试了云计算,第二周尝试并研究了大数据生态中的hadoop、yarn、spark、mapreduce等技术,并在公司提供的云主机上分别安装了hadoop伪分布式模式、hadoop分布式模式、yarn、spark以及在hadoop分布式模式上提交与查看作业。
本文介绍在一台云主机上安装hadoop完全分布模式。
二、 实验目标
在部署的3台主机m1、m2、m3中,分别安装hadoop,修改配置文件,实现hadoop的完全分布式。
三、 实验环境
3台云主机操作系统:CentOS7
jdk.1.8.0_191及以上已安装,具体JAVA版本与hadoop版本的对应关系,请参考https://cwiki.apache.org/confluence/display/HADOOP2/HadoopJavaVersions
四、 实验过程
1.关闭防火墙和SELinux(后面步骤会详细介绍做法)
2.修改IP映射关系
编辑/etc/hosts文件,添加如下内容(具体格式为:内网IP+tab+主机名,这里的内网IP是为了便于描述,实际的IP可能并不相邻,但一定在同一网段):
192.168.1.1 m1
192.168.1.2 m2
192.168.1.3 m3
3.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
4.关闭SELinux
vim /etc/selinux/config,修改第7行(如果有)enforcing为disabled
5.安装openssh客户端
yum –y install psmisc openssh-clients
6.重启所有服务器
7.配置各主机之间的ssh免密登录(此处不再赘述)
这里注意,一定要免密登录,否则每次互相通信都要输入密码,很繁琐,效率低下。
ssh免密登录的测试方法:
在m1中输入 ssh m2,看是否可以在不提示输密码的情况下,登录到m2中,其他主机之间同理(都要互相测试一下,否则可能有些主机之间通了,有些主机之间没有通)。
8.从hadoop官网下载hadoop包:http://www.apache.org/dyn/closer.cgi/hadoop/common/
这里选择hadoop2.8.5
9.将下载的hadoop-2.8.5.tar.gz通过winscp传入主机中,解压到云主机,位置自定
10.配置环境变量
编辑 /etc/profile 文件,在末尾追加如下内容(具体路径要根据自己解压hadoop的路径而做出改变):
export JAVA_HOME=/home/yourUserName/module/jdk1.8.0_201
export PATH=PATH:JAVA_HOME/bin
export HADOOP_HOME=/home/yourUserName/module/hadoop-2.7.2
export PATH=PATH:HADOOP_HOME/bin
export PATH=PATH:HADOOP_HOME/sbin
11. 刷新环境变量 source /etc/profile
12.在m1中,修改hadoop的配置文件hadoop-env.sh
把${JAVA_HOME}改为绝对路径,如export JAVA_HOME=/home/name/module/jdk1.8.0_201
13.在m1中,修改hadoop的配置文件mapred-env.sh
在第16行,删除#后把${JAVA_HOME}改为绝对路径,如export JAVA_HOME=/home/name/module/jdk1.8.0_201
14.在m1中,修改hadoop的配置文件yarn-env.sh
在第23行,删除#后把${JAVA_HOME}改为绝对路径,如export JAVA_HOME=/home/name/module/jdk1.8.0_201
15.在m1中,修改hadoop的配置文件core-site.xml
16.在m1中,修改hadoop的配置文件hdfs-site.xml
17. 在m1中,修改hadoop的配置文件mapred-site.xml
18. 在m1中,修改hadoop的配置文件yarn-site.xml
19. 在m1中,修改hadoop的配置文件slaves
slaves设定了datanode,我的配置中,设定m2与m3为datanode,所以我的salves中为:
m2
m3
20.m1通过scp命令,将配置文件分发到其他各节点
scp -r /home/name/module [email protected]:/home/name/
scp -r /home/name/module [email protected]:/home/name/
21.格式化namenode,输入命令 hdfs namenode -format
22.启动hdfs集群,输入命令start-dfs.sh
23.输入指令jps,查看进程
预期:
m1上会出现NameNode的服务;
m2上会出现SecondaryNameNode、DataNode的服务
m3上会出现DataNode的服务
24. 启动yarn集群,输入命令start-yarn.sh
预期:
m1上出现ResourceManager的服务;
m2上出现NodeManager的服务;
m3上出现NodeManager的服务
五、 收获及心得
经过了前两天的工作,我已经学会了如何配置hadoop本地模式、伪分布式模式、JAVA环境等必要前提,并在查阅了相关资料后,大致理解了hadoop集群的工作原理。主要参考的文档还是官方教程。
在配置的过程中,我注重对每一步意义的理解,并查阅文档深入学习了hadoop相关配置文件的作用和语法,以及配置文件中各个参数的作用。对这戏东西了解之后,在之后的hadoop其它模式的配置或hadoop运行时,应该会更加高效,遇到问题也能在理解可能造成问题的原因的基础上,更快的解决问题。
ps:官方文档有些步骤跨越比较大,在每一步之间,如果想深入理解这一步配置的意义,还要自己查阅资料。
六、 参考资料
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html