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