1.4 Hadoop 1.x(了解)
• MRv1角色:
– JobTracker
• 核心,主,单点
• 调度所有的作业
• 监控整个集群的资源负载
– TaskTracker
• 从,自身节点资源管理
• 和JobTracker心跳,汇报资源,获取Task
– Client
• 作业为单位
• 规划作业计算分布
• 提交作业资源到HDFS
• 最终提交作业到JobTracker
• 弊端:
– JobTracker:负载过重,单点故障
– 资源管理与计算调度强耦合,其他计算框架需要重复实现资源管理
– 不同框架对资源不能全局管理
1.4.2 MR执行流程(扩展阅读)
一、4个独立的实体:
- 客户端:提交MapReduce作业
- jobtracker:协调作业的运行,它是一个Java应用程序,它的主类时JobTracker
- tasktracker:运行作业划分后的任务,它是Java应用程序,它的主类时TaskTracker。
- HDFS:分布式文件系统,用来在其他实体间共享作业文件。
二、具体执行流程:
- 客户端提交一个mr的jar包给JobClient(提交方式:hadoop jar …)
- JobClient通过RPC和JobTracker)进行通信,返回一个存放jar包的地址(HDFS)和jobId
-
client将运行作业所需要的资源(包括JAR文件、配置文件和计算所得的输入分片)复制到HDFS中的以作业id命名的目录下(path = hdfs上的地址 + jobId)
-
开始提交任务(任务的描述信息,不是jar, 包括jobid,jar存放的位置,配置信息等等)
-
JobTracker进行初始化任务
- 读取HDFS上的要处理的文件,开始计算输入分片,每一个分片对应一个MapperTask
- TaskTracker通过心跳机制领取任务(任务的描述信息)
- 下载所需的jar,配置文件等
- TaskTracker启动一个java child子进程,
- 用来执行具体的任务(MapperTask或ReducerTask)将结果写入到HDFS当中