如何部署Apache Hadoop YARN集群?

Apache-Hadoop

1 基础知识

1.1 YARN的介绍

– YARN英文全称为“Yet Another Resource Negotiator”,中文翻译为“另一种资源协调者”
– YARN为Hadoop分布式处理框架提供资源管理和作业调度程序
– YARN负责将系统资源分配给集群中的各种应用程序并调度程序在不同的集群节点中执行
– YARN提供常规应用运行时的环境(提供应用所需的部署、运行和所需的基本要素)
– YARN是Hadoop的核心组件之一

1.2 YARN的作用

– YARN工作于HDFS与应用程序的处理引擎(即HBase、Hive、Drill、Imala等)之间
– YARN将中央资源管理器、容器、应用程序协调器和节点级别的代理结合(监视集群节点的处理操作)
– YARN可根据需求为应用程序动态分配资源(与MapReduce的静态分配比较,提高了资源利用率和应用性能)
– YARN资源管理器和隔离有助于最大程度地利用集群资源
注:笔者理解是,如果将整个集群理解为一部服务器,YARN相当于运行于服务器的操作系统

1.3 YARN的功能

– YARN支持多种调度方法,所有方法均基于队列格式提交并处理作业
– YARN默认FIFO调度程序按照先进先出的顺序运行程序
– YARN支持通过可插拔工具Fair Scheduler支持加权调度(适用于多用户公平共享集群资源的环境)
– YARN支持通过可插拔工具Capacity Scheduler支持根据单独的服务级别协议调度
– YARN支持预留集群资源(可通过限制单用户预留资源的量,以策略自动决绝超出限制的请求来确保作业平稳运行)
– YARN支持联合身份验证,单YARN支持节点数量从10000增加到数万或更多(路由层连接各子集群,每子集群自有资源管理器)

1.4 YARN的优势


– YARN处于HDFS与MapReduce中间,使得Hadoop环境更适合实时处理和无需等待的批处理作业程序
– YARN使得MapReduce称为Hadoop应用程序的引擎之一(原本是唯一)
– YARN使Apache的HBase、Hive、Drill、Imala和prestor及其他SQL-on-Hadoop查询引擎能与Hadoop集成
– YARN相比MapReduce更高的可伸缩性、资源利用率、高性能和性能改进
– YARN将Hadoop开放给MapReduce以外的其他类型分布式应用程序使用
– YARN支持多种处理方法(例如图形处理、交互处理、流处理和批处理)
– YARN配合Spark后使得Hadoop可运行流处理程序(例如Apache Flink或Apache Storm)
– YARN配合Spark代替MapReduce可提高批处理程序(提取、转换和加载作业)的性能

1.5 YARN的架构


如上图所示,YARN分为两部分
– ResourceManager,中文翻译为资源管理器
– NodeManager,中文翻译为节点管理器

1.5.1 资源管理器(管理层)

即ResourceManager的中文翻译,资源管理器的功能如下,
– 资源管理器负责所有应用程序之间的资源分配和管理
— 资源管理器是集群资源的仲裁者(裁定竞争的应用程序谁可优先得到可用的资源)
— 优化集群资源的利用率
– 资源管理器接收并转发处理请求到相应的节点管理器
资源管理器具有两个主要组件,
– 调度程序(Scheduler)
— 调度程序根据需分配的应用程序和可用资源执行资源调度(受到容量和队列的约束)
— 调度程序只是单纯的调度程序,不负责执行其他任务(例如监视或跟踪应用的状态)
— 调度程序不负责重新启动失败的任务(包括由应用程序或硬件引起的故障)
— 调度程序支持策略插件,使用不同的策略来分配应用程序所需的集群资源(可选Capacity Scheduler和Fair Scheduler)
– 应用程序管理器(ApplicationsManager)
— 应用程序管理器接收作业的提交并与资源管理器协商出ApplicationMaster的第一个容器(Container)
— 应用程序管理器管理集群中运行的ApplicationMaster并提供服务
— 应用程序管理器在任务失败时重新启动ApplicationMaster容器的任务

1.5.2 节点管理器(处理层)

即NodeManager的中文翻译,节点管理器的功能如下,
– 节点管理器管理集群中的所有节点并管理特定节点的应用程序和工作流
– 节点管理器向资源管理注册并发送带有节点运行状态的心跳(保持信息更新)
– 节点管理器主要任务是管理资源管理器分配到单个节点的应用程序容器(创建、启动、释放)
— 节点管理器根据资源管理器的指令释放容器
— 节点管理器负责创建容器进程并根据ApplicationMaster的要求启动容器
– 节点管理器监视节点的资源使用情况(内存、CPU)并执行日志管理

1.5.3 应用程序主控(处理层)

即ApplicationMaster的中文翻译,应用程序主控的功能如下,
– 应用程序是提交给框架的单个作业,每个应用程序都有唯一关联的应用程序主控(框架实体)
– 应用程序主控在集群中协调应用程序执行并处理故障的过程
– 应用程序管理器任务是与资源管理器进行资源协商并跟踪状态和监视单个应用程序的进度
– 应用程序主控通过发送包含应用程序需要运行的所有容器启动上下文(CLC)向节点管理器请求容器
– 启用应用程序后,应用程序主控会不定时将运行状况报告发送给资源管理器

1.5.4 容器(处理层)

即Container的中文翻译,容器的功能如下,
– 容器是单个节点上的物理资源(例如内存、CPU内核和磁盘)的集合
– 容器有容器启动上下文(CLC调用)
– 容器记录包含诸如环境变量、安全性令牌和依赖项等信息记录

1.6 YARN的应用程序工作流程


– step1,客户端提交申请到资源管理器
– step2,资源管理器分配一个容器来启动应用程序管理器
– step3,应用程序管理器向资源管理器注册自己
– step4,应用程序管理器从资源管理器协商容器
– step5,应用程序管理器通知节点管理器启动容器
– step6,应用程序代码在容器中执行
– step7,客户端联系资源管理器、应用程序管理器监视应用程序的状态
– step8,应用执行完毕,应用程序管理器向资源管理器注销

2 最佳实践

2.1 部署环境信息

2.1.1 角色Hadoop HDFS的基本信息

hostname = hd0[1-5].cmdschool.org
ipaddress = 10.168.0.10[1-5] OS = centOS 7.6 x86_64

详细的角色分布如下,
Apache Hadoop HDFS NameNode(hdfs-nn) = hd01.cmdschool.org
Apache Hadoop HDFS SecondaryNameNode(hdfs-snn) = hd02.cmdschool.org
Apache Hadoop HDFS DataNode(hdfs-snn) = hd0[3-5].cmdschool.org
注:
– 如果你尚未配置HDFS,请参阅https://www.cmdschool.org/archives/5579
– 本章HDFS实例由“hadoop-2.6.5”提供

3.1.2 角色Apache Hadoop YARN的基本信息

hostname = hd0[1-5].cmdschool.org
ipaddress = 10.168.0.10[1-5] OS = centOS 7.6 x86_64

详细的角色分布如下,
Apache Hadoop YARN ResourceManager(yarn-rm) = hd01.cmdschool.org
Apache Hadoop YARN NodeManager(yarn-nm) = hd0[1-5].cmdschool.org

2.2 Hadoop YARN的基本配置

2.2.1 配置运行用户

In hd0[1-5],

groupadd yarn
useradd -g yarn -G hadoop -d /var/lib/hadoop-yarn/ yarn

2.2.2 允许yarn以hdfs身份执行rsync

In hd0[1-5],

visudo

在以下第一行加入第二行配置,

root    ALL=(ALL)       ALL
yarn    ALL=(hdfs)      NOPASSWD: /usr/bin/rsync

注:以上允许yarn用户以无密码的方式调用hdfs执行脚本同步

2.2.3 修改rsync的同步脚本

In hd0[1-5],

vim /usr/hadoop-2.6.5/sbin/yarn-daemon.sh

注释原来的行,然后如第二行的配置,

# rsync -a -e ssh --delete --exclude=.svn --exclude='logs/*' --exclude='contrib/hod/logs/*' $YARN_MASTER/ "$HADOOP_YARN_HOME"
sudo -u hdfs rsync -a -e ssh --delete --exclude=.svn --exclude='logs/*' --exclude='contrib/hod/logs/*' $YARN_MASTER/ "$HADOOP_YARN_HOME"

注:以上yarn脚本调用hdfs的身份完成配置的同步

2.2.4 配置环境变量

In hd0[1-5],

vim /etc/profile.d/hadoop.sh

继之前的配置加入如下内容,

export YARN_CONF_DIR=/etc/hadoop
export YARN_LOG_DIR=/var/log/hadoop-yarn
export YARN_MASTER=hd01:${HADOOP_YARN_HOME}
export YARN_PID_DIR=/var/run/hadoop-yarn
export YARN_IDENT_STRING=$USER
export YARN_NICENESS=0

以上的配置解析如下,请重点理解第四行,
– 第一行声明YARN配置文件的位置
– 第二行声明YARN日志文件位置
– 第三行声明非主服务器使用rsync从hd01的“/usr/hadoop-2.6.5”目录同步配置(此配置是重点)
– 第四行声明YARN PDI文件的位置
– 第五行声明运行的用户(“$USER即指当前用户”)
– 第六行声明进程的优先级别,默认值“0”
如果使用如下命令查看整个配置文件的定义,

cat /etc/profile.d/hadoop.sh

可见如下配置,

export HADOOP_HOME=/usr/hadoop-2.6.5
export HADOOP_PREFIX=${HADOOP_HOME}
export HADOOP_YARN_HOME=${HADOOP_HOME}
export PATH=${HADOOP_HOME}/bin:$PATH
export PATH=${HADOOP_HOME}/sbin:$PATH
export HADOOP_CONF_DIR=/etc/hadoop
export HADOOP_LOG_DIR=/var/log/hadoop-hdfs
export HADOOP_PID_DIR=/var/run/hadoop-hdfs
export HADOOP_MASTER=hd01:${HADOOP_HOME}
export HADOOP_IDENT_STRING=$USER
export HADOOP_NICENESS=0

export YARN_CONF_DIR=/etc/hadoop
export YARN_LOG_DIR=/var/log/hadoop-yarn
export YARN_MASTER=hd01:${HADOOP_YARN_HOME}
export YARN_PID_DIR=/var/run/hadoop-yarn
export YARN_IDENT_STRING=$USER
export YARN_NICENESS=0

根据声明的目录配置权限,

mkdir -p /var/log/hadoop-yarn
chown yarn:yarn /var/log/hadoop-yarn
chmod 775 /var/log/hadoop-yarn
mkdir -p /var/run/hadoop-yarn
chown yarn:yarn /var/run/hadoop-yarn
chmod 775 /var/run/hadoop-yarn

配置完成后,请使用如下命令重新导入环境变量,

source /etc/profile.d/hadoop.sh

2.2.4 确认YARN部署

In hd0[1-5],

yarn version

可见如下输出,

Hadoop 2.6.5
Subversion https://github.com/apache/hadoop.git -r e8c9fe0b4c252caf2ebf1464220599650f119997
Compiled by sjlee on 2016-10-02T23:43Z
Compiled with protoc 2.5.0
From source with checksum f05c9fa095a395faa9db9f7ba5d754
This command was run using /usr/hadoop-2.6.5/share/hadoop/common/hadoop-common-2.6.5.jar

2.3 配置资源管理器节点(主节点)

In hd01,

2.3.1 定义mapred-site.xml配置文件

cp /etc/hadoop/mapred-site.xml.template /etc/hadoop/mapred-site.xml
vim /etc/hadoop/mapred-site.xml

修改如下配置,

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

注:配置“mapreduce.framework.name”属性值为“mapreduce.framework.name”表示使用yarn运行mapreduce程序

2.3.2 定义yarn-site.xml配置文件

cp /etc/hadoop/yarn-site.xml /etc/hadoop/yarn-site.xml.default
vim /etc/hadoop/yarn-site.xml

修改如下配置,

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hd01</value>
    </property>
    <property>
        <name>yarn.nodemanager.local-dirs</name>
        <value>/data/yarn/nm</value>
    </property>
    <property>
        <name>yarn.nodemanager.log-dirs</name>
        <value>/data/yarn/container-logs</value>
    </property>
</configuration>

注:
– 属性“yarn.resourcemanager.hostname”指定资源管理器的主机名称
– 属性“yarn.nodemanager.local-dirs”指定节点管理器的本地存储目录
– 属性“yarn.nodemanager.log-dirs”指定节点管理器的本地日志存储目录
根据配置文件增加目录,

mkdir -p /data/yarn/nm
chown yarn:yarn /data/yarn/nm
chmod 775 /data/yarn/nm

mkdir -p /data/yarn/container-logs
chown yarn:yarn /data/yarn/container-logs
chmod 775 /data/yarn/container-logs

2.3.3 启动守护进程

su - yarn -c '/usr/hadoop-2.6.5/sbin/yarn-daemon.sh start resourcemanager'

可见如下输出,

rsync from hd01:/usr/hadoop-2.6.5
starting resourcemanager, logging to /var/log/hadoop-yarn/yarn-yarn-resourcemanager-hd01.cmdschool.org.out

可使用如下命令确认运行的进程,

pgrep -u yarn -a java

可见如下输出,

13723 /usr/java/jdk1.8.0_121/bin/java -Dproc_resourcemanager -Xmx1000m -Dhadoop.log.dir=/var/log/hadoop-yarn -Dyarn.log.dir=/va                              r/log/hadoop-yarn -Dhadoop.log.file=yarn-yarn-resourcemanager-hd01.cmdschool.org.log -Dyarn.log.file=yarn-yarn-resourcemanager-                              hd01.cmdschool.org.log -Dyarn.home.dir= -Dyarn.id.str=yarn -Dhadoop.root.logger=INFO,RFA -Dyarn.root.logger=INFO,RFA -Djava.lib                              rary.path=/usr/hadoop-2.6.5/lib/native -Dyarn.policy.file=hadoop-policy.xml -Dhadoop.log.dir=/var/log/hadoop-yarn -Dyarn.log.di                              r=/var/log/hadoop-yarn -Dhadoop.log.file=yarn-yarn-resourcemanager-hd01.cmdschool.org.log -Dyarn.log.file=yarn-yarn-resourceman                              ager-hd01.cmdschool.org.log -Dyarn.home.dir=/usr/hadoop-2.6.5 -Dhadoop.home.dir=/usr/hadoop-2.6.5 -Dhadoop.root.logger=INFO,RFA                               -Dyarn.root.logger=INFO,RFA -Djava.library.path=/usr/hadoop-2.6.5/lib/native -classpath /etc/hadoop:/etc/hadoop:/etc/hadoop:/u                              sr/hadoop-2.6.5/share/hadoop/common/lib/*:/usr/hadoop-2.6.5/share/hadoop/common/*:/usr/hadoop-2.6.5/share/hadoop/hdfs:/usr/hado                              op-2.6.5/share/hadoop/hdfs/lib/*:/usr/hadoop-2.6.5/share/hadoop/hdfs/*:/usr/hadoop-2.6.5/share/hadoop/yarn/lib/*:/usr/hadoop-2.                              6.5/share/hadoop/yarn/*:/usr/hadoop-2.6.5/share/hadoop/mapreduce/lib/*:/usr/hadoop-2.6.5/share/hadoop/mapreduce/*:/usr/hadoop-2                              .6.5/contrib/capacity-scheduler/*.jar:/usr/hadoop-2.6.5/contrib/capacity-scheduler/*.jar:/usr/hadoop-2.6.5/share/hadoop/yarn/*:                              /usr/hadoop-2.6.5/share/hadoop/yarn/lib/*:/etc/hadoop/rm-config/log4j.properties org.apache.hadoop.yarn.server.resourcemanager.                              ResourceManager

可使用如下命令确认程序的启动,

netstat -antp | grep `pgrep -u yarn java` | grep LISTEN

可见如下输出,

tcp6       0      0 :::8088                 :::*                    LISTEN      13723/java
tcp6       0      0 :::8030                 :::*                    LISTEN      13723/java
tcp6       0      0 :::8031                 :::*                    LISTEN      13723/java
tcp6       0      0 :::8032                 :::*                    LISTEN      13723/java
tcp6       0      0 :::8033                 :::*                    LISTEN      13723/java

测试到这里,请使用以下命令停止服务,

su - yarn -c '/usr/hadoop-2.6.5/sbin/yarn-daemon.sh stop resourcemanager'

2.3.4 配置服务控制脚本

vim /usr/lib/systemd/system/yarn-rm.service

可加入如下配置,

[Unit]
Description=Apache YARN resource manager
Wants=network.target
Before=network.target
After=network-pre.target
Documentation=https://hadoop.apache.org/docs/

[Service]
Type=forking
ExecStartPre=/bin/sh -c 'mkdir -p /var/run/hadoop-yarn;chown yarn:yarn /var/run/hadoop-yarn;chmod 775 /var/run/hadoop-yarn'
ExecStartPre=/bin/sh -c 'mkdir -p /var/log/hadoop-yarn;chown yarn:yarn /var/log/hadoop-yarn;chmod 775 /var/log/hadoop-yarn'
ExecStart=/usr/bin/su - yarn -c '/usr/hadoop-2.6.5/sbin/yarn-daemon.sh start resourcemanager'
ExecStop=/usr/bin/su - yarn -c '/usr/hadoop-2.6.5/sbin/yarn-daemon.sh stop resourcemanager'
PIDFile=/var/run/hadoop-yarn/yarn-yarn-resourcemanager.pid
Restart=on-success

[Install]
WantedBy=multi-user.target

修改完脚本后,你需要使用如下命令重载服务,

systemctl daemon-reload

你可使用如下命令控制服务和查询状态,

systemctl start yarn-rm.service
systemctl status yarn-rm.service
systemctl stop yarn-rm.service
systemctl restart yarn-rm.service

测试完毕,建议你使用如下命令设置服务自动启动,

systemctl enable yarn-rm.service

2.3.5 开放节点的端口

firewall-cmd --permanent --add-port 8088/tcp --add-port 8030-8033/tcp
firewall-cmd --reload
firewall-cmd --list-all

2.3.6 浏览器测试

In Windows Client
http://10.168.0.101:8088/
可见如下显示,

如果你配置完所有节点,单击【nodes】则显示如下,

2.4 配置节点管理器(从节点)

In hd0[1-5],

2.4.1 启动守护进程

su - yarn -c '/usr/hadoop-2.6.5/sbin/yarn-daemon.sh start nodemanager'

可见如下输出,

rsync from hd01:/usr/hadoop-2.6.5
starting nodemanager, logging to /var/log/hadoop-yarn/yarn-yarn-nodemanager-hd01.cmdschool.org.out

可使用如下命令确认运行的进程,

pgrep -u yarn -a java

可见如下输出,

13723 /usr/java/jdk1.8.0_121/bin/java -Dproc_resourcemanager -Xmx1000m -Dhadoop.log.dir=/var/log/hadoop-yarn -Dyarn.log.dir=/va                              r/log/hadoop-yarn -Dhadoop.log.file=yarn-yarn-resourcemanager-hd01.cmdschool.org.log -Dyarn.log.file=yarn-yarn-resourcemanager-                              hd01.cmdschool.org.log -Dyarn.home.dir= -Dyarn.id.str=yarn -Dhadoop.root.logger=INFO,RFA -Dyarn.root.logger=INFO,RFA -Djava.lib                              rary.path=/usr/hadoop-2.6.5/lib/native -Dyarn.policy.file=hadoop-policy.xml -Dhadoop.log.dir=/var/log/hadoop-yarn -Dyarn.log.di                              r=/var/log/hadoop-yarn -Dhadoop.log.file=yarn-yarn-resourcemanager-hd01.cmdschool.org.log -Dyarn.log.file=yarn-yarn-resourceman                              ager-hd01.cmdschool.org.log -Dyarn.home.dir=/usr/hadoop-2.6.5 -Dhadoop.home.dir=/usr/hadoop-2.6.5 -Dhadoop.root.logger=INFO,RFA                               -Dyarn.root.logger=INFO,RFA -Djava.library.path=/usr/hadoop-2.6.5/lib/native -classpath /etc/hadoop:/etc/hadoop:/etc/hadoop:/u                              sr/hadoop-2.6.5/share/hadoop/common/lib/*:/usr/hadoop-2.6.5/share/hadoop/common/*:/usr/hadoop-2.6.5/share/hadoop/hdfs:/usr/hado                              op-2.6.5/share/hadoop/hdfs/lib/*:/usr/hadoop-2.6.5/share/hadoop/hdfs/*:/usr/hadoop-2.6.5/share/hadoop/yarn/lib/*:/usr/hadoop-2.                              6.5/share/hadoop/yarn/*:/usr/hadoop-2.6.5/share/hadoop/mapreduce/lib/*:/usr/hadoop-2.6.5/share/hadoop/mapreduce/*:/usr/hadoop-2                              .6.5/contrib/capacity-scheduler/*.jar:/usr/hadoop-2.6.5/contrib/capacity-scheduler/*.jar:/usr/hadoop-2.6.5/share/hadoop/yarn/*:                              /usr/hadoop-2.6.5/share/hadoop/yarn/lib/*:/etc/hadoop/rm-config/log4j.properties org.apache.hadoop.yarn.server.resourcemanager.                              ResourceManager
14572 /usr/java/jdk1.8.0_121/bin/java -Dproc_nodemanager -Xmx1000m -Dhadoop.log.dir=/var/log/hadoop-yarn -Dyarn.log.dir=/var/lo                              g/hadoop-yarn -Dhadoop.log.file=yarn-yarn-nodemanager-hd01.cmdschool.org.log -Dyarn.log.file=yarn-yarn-nodemanager-hd01.cmdscho                              ol.org.log -Dyarn.home.dir= -Dyarn.id.str=yarn -Dhadoop.root.logger=INFO,RFA -Dyarn.root.logger=INFO,RFA -Djava.library.path=/u                              sr/hadoop-2.6.5/lib/native -Dyarn.policy.file=hadoop-policy.xml -server -Dhadoop.log.dir=/var/log/hadoop-yarn -Dyarn.log.dir=/v                              ar/log/hadoop-yarn -Dhadoop.log.file=yarn-yarn-nodemanager-hd01.cmdschool.org.log -Dyarn.log.file=yarn-yarn-nodemanager-hd01.cm                              dschool.org.log -Dyarn.home.dir=/usr/hadoop-2.6.5 -Dhadoop.home.dir=/usr/hadoop-2.6.5 -Dhadoop.root.logger=INFO,RFA -Dyarn.root                              .logger=INFO,RFA -Djava.library.path=/usr/hadoop-2.6.5/lib/native -classpath /etc/hadoop:/etc/hadoop:/etc/hadoop:/usr/hadoop-2.                              6.5/share/hadoop/common/lib/*:/usr/hadoop-2.6.5/share/hadoop/common/*:/usr/hadoop-2.6.5/share/hadoop/hdfs:/usr/hadoop-2.6.5/sha                              re/hadoop/hdfs/lib/*:/usr/hadoop-2.6.5/share/hadoop/hdfs/*:/usr/hadoop-2.6.5/share/hadoop/yarn/lib/*:/usr/hadoop-2.6.5/share/ha                              doop/yarn/*:/usr/hadoop-2.6.5/share/hadoop/mapreduce/lib/*:/usr/hadoop-2.6.5/share/hadoop/mapreduce/*:/usr/hadoop-2.6.5/contrib                              /capacity-scheduler/*.jar:/usr/hadoop-2.6.5/contrib/capacity-scheduler/*.jar:/usr/hadoop-2.6.5/share/hadoop/yarn/*:/usr/hadoop-                              2.6.5/share/hadoop/yarn/lib/*:/etc/hadoop/nm-config/log4j.properties org.apache.hadoop.yarn.server.nodemanager.NodeManager

或者,以下命令更加简洁,

jps

可见如下输出,

14168 ResourceManager
12521 NameNode
14572 NodeManager
14687 Jps

可使用如下命令确认程序的启动,

netstat -antp | grep `jps | grep -i NodeManager | cut -d" " -f1` | grep LISTEN

可见如下输出,

tcp6       0      0 :::8040                 :::*                    LISTEN      13961/java
tcp6       0      0 :::8042                 :::*                    LISTEN      13961/java
tcp6       0      0 :::13562                :::*                    LISTEN      13961/java
tcp6       0      0 :::40494                :::*                    LISTEN      14572/java

测试到这里,请使用以下命令停止服务,

su - yarn -c '/usr/hadoop-2.6.5/sbin/yarn-daemon.sh stop nodemanager'

2.4.2 配置服务控制脚本

vim /usr/lib/systemd/system/yarn-nm.service

可加入如下配置,

[Unit]
Description=Apache YARN nodemanager
Wants=network.target
Before=network.target
After=network-pre.target
Documentation=https://hadoop.apache.org/docs/

[Service]
Type=forking
ExecStartPre=/bin/sh -c 'mkdir -p /var/run/hadoop-yarn;chown yarn:yarn /var/run/hadoop-yarn;chmod 775 /var/run/hadoop-yarn'
ExecStartPre=/bin/sh -c 'mkdir -p /var/log/hadoop-yarn;chown yarn:yarn /var/log/hadoop-yarn;chmod 775 /var/log/hadoop-yarn'
ExecStartPre=/bin/sh -c 'mkdir -p /data/yarn/nm;chown yarn:yarn /data/yarn/nm;chmod 775 /data/yarn/nm'
ExecStartPre=/bin/sh -c 'mkdir -p /data/yarn/container-logs;chown yarn:yarn /data/yarn/container-logs;chmod 775 /data/yarn/container-logs'
ExecStart=/usr/bin/su - yarn -c '/usr/hadoop-2.6.5/sbin/yarn-daemon.sh start nodemanager'
ExecStop=/usr/bin/su - yarn -c '/usr/hadoop-2.6.5/sbin/yarn-daemon.sh stop nodemanager'
PIDFile=/var/run/hadoop-yarn/yarn-yarn-nodemanager.pid
Restart=on-success

[Install]
WantedBy=multi-user.target

修改完脚本后,你需要使用如下命令重载服务,

systemctl daemon-reload

你可使用如下命令控制服务和查询状态,

systemctl start yarn-nm.service
systemctl status yarn-nm.service
systemctl stop yarn-nm.service
systemctl restart yarn-nm.service

测试完毕,建议你使用如下命令设置服务自动启动,

systemctl enable yarn-nm.service

2.4.3 开放节点的端口

firewall-cmd --permanent --add-port 8040/tcp --add-port 8042/tcp --add-port 13562/tcp --add-port 35000-50000/tcp
firewall-cmd --reload
firewall-cmd --list-all

2.4.4 浏览器测试

In Windows Client
http://10.168.0.101:8042/
可见如下显示,

参阅文档
=================

官方的YARN的集群配置
—————–
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/ClusterSetup.html

官方的YARN介绍
——————
http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html

非官方的YARN介绍
——————
https://en.wikiversity.org/wiki/Big_Data/YARN
https://searchdatamanagement.techtarget.com/definition/Apache-Hadoop-YARN-Yet-Another-Resource-Negotiator
https://www.geeksforgeeks.org/hadoop-yarn-architecture/
https://www.edureka.co/blog/hadoop-yarn-tutorial/
https://www.cnblogs.com/zimo-jing/p/8846569.html

官方的YARN工作流程
——————
http://hadoop.apache.org/docs/r3.0.3/hadoop-yarn/hadoop-yarn-site/WritingYarnApplications.html

其他YARN部署范例
—————–
https://www.allprogrammingtutorials.com/tutorials/setting-up-hadoop-2-6-0-cluster.php
http://www.informit.com/articles/article.aspx?p=2190194&seqNum=2
https://blog.csdn.net/qq_20989105/article/details/79182409
https://www.jianshu.com/p/e332de2a6bd7

YARN参数
——————-
https://hadoop.apache.org/docs/r2.6.5/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

没有评论

发表评论

Apache-Hadoop
如何部署HBase的集群?

1 基础知识 1.1 HBase的简介 – HBase是一个分布式的可扩展的大数据存储 …

Apache-Hadoop
如何部署Apache ZooKeeper 3.4.x集群?

1 基础知识 1.1 ZooKeeper的简介 – ZooKeeper是用于分布式应用程 …

Apache-Hadoop
如何部署Apache ZooKeeper 3.5.x集群?

1 基础知识 1.1 ZooKeeper的简介 – ZooKeeper是用于分布式应用程 …