0
点赞
收藏
分享

微信扫一扫

Yarn的相关知识

一. Yarn

1.yarn的作用:资源的调度分配。

2.主要的模块:

2.1.ResoureManager(RM)

yarn是资源控制框架的中心模块,负责集群中所有的资源的统一管理与分配。

2.2.调度器(ResourceScheduler)

根据各个应用程序的资源需求,进行分配。

2.3.应用管理器(Applications Maneger)

负责监控或跟踪AM的执行状态。

2.4.NodeManager(NM)

是ResourceManager每台机器上的代理,负责容器的管理,并监控他们的资源使用的情况(CPU,内存,磁盘,网络等)

2.5.ApplicationMaster(AM)

        yarn中每个应用都会启动一个AM,负责向RM去申请资源。请求NM启动constainer,并告诉constainer需要做什么。

2.6.Container

这是一个虚拟的一个概念。

yarn中所有应用都是在container之上运行的,包括ApplicationManager。

  1.  container是yarn中资源的抽象,它封装了某个节点上一定的资源(CPU,内存,磁盘,网络等)
  2. container由AM申请向RM申请,由RM中的ResourceScheduler分配给AM。

 步骤:

1.client向RM提交应用程序,包括AM的主程序,启动AM的命令,用户的程序(wordcount)

2.RM为该应用分配一个Container,并于NM通信,要求NM在这个container中启动AM。

3.AM首先向RM注册,这样用户可以直接通过RM来查看程序的运行状态。

4.AM通过RPC协议向ResourceScheduler申请资源

5.一旦AM申请到了资源,与NM通信,要求NM启动任务。

6.NM为任务设置好运行环境(环境变量,jar包等)将任务的启动命令写到一个脚本文件中,并通过脚本触发启动任务。

7.各个Container的Task(Map Task,Reduce Task),通过RPC向AM进行进度和状态汇报,一边AM随时可以掌握任务的运行状态失败的时候,也会重启container任务。

8.应用程序运行运行完成后,AM会向RM申请注销或者关闭。

1~4:申请资源

5~8:运行任务,直到完成任务。

面试点:

1.AM在哪个进程所在的节点运行?

答:NM

2.AM要申请container吗,跟谁申请?

要的,向RM申请。

3.一个作业,第一个container容器运行什么?

AM

Scheduler

在理想的情况下,我们应用对yarn资源的请求应该立刻被满足,但是实际上,资源是有限的,特别是很忙的集群。

(1)FIFO Scheduler:先进先出调度。这种调度器把应用提交按顺序排成一个队列,先进先出的队列,在进行资源分配的时候,先给队列中最头部的应用分配资源,等到应用满足了,再给下一个分配,以此类推。缺点:大的应用可能会占用所有的资源,造成阻塞,不适合集群。

(2)Capacity Scheduler

专门有一个队列来运行小任务,但是为小任务专门设置的队列会占用一定的集群资源,导致大任务的执行时间会落后FIFO

(3)Fair SCheduler

不需要预先占用一定资源,动态调整。

 

默认调度器是:Capacity Scheduler

MapReduce

Map:映射,把一个任务拆解成多个。

Reduce:聚合,把拆解开的任务做最后的聚合操作。

hadoop hdfs hdfs hive

hdfs sqoop flume java

java Hadoop Hadoop

适用于:离线,批处理运算。

不适合实时计算。

MR运行中的进程:

RunJar,YarnChild Task,MRAppMaster,它们都是以进程的方式运行的,那么进程申请资源,运行,释放资源,所以MR运行慢的原因。

作业:

进程和线程的区别:

(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位

(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行

(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.

(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。

sql:收藏推荐

select t5.t4_id id1, t5.t4_id2 id2, t6.spu_id spu
  from (select t4.t1_id t4_id, t4.t2_id t4_id2, count(t4.spu) count_spu
          from (select t3.t1_id, t3.t2_id, t3.t1_spu spu
                  from (select t1.id     t1_id,
                               t1.spu_id t1_spu,
                               t2.id     t2_id,
                               t2.spu_id t2_spu
                          from (select t.id, t.spu_id from collect_spu t) t1
                         inner join collect_spu t2
                            on t1.id <> t2.id --说明不是同一个用户
                         where t1.spu_id = t2.spu_id) t3) t4
         group by t4.t1_id, t4.t2_id
        having count(t4.spu) >= 2) t5
   join collect_spu t6
    on t5.t4_id = t6.id

SPU(Standard Product Unit):标准化产品单元。是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗点讲,属性值、特性相同的商品就可以称为一个SPU。

SKU全称为Stock Keeping Unit(库存量单位),即库存进出计量的基本单元,可以是以件,盒,托盘等为单位。SKU这是对于大型连锁超市DC(配送中心)物流管理的一个必要的方法。现在已经被引申为产品统一编号的简称,每种产品均对应有唯一的SKU号。

PV:页面浏览量,通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标。网页浏览数是评价网站流量最常用的指标之一,简称为PV。监测网站PV的变化趋势和分析其变化原因是很多站长定期要做的工作。

UV:独立访客就是独立IP访客(Unique Visitor),一般地用两个数值标准来统计访问某网站的访客,即“访问次数”和“独立访客(问)数”,访问次数和独立访客数是两个不同的概念。

举报

相关推荐

数组的相关知识

Redis的相关知识

接口的相关知识

JDBC的相关知识

Lua相关的知识

servlet相关的知识

Git的相关知识

0 条评论