Hadoop完全分布式集群的简单安装操作说明

实验环境:本操作说明适合502机房和504机房

首先要运行Vmware WorkStation或Virtual Box,启动master完全分布式,slave1完全分布式,slave2完全分布式三台虚
拟机
,用XShell远程连接master,slave1,slave2,如果连接不成功,参考《502机房主机win7系统与Vmare虚拟机Linux系统的网络连接配置操作说明》完成网络连接配置,三台虚拟机的IP地址如下:

192.168.56.10 master
192.168.56.11 slave1
192.168.56.12 slave2

第1步:先在第一个台虚拟机master执行以下操作,再依次在slave1和slave2重复相同的操作:
1)执行cd /usr/local/  切换到安装目录
2)执行mv hadoop-2.6.0-cdh5.7.0/  hadoop-2.6.0-cdh5.7.0.bak  备份掉之前的Hadoop 或 执行 rm -rf hadoop-2.6.0-cdh5.7.0/ 删除掉之前的Hadoop
3)执行cd 切换到/root目录 再执行tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz  -C /usr/local/  解压缩Hadoop安装包到/usr/local/目录
注意:不要同时三台虚拟机执行解压缩操作,会造成Vmware卡死

第2步:先在第一个台虚拟机master执行以下操作,再依次在slave1和slave2重复相同的操作:
1)执行命令  vi /etc/hostname   将主机名修改为master 修改后执行hostname查看主机名应为master,如果新主机名未生效就reboot重启一下虚拟机即可
2)执行命令  vi /etc/hosts   最后三修行改成   
  192.168.56.10 master
  192.168.56.11 slave1
  192.168.56.12 slave2
3)  执行命令 vi /etc/profile   在profile文件末尾增加JAVA_HOME和HADOOP_HOME环境变量:
#jdk
export JAVA_HOME=/usr/local/java/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
#hadoop
export HADOOP_HOME=/usr/local/hadoop-2.6.0-cdh5.7.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
还必须执行命令  source /etc/profile   使得环境变量设置生效
依次执行 echo $JAVA_HOME 和 echo $HADOOP_HOME 两个命令,测试一下环境变量是否生效

4)执行关闭防火墙命令 systemctl disable firewalld   再执行关闭SeLinux命令 setenforce 0


第3步:设置master、slave1和slave2互相之间的SSH免密登录,先在第一个台虚拟机master执行以下操作,再依次在slave1和slave2重复相同的操作:
1)执行ssh-keygen命令,遇到提示直接回车,需要按多次回车,最后会生成生成一个公钥和私钥的密钥对,出现一个虚线矩形框说明密钥对生成成功
2)执行ssh-copy-id  master命令,遇到提示输入密码root,把公钥发送到要进行SSH免密登录的目标主机master
3)执行ssh-copy-id  slave1命令,遇到提示输入密码root,把公钥发送到要进行SSH免密登录的目标主机slave1
4)执行ssh-copy-id  slave2命令,遇到提示输入密码root,把公钥发送到要进行SSH免密登录的目标主机slave2
5)执行ssh  master,测试能否SSH免密登录master主机,如果能不输入密码自动登录成功,说明SSH免密登录设置成功,登录成功后记得执行exit退出回话
6)执行ssh  master,测试能否SSH免密登录master主机,如果能不输入密码自动登录成功,说明SSH免密登录设置成功,登录成功后记得执行exit退出回话
7)执行ssh  master,测试能否SSH免密登录master主机,如果能不输入密码自动登录成功,说明SSH免密登录设置成功,登录成功后记得执行exit退出回话
注意:本步骤非常重要,一定要确保三台主机互相之间都能够SSH免密登录成功,一共要测试9次!

第4步:重要操作,修改HDFS的配置文件,注意本步骤只需要在master主机执行即可
1)修改hadoop-env.sh文件
执行cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop  切换到Hadoop配置文件所在路径
执行vi hadoop-env.sh  文件末尾增加以下环境变量:
export JAVA_HOME=/usr/local/java/jdk1.8
export HADOOP_CONF_DIR=/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop
执行 source hadoop-env.sh   使得环境变量设置生效

2)修改core-site.xml文件
执行cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop  切换到Hadoop配置文件所在路径
执行 vi core-site.xml
之间间增加配置参数:

   fs.defaultFS
    hdfs://master:8020


  hadoop.tmp.dir
   /root/hdfs/tmp

3)修改hdfs-site.xml文件
执行cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop  切换到Hadoop配置文件所在路径
执行 vi hdfs-site.xml
之间间增加配置参数:

    dfs.replication
    2


   dfs.namenode.name.dir
   file:/root/hdfs/tmp/dfs/name


    dfs.datanode.data.dir
    file:/root/hdfs/tmp/dfs/data


    dfs.namenode.http-address
    master:50070


    dfs.namenode.secondary.http-address
    slave1:50090

4)修改slaves文件
执行vi slaves
删除掉localhost,添加以下两行内容:
slave1
slave2

5)将master主机的三个配置文件hadoop-env.sh,core-site.xml,hdfs-site.xml slaves通过scp远程拷贝到另外两台虚拟机slave1和slave2
先执行scp hadoop-env.sh core-site.xml  hdfs-site.xml slaves root@slave1:/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop 远程拷贝到slave1
再执行scp hadoop-env.sh core-site.xml  hdfs-site.xml slaves root@slave2:/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop 远程拷贝到slave2

6)再依次到slave1和slave2两个虚拟机执行以下相同操作:
执行cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop  切换到Hadoop配置文件所在路径
执行 source hadoop-env.sh   使得环境变量设置生效

第5步:先在第一个台虚拟机master执行以下操作,再依次在slave1和slave2重复相同的操作:
1)创建HDFS存放数据的本地目录
如果/root/hdfs/tmp目录不存在,执行mkdir -p  /root/hdfs/tmp 创建此路径,如果存在可以跳过此步骤
如果/root/hdfs/tmp目录已存在,执行cd /root/hdfs/tmp/ 切换到/root/hdfs/tmp目录
小心执行删除命令 rm -rf /root/hdfs/tmp/*   删除/root/hdfs/tmp/下面的所有文件

第6步:格式化HDFS文件系统
注意:首次启动HDFS集群之前,必须先格式化HDFS文件系统,请注意只需要master主机执行格式化,千万不要在slave1, slave2重复执行格式化命令
只在master主机执行格式化命令 hdfs namenode -format 
格式化成功后会输出提示信息: Storage directory /root/hdfs/tmp/dfs/name has been successfully formatted.

第7步:启动HDFS集群
1)在master主机执行脚本start-dfs.sh启动HDFS集群(在任意一台虚拟机执行启动命令start-dfs.sh都可以,只需要执行一次)

2)在master主机执行java进程查看命令jps
[root@master ~]# jps
3616 Jps
3400 NameNode

3)在slave1主机执行java进程查看命令jps
[root@slave1 ~]# jps
2226 DataNode
2356 Jps
2277 SecondaryNameNode

4)在slave2主机执行java进程查看命令jps
[root@slave2 ~]# jps
2984 Jps
2911 DataNode
说明:三台主机分别显示以上进程,说明HDFS集群启动成功(每台主机上运行的进程名称必须正确,进程编号可以不同)

======================从第9步开始执行资源管理器YARN的配置和启动============================
第9步:修改YARN的配置文件(注意本步骤只需要在master主机执行即可)
1)修改mapred-site.xml配置文件
执行cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop  切换到Hadoop配置文件所在路径
执行cp mapred-site.xml.template mapred-site.xml   复制mapred-site.xml.template模板文件为一个新的配置文件mapred-site.xml
执行 vi mapred-site.xml 
之间增加以下配置参数:

  mapreduce.framework.name
  yarn

2)修改yarn-site.xml配置文件
执行cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop  切换到Hadoop配置文件所在路径
执行vi yarn-site.xml
之间增加以下配置参数:

  yarn.nodemanager.aux-services
  mapreduce_shuffle


  yarn.resourcemanager.address
  master:18040


  yarn.resourcemanager.scheduler.address
  master:18030


  yarn.resourcemanager.resource-tracker.address
  master:18025


  yarn.resourcemanager.admin.address
  master:18141


    yarn.resourcemanager.webapp.address
    master:18088

3)将master主机的两个配置文件mapred-site.xml和yarn-site.xml通过scp远程拷贝到另外两台虚拟机slave1和slave2
先执行scp hadoop-env.sh mapred-site.xml yarn-site.xml root@slave1:/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop 远程拷贝到slave1
再执行scp hadoop-env.sh mapred-site.xml yarn-site.xml root@slave2:/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop 远程拷贝到slave2

第10步:启动资源协调器YARN
1)在master主机执行脚本start-yarn.sh启动YARN(在任意一台虚拟机执行启动命令start-yarn.sh都可以,只需要执行一次)

2)在master主机执行java进程查看命令jps
[root@master ~]# jps
3460 Jps
3205 ResourceManager
2281 NameNode

3)在slave1主机执行java进程查看命令jps
[root@slave1 ~]# jps
2487 NodeManager
2168 DataNode
2218 SecondaryNameNode
2603 Jps

4)在slave2主机执行java进程查看命令jps
[root@slave2 ~]# jps
2774 DataNode
2922 NodeManager
3038 Jps
说明:三台主机分别显示以上进程,说明说明HDFS和YARN都启动成功(每台主机上的进程名称必须正确,进程编号可以不同)

5)打开YARN的自带Web配置页面
在win7下chorme浏览器打开http://192.168.56.10:8088/

 

第11步:执行MapReduce词频统计实例程序(在任意一台虚拟机执行本步骤都可以)

1)上传要执行统计的文本文件
执行命令 hadoop fs -mkdir /input 在HDFS创建一个/input目录
执行命令  hadoop fs -put /root/word.txt /input 上传本地Linux文件系统的一个文本文件word.txt 到HDFS文件系统的/input目录
执行命令hadoop fs -ls /input 和  hadoop fs -cat /input/word.txt查看已上传到HDFS的文本文件word.txt

2)执行词频统计程序wordcount

切换到MapReduce实例程序所在目录 cd /usr/local/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce

执行命令hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount  /input/word.txt /output

请注意输出目录/output不能已存在,执行上面命令后会自动创建/output目录

3)查看词频统计程序wordcount的执行结果

先执行命令 hadoop fs -ls /output  查看HDFS的/output目录的内容,应该出现以下内容:
Found 2 items
-rw-r--r--   1 root supergroup          0 2020-09-25 23:32 /output/_SUCCESS
-rw-r--r--   1 root supergroup       1306 2020-09-25 23:32 /output/part-r-00000

wordcount运行结果会输出到文件output/part-r-00000中,执行命令:

hadoop fs -cat /output/part-r-00000  查看词频统计程序wordcount的执行结果,输出结果类似以下内容:

details    1
distribution    2
eligible    1
encryption    3
exception    1

则说明MapReduce词频统计程序wordcount运行正确

你可能感兴趣的:(Hadoop完全分布式集群的简单安装操作说明)