该集群有102、103、104三台机器。
hadoop102hadoop103hadoop104HDFSNameNode、DataNodeDataNodeSecondaryNameNode、DataNodeYARNNodeManagerResourceManager、NodeManagerNodeManager先创建文件,放在bin目录下
[root@hadoop102 ~]# mkdir bin [root@hadoop102 bin]# touch xsync文件如下
[root@hadoop102 bin]# vim xsync #!/bin/bash #1 获取输入参数个数,如果没有参数,直接退出 pcount=$# if((pcount==0)); then echo no args; exit; fi #2 获取文件名称 p1=$1 fname=`basename $p1` echo fname=$fname #3 获取上级目录到绝对路径 pdir=`cd -P $(dirname $p1); pwd` echo pdir=$pdir #4 获取当前用户名称 user=`whoami` #5 循环 for((host=103; host<105; host++)); do echo ------------------- cdh$host -------------- rsync -rvl $pdir/$fname $user@cdh$host:$pdir done给权限
[root@hadoop102 bin]# chmod 777 xsync首先每个机器的名称和ip匹配,进入/etc/hosts输入ip和服务名称。每台机器都要写。
[root@hadoop102 ~]# vim /etc/hosts 192.168.133.131 hadoop102 192.168.133.132 hadoop103 192.168.133.133 hadoop104先配置hadoop102,进入hadoop
[root@hadoop102 /]# cd /opt/module/hadoop-2.8.2/ [root@hadoop102 hadoop-2.8.2]# cd etc/hadoop/修改hadoop-env.sh,改JAVA_HOME位置,先获取位置
[root@hadoop102 ~]# echo $JAVA_HOME /opt/module/jdk1.8.0_261再修改
[root@hadoop102 hadoop]# vim hadoop-env.sh export JAVA_HOME=/opt/module/jdk1.8.0_261接着修改core-site.xml文件
[root@hadoop102 hadoop]# vim core-site.xml添加
<configuration> <!--指定HDFS中NameNode地址--> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop102:9000</value> </property> <!--指定Hadoop运行时产生文件的存储目录--> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.8.2/data/tmp</value> </property> </configuration>修改HDFS配置文件hdfs-site.xml
[root@hadoop102 hadoop]# vim hdfs-site.xml <configuration> <!--指定Hadoop辅助名称节点主机配置--> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop104:50090</value> </property> </configuration>修改yarn-env.sh文件
[root@hadoop102 hadoop]# vim yarn-env.sh export JAVA_HOME=/opt/module/jdk1.8.0_261修改yarn-site.xml
[root@hadoop102 hadoop]# vim yarn-site.xml <configuration> <!--Reducer获取数据的方式--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!--指定yarn的ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop103</value> </property> </configuration>修改mapred-env.sh文件
[root@hadoop102 hadoop]# vim mapred-env.sh export JAVA_HOME=/opt/module/jdk1.8.0_261修改mapred-site.xml,先把mapred-site.xml.template复制到mapred-site.xml再修改
[root@hadoop102 hadoop]# cp mapred-site.xml.template mapred-site.xml [root@hadoop102 hadoop]# vim mapred-site.xml <configuration> <!--指定MR运行在yarn上--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>将上述配置同步到103、104,xsync是前面编写的脚本。
[root@hadoop102 hadoop]# cd .. [root@hadoop102 etc]# xsync hadoop/先格式化,删除文件,102\103\104里面都要删(如果已经启动了,要先停止节点再删除文件)
[root@hadoop102 hadoop-2.8.2]# rm -rf data/ logs/ [root@hadoop102 hadoop-2.8.2]# bin/hdfs namenode -format102上启动
[root@hadoop102 hadoop-2.8.2]# sbin/hadoop-daemon.sh start namenod [root@hadoop102 hadoop-2.8.2]# sbin/hadoop-daemon.sh start datanode103上启动
[root@hadoop102 hadoop-2.8.2]# sbin/hadoop-daemon.sh start datanode104上启动
[root@hadoop102 hadoop-2.8.2]# sbin/hadoop-daemon.sh start datanode然后本机浏览器上访问http://hadoop102:50070成功。
102上有NameNode,所以它需要访问其他机器,要配置免密登录。
在102进入ssh文件
[root@hadoop102 ~]# ls -all [root@hadoop102 ~]# cd .ssh/获取秘钥
[root@hadoop102 .ssh]# ssh-keygen -t rsa回车后,三次回车
这时.ssh/下面多了两个文件,id_rsa存放私钥,id_rsa.pub存放公钥,known_hosts存放授权过的无密码登录服务器公钥。
[root@hadoop102 .ssh]# ll 总用量 12 -rw-------. 1 root root 1679 10月 22 08:57 id_rsa -rw-r--r--. 1 root root 396 10月 22 08:57 id_rsa.pub -rw-r--r--. 1 root root 374 10月 21 17:42 known_hosts拷贝至103
[root@hadoop102 .ssh]# ssh-copy-id hadoop103回车后第一次需要输入103的密码
此时,发现103的.ssh/下多了文件authorized_keys,里面存放的是102的公钥
[root@hadoop103 .ssh]# ll 总用量 4 -rw-------. 1 root root 396 10月 22 09:02 authorized_keys同样的做法拷贝到102(自身也需要拷贝)、104 。
现在102访问103和104就不需要密码了,实现免密通信。
此外,103上面有ResourceManager,也需要配置ssh。
进入102,修改slaves
[root@hadoop103 .ssh]# cd /opt/module/hadoop-2.8.2/etc/hadoop/ [root@hadoop103 hadoop]# vim slaves hadoop102 hadoop103 hadoop104删除文件里其他内容,添加机器名称(这里不能有多余的空格)。
先查看运行的进程
[root@hadoop102 hadoop-2.8.2]# jps 56437 NameNode 67051 Jps 56543 DataNode把DataNode、NameNode退出
[root@hadoop102 hadoop-2.8.2]# sbin/hadoop-daemon.sh stop datanode [root@hadoop102 hadoop-2.8.2]# sbin/hadoop-daemon.sh stop namenode进入103、104,退出DataNode
[root@hadoop102 hadoop-2.8.2]# sbin/hadoop-daemon.sh stop datanode这样所有的节点就都正常退出了。
在102群起
[root@hadoop102 hadoop-2.8.2]# sbin/start-dfs.sh在103上启动yarn,在另外两个上启动会直接挂,因为ResourceManager配在103上。
[root@hadoop103 hadoop-2.8.2]# sbin/start-yarn.sh传文件测试,将README.txt上传到/目录下
[root@hadoop102 hadoop-2.8.2]# bin/hdfs dfs -put README.txt /访问http://hadoop102:50070/ 这里可以看到上传的文件,
这里数据其实是存储在Linux上的,在下面的目录blk_1073741825文件
[root@hadoop102 subdir0]# pwd /opt/module/hadoop-2.8.2/data/tmp/dfs/data/current/BP-1924141108-192.168.133.131-1603273870979/current/finalized/subdir0/subdir0