【Spark SQL】2、YARN的学习

YARN概述

YARN的基本思想是将资源管理和作业调度/监视的功能分解为单独的守护进程。我们的想法是拥有一个全局ResourceManager(RM)和每个应用程序ApplicationMaster(AM)。应用程序可以是单个作业,也可以是作业的DAG。

ResourceManager和NodeManager构成了数据计算框架。 ResourceManager是在系统中的所有应用程序之间仲裁资源的最终权限。 NodeManager是每台机器框架代理,负责容器,监视其资源使用情况(CPU,内存,磁盘,网络)并将其报告给ResourceManager / Scheduler。

每个应用程序ApplicationMaster实际上是一个特定于框架的库,其任务是协调来自ResourceManager的资源,并与NodeManager一起执行和监视任务。

ResourceManager有两个主要组件:Scheduler和ApplicationsManager。

调度程序负责根据熟悉的容量,队列等约束将资源分配给各种正在运行的应用程序。调度程序是纯调度程序,因为它不执行应用程序状态的监视或跟踪。此外,由于应用程序故障或硬件故障,它无法保证重新启动失败的任务。调度程序根据应用程序的资源需求执行其调度功能;它是基于资源Container的抽象概念,它包含内存,CPU,磁盘,网络等元素。

调度程序具有可插入策略,该策略负责在各种队列,应用程序等之间对集群资源进行分区。当前的调度程序(如CapacityScheduler和FairScheduler)将是插件的一些示例。

ApplicationsManager负责接受作业提交,协商第一个容器以执行特定于应用程序的ApplicationMaster,并提供在失败时重新启动ApplicationMaster容器的服务。每个应用程序ApplicationMaster负责从调度程序协商适当的资源容器,跟踪其状态并监视进度。

hadoop-2.x中的MapReduce维护API与先前稳定版本(hadoop-1.x)的兼容性。这意味着只需重新编译,所有MapReduce作业仍应在YARN之上保持不变。

YARN通过ReservationSystem支持资源预留的概念,ReservationSystem允许用户指定资源的时间和时间约束(例如,截止日期),并保留资源以确保重要作业的可预测执行.ReservationSystem跟踪资源超时,执行预留的准入控制,并动态指示基础调度程序确保预留已满。

为了将YARN扩展到超过几千个节点,YARN通过YARN Federation功能支持Federation的概念。联合允许透明地将多个纱线(子)群集连接在一起,并使它们看起来像一个大型群集。这可以用于实现更大规模,和/或允许多个独立集群一起用于非常大的工作,或者用于具有跨所有工作的容量的租户。

YARN架构

RM(ResourceMAnager)+N个NM(NodeManager)

ResourceManager的职责:一个集群active状态的RM只有一个,负责整个集群的资源管理和调度

  • 处理客户端的请求(启动作业、杀死作业)
  • 启动/监控 ApplicationMaster(一个作业对应一个AM)
  • 监控NM
  • 系统的资源分配和调度

NodeManager:整个集群中有N个,负责单个节点的资源管理和使用以及task的运行情况

  • 定期向RM汇报本节点的资源使用请求和各个Container的运行状态
  • 接收并处理RM的Container启停的各种命令
  • 单个节点的资源管理和任务管理

ApplicationMaster:每个应用/作业对应一个,负责应用程序的管理

  • 数据切分
  • 为应用程序向RM申请资源(container),并分配给内部任务
  • 与NM通信以启停task,task是运行在container中的
  • task的监控和容错

Container:

对任务运行情况的描述:CPU/memory/环境变量


架构图
在这里插入图片描述

YARN执行流程

在这里插入图片描述

  • 用户向YARN提交作业
  • RM为该作业分配第一个container(AM)
  • RM会与对应的NM通信,要求NM在这个container上启动应用程序的AM
  • AM首先向RM注册(用户可以通过RM查询到作业的运行情况),然后AM将为各个任务申请资源,并监控运行情况
  • AM采用轮询的方式通过RPC协议向RM申请和领取资源
  • AM申请到资源以后,便和相应的NM通信,要求NM启动任务
  • NM启动我们作业对应的task
YARN搭建

YARN使用的版本 hadoop-2.6.0-cdh5.7.0(安装hadoop的时候 就安装上了)

Yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

Mapred-site.xml

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

sbin/start-yarn.sh 启动yarn

YARN的启动
./sbin/start-yarn.sh

验证是否启动成功

  • jps -l

    • 9180 org.apache.hadoop.yarn.server.nodemanager.NodeManager
    • 9079 org.apache.hadoop.yarn.server.resourcemanager.ResourceManager
  • web访问 ip:8088

在这里插入图片描述

示例

MapReduce作业提交到YARN上运行

  • hadoop jar的使用

  • 提交MapReduce作业到yarn上运行

hadoop jar /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount /input/a.txt /output/a.txt

其中/input/a.txt表示输入到MapReduce的作业,/output/a.txt表示输出MapReduce作业的结果

hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce,hadoop的这个目录下有MapReduce的demo,我们可以使用它来跑wortCount例子

启动hadoop hdfs 将外部文件put到hdfs中,待wortCount使用

vi a.txt 
# hello   world   hello   hello
./start-dfs.sh
./start-yarn.sh
hadoop fs -mkdir /test
##将本地文件放到hdfs
hadoop fs -put ~/a.txt /test
hadoop jar /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar  wordcount /test/a.txt /output/a.txt

如果要重新跑一次任务,需要将输出目录重新删掉再跑

刚刚执行hadoop jar时输入了参数 wordcount,它是任务的名称。可以通过下面方式展示所有任务的名称

hadoop jar /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar

在这里插入图片描述

MapReduce执行过程:

在这里插入图片描述

其中图中的http://localhost:8088/proxy/application_1568879780086_0001/表示可以到web页面查看任务执行情况,这个localhost要换成机器的IP地址

结果如下

/output/a.txt/_SUCCESS  ==>仅仅是运行成功、失败的标志
/output/a.txt/prt-r-00000 ==>运行后的结果显示在这个文件里
hadoop fs -cat /output/a.txt/prt-r-00000 #查看结果
## hello	3
## world	1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值