前言
- 安装zookeeper请参考Linux - zookeeper集群搭建
- zookeeper基本使用请参考zookeeper命令与API
- Hadoop理论学习请参考Hadoop理论
- HDFS理论学习请参考HDFS理论
- 安装HDFS请参考Linux - HDFS部署
- HDFS基本使用请参考HDFS命令与API
- MapReduce&Yarn理论学习请参考MapReduce&Yarn理论
准备&安装
NodeManager 与 DataNode 在同一台机器上
集群分布
node1 | node2 | node3 | node4 |
---|---|---|---|
zookeeper | zookeeper | zookeeper | |
NameNode | SecondaryNameNode | ||
DataNode | DataNode | DataNode | |
ZooKeeperFailoverController | ZooKeeperFailoverController | ||
JournalNode | JournalNode | JournalNode | |
ResourceManager | ResourceManager | ||
NodeManager | NodeManager | NodeManager |
配置
node1命令行
cd /usr/local/hadoop/hadoop-3.2.3/etc/hadoop/ # 进入Hadoop配置文件目录
vim mapred-site.xml # 指定MapReduce作业运行的框架,具体查看下面需要添加的配置
vim yarn-site.xml # 配置yarn,具体查看下面需要添加的配置
编辑mapred-site.xml文件,进入文件查找到标签,在标签中进行添加,同时可参考官网的配置文件
<configuration>
<!-- 指定MapReduce运行框架 本地/MRv1/Yarn - local/classic/yarn -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
编辑yarn-site.xml文件,进入文件查找到标签,在标签中进行添加,同时可参考官网的配置文件
<configuration>
<!-- 让yarn的容器支持MapReduce的洗牌,开启shuffle服务 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 启用ResourceManager的高可用 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定Zookeeper集群的各个节点地址和端口号 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>node2:2181,node3:2181,node4:2181</value>
</property>
<!-- 标识集群,以确保 ResourceManager 不会接管另一个集群的活动。 -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster1</value>
</property>
<!-- RM HA的两个resourcemanager的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 指定rm1的ReourceManager进程所在的主机名称 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>node3</value>
</property>
<!-- 指定rm2的ReourceManager进程所在的主机名称 -->
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>node4</value>
</property>
<!-- rm1 HTTP访问地址-->
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>node3:8088</value>
</property>
<!-- rm2 HTTP访问地址-->
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>node4:8088</value>
</property>
</configuration>
node1命令行
scp mapred-site.xml yarn-site.xml node2:$PWD/ # 将进行修改的两个文件分发到其他三台机子上
scp mapred-site.xml yarn-site.xml node3:$PWD/
scp mapred-site.xml yarn-site.xml node4:$PWD/
node3命令行
start-yarn.sh # 启动yarn,可以将node3,node4的resourcemanager启动和三台nodemanager启动
jps # 查看进程
验证
浏览器打开 http://node3:8088,查看node3状态是active还是standby
将active的resourcemanager关闭,测试另一台会不会顶上去 - 高可用
yarn --daemon stop resourcemanager # 可以使用此命令单独关闭某一台resourcemanager
脚本 - 免费 已设置0积分/C币
自动开启和关闭所有hdfs与yarn组件的脚本:自动开启和关闭所有hdfs与yarn组件的脚本
根据自己的ssh端口进行修改脚本中的端口,默认22的可以将-p22022删除,给脚本添加权限,记得将目录添加到环境变量中
异常
没有定义YARN_RESOURCEMANAGER_USER和YARN_NODEMANAGER_USER
ERROR: Attempting to operate on yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
Starting nodemanagers
ERROR: Attempting to operate on yarn nodemanager as root
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.
解决:
cd /usr/local/hadoop/hadoop-3.2.3/sbin # 进入文件夹
vim start-dfs.sh
vim stop-dfs.sh
vim start-yarn.sh
vim stop-yarn.sh
为上面的四个文件添加相同配置,在文件的顶部添加
YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root
修改后传给其他几台机器
本专栏为大数据学习专栏,如有问题还望指出,共同学习!