集群规划
三台服务器 192.168.92.148 192.168.92.150 192.168.92.152
分别将hostname改为 hadoop148 hadoop150 hadoop152
| hadoop148 | hadoop150 | hadoop152 |
HDFS
| NameNode DataNode |
DataNode | SecondaryNameNode DataNode |
YARN |
NodeManager | ResourceManager NodeManager |
NodeManager |
首先配置ssh
进入~/.ssh 目录
在三台机器上分别执行 ssh-keygen -t rsa 连续三个回车 生成公钥和私钥
将秘钥分发到另外两台机器 ssh-copy-id 目标hostname 三台都要执行
ssh成功后测试ssh登录不需要密码即成功
编写脚本封装rsynx 脚本内容如下 脚本需要依赖rsync yum install rsync 安装
#!/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=148; host<=152; host++)); do
echo ------------------- hadoop$host --------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
脚本放在 /usr/local/bin 下 脚本需要赋予执行权限 chmod 777 xsync 分发使用方式 xsync 文件夹路径
hadoop 和 jdk 安装与环境变量配置见 hadoop 学习(一) 安装hadoop环境
编辑hadoop配置文件
hadoop-env.sh yarn-env.sh mapred-env.sh 三个配置文件中的java_home全都修改成绝对路径
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hadoop148:9000</value>
</property>
<!-- 文件存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.7/data/tmp</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<!-- 指定副本数 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop152:50090</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop150</value>
</property>
<!-- 开启日志聚集 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop148:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop148:19888</value>
</property>
</configuration>
将配置好的hadoop分发到另外两台服务器上 xsync /opt/module/hadoop-2.7.7/
启动集群
编辑slaves文件
vim /opt/module/hadoop-2.7.7/etc/hadoop/slaves
加入三台服务器的hostname 不允许有多余的空格和回车
hadoop148
hadoop150
hadoop152
xsync /opt/module/hadoop-2.7.7/etc/hadoop/slaves 将文件分发到其他服务器
启动集群
(1)如果集群是第一次启动,需要格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)
hadoop namenode -format
(2)启动HDFS
[root@hadoop148 hadoop-2.7.7]# sbin/start-dfs.sh
[root@hadoop148 hadoop-2.7.7]# jps
4166 NameNode
4482 Jps
4263 DataNode
[root@hadoop150 hadoop-2.7.7]# jps
3218 DataNode
3288 Jps
[root@hadoop152 hadoop-2.7.7]# jps
3221 DataNode
3283 SecondaryNameNode
3364 Jps
(3)启动YARN
[root@hadoop150 hadoop-2.7.7]# sbin/start-yarn.sh
注意:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN。
在yarn-site.xml指定了resourceManager的位置
启动后查看各节点情况
查看SecondaryNameNode的 web页面 192.168.92.152:50090
至此集群搭建完毕
各个模块分开启动/停止(配置ssh是前提)
(1)整体启动/停止HDFS(namenode的机器上操作)
start-dfs.sh / stop-dfs.sh
(2)整体启动/停止YARN(resourceManager的机器上操作)
start-yarn.sh / stop-yarn.sh