Hadoop离线大数据分析
MapReduce工作机制
贝毅君 beiyj@zju.edu.cn
3
MR工作机制
有几个reduce就有几个输出组件
reduce等map执行完才可以执行
3
MR工作机制
Mapreduce 1.0
JobClient:提交Job,包括数
据和程序等
JobTracker:管理Job,如何调
度等和所有节点的执行情况,
由它判断任务在哪个节点执行
TaskTracker:管理任务
一个Job中可能包含多个Task,
一个mapreduce对应一个Task
JVM:Java虚拟机
有一个公共的JobTrackert,每
个机器节点都有一个
TaskTraker,与dataNode共
存,dataNode管理数据,
TaskTracker管理任务,定时向
JobTraker汇报情况,
JobTracker依据这些信息向
TaskTracker节点分配任务。
为什么启动虚拟机JVM?
作为隔离器
为了避免其中一个TaskTracker提供的程序出现BUG时,
整个系统挂掉,启动虚拟机后,一个TaskTracker提供
的程序出现BUG时,仅仅终止它自己
3
MR工作机制
Mapreduce 1.0 状态更新
投机执行:若JobTracker发现某个
TaskTracker执行的某个任务很慢,则再
启动一个节点执行相同的任务,若另一
个节点执行的速度比较快则kill执行速
度慢的节点中的任务
3
MR on YARN
第一代MapReduce存在的问题:
• JobTracker是集群事务的集中处理点,存在
单点故障
• JobTracker需要完成的任务太多,既要维护
job的状态又要维护job的task的状态,造成
过多的资源消耗
• 在taskTracker端,用map/reduce task作为资
源的表示过于简单,没有考虑到CPU、内存
等资源情况,当把两个需要消耗大内存的
task调度到一起,很容易出现OOM
• 把资源强制划分为map/reduce slot,当只有
map task时,reduce slot不能用;当只有
reduce task时,map slot不能用,容易造成
资源利用不足。
负载过重
map/reduce实时性很差、不适合做迭代
结论:需要扩大mapreduce框架
ResourceManager管理资源的调度和监控所有的节点使用情况等
MRAppMaster管理job和task
NodeManager(节点管理器)启动MRAppMaster,只管机器节点
每一个独立的job有一个
独立的MRAppMaster,若
出现状况只影响自己
NodeManager管理当前节点的资源,ResourceManager管理整
体资源,MRAppMaster管理各自的job,执行完毕就退出。
降低了ResoureManager的负载
若要跑spark程序只需要
有spark的MRAppMater,
就可以再hadoop上跑
spark且spark可以利用
HDFS
每个模块变得更独立