大数据从入门到精通(超详细版)之Yarn的使用,安装与部署
前言
嗨,各位小伙伴,恭喜大家学习到这里,不知道关于大数据前面的知识遗忘程度怎么样了,又或者是对大数据后面的知识是否感兴趣,本文是《大数据从入门到精通(超详细版)》
的一部分,小伙伴们如果对此感谢兴趣的话,推荐大家按照大数据学习路径开始学习哦。
以下就是完整的学习路径哦。
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
推荐大家认真学习哦!!!
文章目录
Yarn是什么
Hadoop YARN(Yet Another Resource Negotiator)是 Hadoop 生态系统中的一个核心组件,用于集群资源的管理和任务调度。YARN 的目标是为大规模分布式计算提供统一的资源管理框架,使得 Hadoop 除了支持 MapReduce 之外,还能够运行其他计算模型。
YARN 的主要功能包括:
- 资源调度:YARN 管理着集群中的各种资源(如 CPU、内存等),根据不同应用的需求,动态地分配和调度这些资源。
- 任务协调和调度:YARN 提供了一个全局的资源调度器,可以将不同类型的任务(如 MapReduce、Spark、Hive 等)提交给 ResourceManager 进行调度,并将任务分配给合适的节点上的 NodeManager 执行。
- 容错处理:YARN 具备自动容错和故障转移机制,可以在节点故障时重新分配任务以保证作业的顺利执行。
- 扩展性:YARN 的架构设计具有良好的扩展性,可以轻松地增加或减少集群的容量,适应不同规模和负载的需求。
YARN 的核心组件包括:
- ResourceManager:整个集群的资源管理器,负责接收客户端提交的任务,并将任务分配给合适的节点上的 NodeManager 执行。
- NodeManager:运行在集群节点上,负责管理该节点的资源,并执行来自 ResourceManager 的任务。
- ApplicationMaster:每个应用程序的主管进程,负责和 ResourceManager 通信,申请资源和监控任务的执行情况。
通过 YARN,Hadoop 可以不仅仅局限于 MapReduce,还可以支持更多计算模型和框架,提供更加灵活和高效的大规模数据处理能力。
大致的资源分配流程
Yarn的架构
于HDFS架构类似 , HDFS有NameNode和DataNode
Yarn也有ResourceManager和NodeManager
- ResourceManager : 整个集群的资源调度者 , 负责协调调度各个程序所需的资源
- NodeManager : 单个服务器的资源调度者 , 负责调度单个服务器上的资源提供给应用程序使用
Yarn容器
NodeManager会预先抢占这一部分的资源, 然后将这一部分的资源提供给程序使用 , 程序使用的资源也不能突破这部分的资源.
Web应用代理
概念
代理服务器, 即Web应用代理是YARN的一部分 , 默认情况下 , 它将作为资源管理器(RM)的一部分运行 , 但是可以配置为独立模式下运行.\
使用大理的原因是减少通过YARN进行基于网络的攻击可能性.
这是因为 , Yarn在运行时会提供一个WEB UI站点 , 可以让用户在浏览器内查看Yarn的运行信息.
对外提供WEB站点会有安全性问题 , 而代理服务器的功能就是最大限度的保障对WEB UI的访问安全性.
- 警告用户正在访问一个不受信任的站点
- 剥离用户访问的Cookie
独立部署的步骤
-
在yarn-site.xml中配置yarn.web-proxy.address参数即可
-
通过启动命令启动 : $HADOOP_YARN_HOME/sbin/yarn-daemon.sh start proxyserver
Yarn的历史服务器
JobHistoryServer :
记录历史运行的程序的信息以及产生的日志并提供WEB UI站点供用户使用浏览器查看。
JobHistoryServer历史服务器功能:
- 提供WEB UI站点,供用户在浏览器上查看程序日志
- 可以保留历史数据,随时查看历史运行程序信息
JobHistoryServer需要配置:
- 开启日志聚合,即从容器中抓取日志到HDFS集中存储
-
配置历史服务器端口和主机
Yarn的部署
部署总体说明
组件 | 配置文件 | 启动进程 | 备注 |
---|---|---|---|
Hadoop HDFS | 需修改 | 需启动NameNode作为主节点DataNode作为从节点SecondaryNameNode主节点辅助 | 分布式文件系统 |
Hadoop YARN | 需修改 | 需启动ResourceManager作为集群资源管理者NodeManager作为单机资源管理者ProxyServer代理服务器提供安全性JobHistoryServer记录历史信息和日志 | 分布式资源调度 |
Hadoop MapReduce | 需修改 | 无需启动任何进程MapReduce程序运行在YARN容器内 | 分布式数据计算 |
集群规划
配置过程
mapreduce的配置
以下配置都在$HADOOP_HOME/etc/hadoop的文件夹当中配置.
配置mapred-env.sh文件
#JDK路径
export JAVA_HOME=/export/server/jdk
#设置JobHistoryServer的进程内存为1G
export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=1000
#设置日志级别为INFO
export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA
配置mapred-site.xml文件
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>MapReduce的运行框架设置为YARN</description>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>node:10020</value>
<description>历史服务器通讯端口为node:10020</description>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node:19888</value>
<description>历史服务器web端口为node的19888</description>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/data/mr-history/tmp </value>
<description>历史信息在HDFS的记录临时路径</description></property>
<property>
<name>mapreduce.jobhistorydone-dir</name>
<value>/data/mr-history/done</value>
<description>历史信息在HDFS的记录路径</description>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
<description>MapReduce HOME 设置为HADOOP_HOME</description>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
<description>MapReduce HOME 设置为HADOOP_HOME</description>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
<description>MapReduce HOME 设置为HADOOP_HOME</description>
</property>
Yarn的配置
配置yarn-env.sh
#设置JDK路径的环境变量
export JAVA_HOME=/export/server/jdk
#设置HADOOP_HOME的环境变量
export HADOOP_HOME=/export/server/hadoop
#设置配置文件路径的环境变量
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
#设置日志文件路径的环境变量
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
配置yarn-site.xml文件
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.log.server.url</name>
<value>http://node:19888/jobhistory/logs</value>
<description>历史服务器路径</description>
</property>
<property>
<name>yarn.web-proxy.address</name>
<value>node:8089</value>
<description>代理服务器主机和端口</description>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
<description>开始日志聚合</description>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/logs</value>
<description>程序日志HDFS的存储路径</description>
</property>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node</value>
<description>ResoucesManager的所在节点</description>
</property>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
<description>选择公平调度器</description>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/data/nm-local</value>
<description>NodeManager中间数据本地存储路径</description>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/data/nm-log</value>
<description>NodeManager数据日志本地存储路径</description>
</property>
<property>
<name>yarn.nodemanager.log.retain-seconds</name>
<value>10800</value>
<description>Default time (in seconds) to retain log files on the NodeManager Only applicable if log-aggregation is disabled.</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>为Mapreduce程序开启Shuffle服务</description>
</property>
</configuration>
把这些配置文件分发到其他节点的服务器
scp mapred-env.sh mapred-site.xml yarn-env.sh yarn-site.xml node1:`pwd`/
scp mapred-env.sh mapred-site.xml yarn-env.sh yarn-site.xml node2:`pwd`/
集群的启动命令
一键启动YARN集群: $HADOOP_HOME/sbin/start-yarn.sh
- 会基于yarn-site.xml中配置的yarn.resourcemanager.hostname来决定在哪台机器上启动resourcemanager
- 会基于workers文件配置的主机启动NodeManager
- 代理服务器也会连带启动
一键停止YARN集群: $HADOOP_HOME/sbin/stop-yarn.sh
在当前机器,单独启动或停止进程 , 于hdfs类似
-
Hdfs : hdfs --daemon start | stop namenode | datanode | secondarynamenode Yarn : $HADOOP_HOME/bin/yarn --daemon start | stop resourcemanager | nodemanager|proxyserver
-
start和stop决定启动和停止
-
可控制resourcemanager、nodemanager、proxyserver三种进程
历史服务器启动和停止
-
$HADOOP_HOME/bin/mapred --daemon start|stop historyserver
MapReduce的在Yarn中的执行
Yarn可以执行的程序
- MapReduce程序(本文所讲)
- Spark程序
- Flink程序
wordCount程序实例
单词计数实例程序很简单 :
- 给定数据输入的路径(HDFS) , 给定输出的路径(HDFS)
- 将输入路径内的数据的单词进行计数 , 将结果写出到输出路径
-
准备一份文件, 输入单词
-
将文件上传到HDFS当中
-
执行如下命令,提交示例MapReduce程序WordCount到YARN中执行
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount hdfs://node:8020/input/wordcount/ hdfs://node:8020/output/wc1
径(HDFS)
- 将输入路径内的数据的单词进行计数 , 将结果写出到输出路径
-
准备一份文件, 输入单词
-
将文件上传到HDFS当中
-
执行如下命令,提交示例MapReduce程序WordCount到YARN中执行
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount hdfs://node:8020/input/wordcount/ hdfs://node:8020/output/wc1