
参考了林子雨的教程Hadoop集群安装配置教程_Hadoop3.1.3_Ubuntu_厦大数据库实验室博客
但他使用的是ubuntu 的,在一些方面和centos还是不同
Hadoop的安装同样可以参考:Hadoop安装教程_伪分布式配置_CentOS6.4/Hadoop2.6.0_厦大数据库实验室博客
Hadoop3.1.3安装教程_单机/伪分布式配置_Hadoop3.1.3/Ubuntu18.04(16.04)_厦大数据库实验室博客e
但是centos版本的太过时了,我同样通过查询学习,整理了一份
使用的软件:
vm15
centos7
hadoop3.3.1
jdk1.8.0
准备工作:1.选定一台作为master,需要在master创建hadoop用户,安装ssh服务端,安装java环境,安装hadoop并且完成配置
2.这里我是选择一主二从,在两个slave上创建hadoop用户,安装SSH服务端,安装java环境
开始:1.网络配置:需改为桥接模式
并且查看三台机子的的MAC地址是否一样,一样的话需要随机生成以至不一样
2.修改主机名:
Centos7通过hostname来查看主机名,而通过hostnamectl set-hostname slave来修改主机名,然后重启即可
3.修改IP映射:
输入以下命令:
sudo vim /etc/hosts
在加如映射关系前先通过ifconfig来查到三个主机的IP地址,查到后建立如下映射关系:
同样的,在两个slave1和slave2里面同样进行配置,配置完成后重新启动slave节点的Linux系统
4.完成后还需要检查是否顺利配置:
在master节点上:
$ ping slave1 -c 3 #只会ping三次 $ ping slave2 -c 3
在两个slave节点上:
$ ping master -c 3
如果出现如下结果,则ping通了
特别注意,每一次更换了网络之后,IP就会发生变化,则需要重新改一下映射关系
5.SSH无密码登录节点:
必须要让Master节点可以SSH无密码登录到各个Slave节点上,首先,Master节点的公匙,如果之前已经生成过公钥,必须要删除原来生成的公钥,重新生成一次:
$ cd ~/.ssh # 如果没有该目录,先执行一次ssh localhost $ rm ./id_rsa* # 删除之前生成的公匙(如果已经存在) $ ssh-keygen -t rsa
为了让Master节点能够无密码SSH登录本机,需要在Master节点上执行如下命令:
$ cat ./id_rsa.pub >> ./authorized_keys
然后将master节点将公钥传输到slave节点:
$ scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/
然后再slave节点上,将SSH公钥加入授权:
$ mkdir ~/.ssh # 如果不存在该文件夹需先创建,若已存在,则忽略 $ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys $ rm ~/id_rsa.pub # 用完以后就可以删掉
然后进行检验:
$ ssh slave1 #slave2同样需要
若成功切换到slave1节点则成功(以上需要对slave1和slave2两个节点进行操作)
6.配置集群和分布式环境:
在配置集群/分布式模式时,需要修改“/usr/local/hadoop/etc/hadoop”目录下的配置文件,这里仅设置正常启动所必须的设置项,包括workers 、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml共5个文件
(1)centos7下修改workers
先进入目录:
$ cd /usr/local/hadoop/etc/hadoop
修改文件workers:
$ gedit workers
将workers文件中的原来的localhost删除,添加上:
slave1 slave2
(如果你有更多的从节点,则需同样加进去)
(2)修改同样目录下的core-site.xml文件:
fs.defaultFS hdfs://Master:9000 hadoop.tmp.dir file:/usr/local/hadoop/tmp Abase for other temporary directories.
(3)修改文件hdfs-site.xml
dfs.namenode.secondary.http-address Master:50090 dfs.replication 2 dfs.namenode.name.dir file:/usr/local/hadoop/tmp/dfs/name dfs.datanode.data.dir file:/usr/local/hadoop/tmp/dfs/data
注意第九行的value值,两个slave则改为2,三个则3
(4)“/usr/local/hadoop/etc/hadoop”目录下有一个mapred-site.xml.template,需要修改文件名称,把它重命名为mapred-site.xml,然后,把mapred-site.xml文件配置成如下内容:
mapreduce.framework.name yarn mapreduce.jobhistory.address Master:10020 mapreduce.jobhistory.webapp.address Master:19888 yarn.app.mapreduce.am.env HADOOP_MAPRED_HOME=/usr/local/hadoop mapreduce.map.env HADOOP_MAPRED_HOME=/usr/local/hadoop mapreduce.reduce.env HADOOP_MAPRED_HOME=/usr/local/hadoop
(5)修改文件yarn-site.xml
yarn.resourcemanager.hostname Master yarn.nodemanager.aux-services mapreduce_shuffle
配置完成以上五个文件后,需要把Master节点上的“/usr/local/hadoop”文件夹复制到各个节点上。如果之前已经运行过伪分布式模式,建议在切换到集群模式之前首先删除之前在伪分布式模式下生成的临时文件。具体来说,需要首先在Master节点上执行如下命令:
$ cd /usr/local $ sudo rm -r ./hadoop/tmp # 删除 Hadoop 临时文件 $ sudo rm -r ./hadoop/logs/* # 删除日志文件 $ tar -zcf ~/hadoop.master.tar.gz ./hadoop # 先压缩再复制 $ cd ~ $ scp ./hadoop.master.tar.gz Slave1:/home/hadoop
然后在两个Slave节点上执行如下命令:
$ sudo rm -r /usr/local/hadoop # 删掉旧的(如果存在) $ sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local $ sudo chown -R hadoop /usr/local/hadoop
同样,如果有其他Slave节点,也要执行将hadoop.master.tar.gz传输到Slave节点以及在Slave节点解压文件的操作。 首次启动Hadoop集群时,需要先在Master节点执行名称节点的格式化(只需要执行这一次,后面再启动Hadoop时,不要再次格式化名称节点),命令如下:
$ hdfs namenode -format
注意格式化只有一次,之后启动不需要再格式化
然后可以启动Hadoop了:
$ start-dfs.sh $ start-yarn.sh $ mr-jobhistory-daemon.sh start historyserver
通过jps来查看是否成功
master节点:
slave节点:
注意:我用的是Hadoop3.3.1版本的,所以如果需要通过web端查看
名称节点和数据节点的状态,则需要再虚拟机网址中输入:
http://master:9870
而不是之前网上很多教程里面的50070
综上Hadoop的全分布式完成安装,安装Java环境以及遇到的一些问题在其他笔记中得以解答,Hadoop的安装同样