大数据从入门到精通(超详细版)之Yarn的使用,安装与部署

前言

嗨,各位小伙伴,恭喜大家学习到这里,不知道关于大数据前面的知识遗忘程度怎么样了,又或者是对大数据后面的知识是否感兴趣,本文是《大数据从入门到精通(超详细版)》的一部分,小伙伴们如果对此感谢兴趣的话,推荐大家按照大数据学习路径开始学习哦。

以下就是完整的学习路径哦。

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

大数据从入门到精通文章体系!!!!!!!!!!!!!!

↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑

推荐大家认真学习哦!!!


在这里插入图片描述

Yarn是什么

Hadoop YARN(Yet Another Resource Negotiator)是 Hadoop 生态系统中的一个核心组件,用于集群资源的管理和任务调度。YARN 的目标是为大规模分布式计算提供统一的资源管理框架,使得 Hadoop 除了支持 MapReduce 之外,还能够运行其他计算模型。

YARN 的主要功能包括:

  1. 资源调度:YARN 管理着集群中的各种资源(如 CPU、内存等),根据不同应用的需求,动态地分配和调度这些资源。
  2. 任务协调和调度:YARN 提供了一个全局的资源调度器,可以将不同类型的任务(如 MapReduce、Spark、Hive 等)提交给 ResourceManager 进行调度,并将任务分配给合适的节点上的 NodeManager 执行。
  3. 容错处理:YARN 具备自动容错和故障转移机制,可以在节点故障时重新分配任务以保证作业的顺利执行。
  4. 扩展性: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

独立部署的步骤

  1. 在yarn-site.xml中配置yarn.web-proxy.address参数即可

    在这里插入图片描述

  2. 通过启动命令启动 : $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)
  • 将输入路径内的数据的单词进行计数 , 将结果写出到输出路径
  1. 准备一份文件, 输入单词

  2. 将文件上传到HDFS当中

  3. 执行如下命令,提交示例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)

  • 将输入路径内的数据的单词进行计数 , 将结果写出到输出路径
  1. 准备一份文件, 输入单词

  2. 将文件上传到HDFS当中

  3. 执行如下命令,提交示例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