集群环境:centOs6.8:hadoop102、hadoop103、hadoop104jdk版本:jdk1.8.0_144hadoop版本:Hadoop2.7.2首先准备三个客户端(hadoop102、hadoop103、hadoop104),关闭防火墙,修改staticip和ip地址映射配置集群编写集群分发脚本创建远程同步脚本xsync放在当前用户下新建的bin目录下并在PATH中配置,使脚本在任意目录下都可以执行实现[kocdaniel@hadoop102~]$mkdirbin[kocdaniel@hadoop102~]$cdbin/[kocdaniel@hadoop102bin]$vimxsync在文件#!/bin/bash#1中写入如下脚本代码获取输入数参数,如果没有参数,直接退出pcount=$#if((pcount==0));thenchonoargs;exit;fi#2获取文件名p1=$1fname=`basename$p1`echofname=$fname#3获取上级目录到绝对路径–P指向实际物理地址,防止软链接pdir=`cd-P$(目录名$p1);pwd`echopdir=$pdir#4获取当前用户名user=`whoami`#5loopfor((host=103;host<105;host++));做echo------------------hadoop$host------------rsync-rvl$pdir/$fname$user@hadoop$host:$pdirdone修改脚本xsync有执行权限,调用脚本,复制脚本到节点103和104[kocdaniel@hadoop102bin]$chmod777xsync[kocdaniel@hadoop102bin]$xsync/home/atguigu/bin集群配置集群部署规划hadoop102hadoop103hadoop104HDFSNameNodeDataNodeDataNodeSecondaryNameNodeDataNodeYARNNodeManagerResourceManagerNodeManagerNodeManager由于电脑配置有限,只能使用三个虚拟机。在工作环境中,根据需要规划集群配置。切换到hadoop安装目录/etc/hadoop/configurationcore-site.xml[kocdaniel@hadoop102hadoop]$vimcore-site.xml#在文件中写入如下内容fs.defaultFShdfs://hadoop102:9000hadoop.tmp.dir/opt/module/hadoop-2.7.2/data/tmpHDFS配置文件配置hadoop-env.sh[kocdaniel@hadoop102hadoop]$vimhadoop-env.shexportJAVA_HOME=/opt/module/jdk1.8.0_144注意:我们已经在/etc/profile文件中配置了JAVA_HOME。这里为什么要配置JAVA_HOME呢?答:因为Hadoop是作为daemon进程运行的(daemon进程是后台运行的进程,不受任何终端控制--来自百度百科)),是因为它在后台运行,不接受任何终端控制,所以它无法读取我们配置的环境变量,所以需要在这里单独配置。配置hdfs-site.xml[kocdaniel@hadoop102hadoop]$vimhdfs-site.xml#写入如下配置dfs.replication3dfs.namenode。secondary.http-addresshadoop104:50090YARN配置文件配置yarn-env.sh[kocdaniel@hadoop102hadoop]$vimyarn-env.shexportJAVA_HOME=/opt/module/jdk1.8.0_144Configureyarn-site.xml[kocdaniel@hadoop102hadoop]$viyarn-site.xml#添加如下配置yarn.nodemanager.aux-servicesmapreduce_shuffleyarn.resourcemanager.hostnamehadoop103MapReduce配置文件配置mapred-env.sh[kocdaniel@hadoop102hadoop]$vimmapred-env.shexportJAVA_HOME=/opt/module/jdk1.8.0_144configuremapred-site.xml#如果是第一次配置,需要先配置mapred-site。xmlRename.templatetomapred-site.xml[kocdaniel@hadoop102hadoop]$cpmapred-site.xml.templatemapred-site.xml[kocdaniel@hadoop102hadoop]$vimmapred-site.xml#添加如下配置filemapreduce.framework.nameyarn将配置的文件与集群分发脚本同步进入hadoop103和hadoop104节点[kocdaniel@hadoop102hadoop]$xsync/opt/module/hadoop-2.7.2/同步完成后最好查看一下同步结果,以免出错。如果是第一次启动,需要格式化namenode,否则跳过这一步[kocdaniel@hadoop102hadoop-2.7.2]$hadoopnamenode-format格式化需要注意的问题:只有第一次启动需要格式化,不要以后一定要格式化,否则namenode和datanode的clusterid不一致,导致datanode启动失败。正确格式化姿势:在进行第一次格式化时,会在hadoop安装目录下生成一个data文件夹,里面会生成namenode信息。启动namenode和datanode后,同目录下也会生成logs文件夹,所以格式化前需要删除这两个文件夹,然后格式化,最后启动namenode和datanode在hadoop102上启动namenode[kocdaniel@hadoop102hadoop-2.7.2]$hadoop-daemon.shstartnamenode[kocdaniel@hadoop102hadoop-2.7.2]$jps3461NameNode分别在hadoop102、hadoop103和hadoop104上启动DataNode[kocdaniel@hadoop102hadoop-2.7.2]$hadoop-daemon.shstartdatanode[kocdaniel@hadoop102hadoop-2.7.2]$jps3461NameNode3608Jps3561DataNode[kocdaniel@hadoop103hadoop-2.7.2]$hadoop-daemon.sh启动数据节点[kocdaniel@hadoop103hadoop-2.7.2]$jps3190DataNode3279Jps[kocdaniel@hadoop104hadoop-2.7.2]$hadoop-daemon.shstartdatanode[kocdaniel@hadoop104hadoop-2.7.2]$jps3237jps3163DataNode访问hadoop102:50070查看结果,但是上面单有问题-点启动:每一次所有节点都被一个一个地启动。如果节点数量增加到1000怎么办?配置ssh免密登录配置sshssh另一个节点的ip可以切换到另一台机器,但是要输入密码免密ssh配置免密登录原理在配置namenode的主机hadoop102上生成私钥和公钥切换目录到/home/username/.ssh/[kocdaniel@hadoop102.ssh]$ssh-keygen-trsa-然后按(三个回车),两个文件id_rsa(私钥),id_rsa.pub(公钥)-复制公钥到目标机即可免密码登录```shell[kocdaniel@hadoop102.ssh]$ssh-copy-idhadoop103[kocdaniel@hadoop102.ssh]$ssh-copy-idhadoop104#注意:ssh访问本身也需要输入密码,所以我们需要将公钥复制到102[kocdaniel@hadoop102.ssh]$ssh-copy-idhadoop102```同理在配置了resourcemanager的主机hadoop103上执行同样的操作,即可启动集群。启动集群并配置slaves切换目录到:hadoop安装目录/etc/hadoop/目录下的slaves文件中添加如下内容[kocdaniel@hadoop102hadoop]$vimslaves#注意最后不要有空格,文件中没有空行hadoop102hadoop103hadoop104同步所有节点的配置文件[kocdaniel@hadoop102hadoop]$xsyncslaves同样,如果是第一次启动集群,需要格式化并启动HDFS[kocdaniel@hadoop102hadoop-2.7.2]$sbin/start-dfs.sh#查看启动结果,与集群规划一致(在配置文件中)[atguigu@hadoop102hadoop-2.7.2]$jps4166NameNode4482Jps4263DataNode[atguigu@hadoop103hadoop-2.7.2]$jps3218DataNode3288Jps[atguigu@hadoop104hadoop-2.7.2]$jps3221DataNode3283SecondaryJNameps:NoteY3ARN4JNameNode3如果ResourceManger不是同一台机器,YARN不能在NameNode上启动,YARN应该在所在的机器上启动ResourceManager位于[kocdaniel@hadoop103hadoop-2.7.2]$sbin/start-yarn.shWeb端查看相关信息