集群配置与搭建--Hadoop学习笔记

it2025-11-18  28

集群配置

该集群有102、103、104三台机器。

hadoop102hadoop103hadoop104HDFSNameNode、DataNodeDataNodeSecondaryNameNode、DataNodeYARNNodeManagerResourceManager、NodeManagerNodeManager

xsync脚本

先创建文件,放在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

配置102

首先每个机器的名称和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/

配置HDFS

修改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

修改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>

配置MapReduce

修改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/

启动HDFS

先格式化,删除文件,102\103\104里面都要删(如果已经启动了,要先停止节点再删除文件)

[root@hadoop102 hadoop-2.8.2]# rm -rf data/ logs/ [root@hadoop102 hadoop-2.8.2]# bin/hdfs namenode -format

102上启动

[root@hadoop102 hadoop-2.8.2]# sbin/hadoop-daemon.sh start namenod [root@hadoop102 hadoop-2.8.2]# sbin/hadoop-daemon.sh start datanode

103上启动

[root@hadoop102 hadoop-2.8.2]# sbin/hadoop-daemon.sh start datanode

104上启动

[root@hadoop102 hadoop-2.8.2]# sbin/hadoop-daemon.sh start datanode

然后本机浏览器上访问http://hadoop102:50070成功。

配置ssh

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。

群起集群

配置slaves

进入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

这样所有的节点就都正常退出了。

启动HDFS

在102群起

[root@hadoop102 hadoop-2.8.2]# sbin/start-dfs.sh

启动yarn

在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

最新回复(0)