前言

准备&安装

NodeManager 与 DataNode 在同一台机器上

集群分布

node1node2node3node4
zookeeperzookeeperzookeeper
NameNodeSecondaryNameNode
DataNodeDataNodeDataNode
ZooKeeperFailoverControllerZooKeeperFailoverController
JournalNodeJournalNodeJournalNode
ResourceManagerResourceManager
NodeManagerNodeManagerNodeManager

配置

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

修改后传给其他几台机器

本专栏为大数据学习专栏,如有问题还望指出,共同学习!

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐