hadoop和yarnhadoop • 1. 客户端提交任务“wordcount”,含源代码和输件。• 2....

33
HadoopYARN 赵来平 天津学软件学院 [email protected] 1

Upload: others

Post on 20-May-2020

20 views

Category:

Documents


0 download

TRANSCRIPT

  • Hadoop和YARN赵来平

    天津⼤大学软件学院[email protected]

    1

    mailto:[email protected]

  • ⽬目录

    • YARN介绍

    • 单机调度

    • FIFO

    • STF

    • Round-Robin

    2

  • Apache Hadoop• 项⽬目主要包括三个主要部分:

    • Hadoop Common: ⼀一些通⽤用I/O组件与接⼝口。

    • Hadoop YARN: ⽀支持任务调度和资源管理理的框架。

    • Hadoop Distributed File System (HDFS)

    • Hadoop MapReduce

    • 其他与Hadoop相关的项⽬目:

    • Amber

    • Avro

    • Cassandra (A scalable database)

    • HBase (A distributed database)

    • Chukwa3

    • Hive (data summarization and ad hoc querying)

    • Pig (data-flow language)

    • Spark (A fast and general compute engine)

    • Tez (execute an arbitrary DAG of tasks)

    • Zookeeper (coordination service)

  • Mapreduce的执⾏行行过程• Mapreduce

    4

  • Hadoop

    • 1. 客户端提交任务“wordcount”,含源代码和输⼊入⽂文件。

    • 2. JobTracker将输⼊入⽂文件分⽚片,然后将任务指派给tasktrackers.

    • 3. map()处理理结束,TaskTrackers根据输出的中间结果设置reduce()函数的key空间。

    • 4. JobTracker将key空间划分为m块,并指派给reduce函数.

    • 5.reduce()函数处理理结果存⼊入HDFS。5

    TaskTracker 2TaskTracker 1 TaskTracker 3

    TaskTracker 5TaskTracker 4 TaskTracker 6

    JobTracker

    Client

    WordCount

    #yarn jar WordCount.jar WordCount input output

  • 执⾏行行初始

    • 将输⼊入⽂文件划分为128MB⼤大⼩小的分⽚片

    • Map函数所在节点并发读取数据。

    • 程序部署到多节点。

    • JobClient调⽤用submitJob()⽅方法提交作业:

    • jobTracker请求新的任务ID;

    • 检查任务的输出⽬目录;

    • 计算任务的输⼊入分⽚片;

    • 将任务jar⽂文件、配置⽂文件等信息复制到jobTracker的⽂文件系统,准备执⾏行行任务。

    6

  • 数据分⽚片

    • 顺序切分⽂文件作为Map任务的输⼊入。

    • 对于reduce函数,相同key的中间数据传输到同⼀一个reduce。

    • 中间数据向reduce传输的默认分配过程:

    • 使⽤用哈希函数,e.g., hash(key) mod R.

    • 该函数可重写:

    • 如使⽤用主机名哈希:e.g., hash(hostname(URL)) mod R 保证同⼀一主机的URLs均被⼀一个reduce处理理。

    7

  • Map节点• 读取输⼊入数据⽚片。

    • 解析并为map函数输⼊入做准备:

    • 使⽤用继承InputFormat类.

    • Map函数处理理⽣生成中间结果,写⼊入内存 (e.g., )

    • 周期性的将内存中的中间结果写⼊入本地磁盘。

    8

  • Reduce节点• 收到已产⽣生中间数据的通知。

    • 远程读操作,读取map节点上的中间数据。

    • 按照key对中间结果进⾏行行排序。

    • 遍历中间结果:

    • 使⽤用reduce函数处理理每个中间结果key。

    • reduce输出结果写⼊入输出⽂文件(HDFS)。

    9

  • 数据流

    • 最起始输⼊入与最末输出都存储于HDFS中:

    • 调度器器在调度map任务时优先考虑数据本地性。

    • 中间结果存储于所在节点本地⽂文件系统。

    • 对于多轮任务,reduce的输出可能是下⼀一轮mapreduce的输⼊入。

    10

  • What is YARN?• Yet Another Resource Negotiator.

    • 提供资源管理理服务:

    • 调度

    • 监控

    • 控制

    • 取代了了Hadoop初代版本中的JobTracker的资源管理理功能。

    • 应⽤用于 Hadoop 0.23 和 Hadoop 2.x版本。11

  • Why YARN?

    12

  • Why YARN?• Hadoop JobTracker的存在降低了了集群扩展性:

    • Hadoop 1.x⼀一般只能⽀支持不不超过4000节点规模的集群。

    • 数千应⽤用程序,每个都运⾏行行成千上万个任务。

    • JobTracker不不能及时调度管理理资源。

    • Map和reduce插槽资源的分别化管理理,降低了了资源利利⽤用效率。

    13

  • Why YARN?• MapReduce框架逐渐被更更多类型的应⽤用程序滥⽤用:

    • 迭代式算法。

    • YARN 试图将资源管理理独⽴立出来,中⽴立化。

    • 不不同类型的应⽤用程序可以共享同⼀一集群系统。

    • 在⽀支持更更多数据处理理框架的同时,仍继续⽀支持mapreduce。

    14

  • YARN 架构• ResourceManager 资源管理理器器

    • 单独、中⼼心式的容器器调度程序。

    • 监控节点和应⽤用程序。

    • NodeManager 节点管理理器器

    • 每个⼯工作节点都运⾏行行⼀一节点管理理器器进程。

    • 启动,监控和控制容器器。

    • ApplicationMaster 应⽤用管理理器器

    • 调度、监控和控制应⽤用程序。

    • RM 为每个应⽤用程序启动⼀一个 AM。

    • AM 向RM请求容器器,并利利⽤用NM启动容器器。

    • Containers 容器器

    • YARN下的资源分配控制单元。

    • AM和应⽤用程序任务均⼯工作在容器器中。15

  • 16

    YARN 架构

  • YARN 架构

    17

  • 18

    YARN 架构

  • 19

    YARN 架构

  • 20

    YARN 架构

  • 21

    YARN 架构

  • 22

    YARN 架构

  • 23

    YARN 架构

  • • 调度问题

    24

  • 调度问题

    • 多任务需要调度:

    • 单机上的多进程调度。

    • Hadoop应⽤用下的多Map和reduce任务。

    • 多个hadoop应⽤用的调度。

    • 任务请求⼀一定资源:

    • 处理理器器计算资源

    • 内存

    • 硬盘、⽹网络资源

    • 调度⽬目标:

    • 1. 提⾼高任务响应时间。

    • 2. 提⾼高资源利利⽤用效率。25

  • 26

    单节点调度

  • FIFO 调度算法/FCFS

    • 根据到达时间先后顺序将任务⼊入队。

    • 处理理节点空闲时,队列列头任务出队并调度。

    27

  • FIFO/FCFS 性能表现• 平均完成时间?

    • 前⽂文示例例:

    • 平均完成时间 FIFO/FCFS =

    • (Task 1 + Task 2 + Task 3)/3

    • = (10+15+18)/3

    • = 43/3

    • = 14.33

    28

  • STF 调度算法 (Shortest Task First)

    • 所有任务按照运⾏行行时间从⼩小到⼤大排列列。

    • 当有空闲节点时,选择最短运⾏行行时间任务进⾏行行调度。

    29

  • STF 最优! • 所有调度算法中,STF的平均完成时间最短!

    • 前⽂文示例例: 
– 平均完成时间 STF = (Task 1 + Task 2 + Task 3)/3 
= (18+8+3)/3 
= 29/3 
= 9.66 
(versus 14.33 for FIFO/FCFS)

    • STF是基于优先级调度的⼀一种形式。

    • 除了了使⽤用时间作为优先级,也可以根据⽤用户的定义设置优先级。

    30

  • Round-Robin 循环调度算法

    • 队列列中头任务出队,并运⾏行行1个单位时间。

    • 1单位时间结束,保存运⾏行行状态,并抢占CPU。

    • 抢占后,将任务加⼊入队尾,并运⾏行行下⼀一队头任务。31

  • Round-Robin vs. STF/FIFO • Round-Robin 更更适⽤用于:

    • 交互式应⽤用程序;

    • ⽤用户快速响应时间。

    • FIFO/STF 更更适⽤用于:

    • 批处理理应⽤用程序;

    • ⽤用户提交任务后,离开,⼀一段时间后回来取结果。

    32

  • 总结

    • YARN介绍

    • 单机调度

    • FIFO

    • STF

    • Round-Robin

    33