MapReduce1.x
client
- 客户端发送mr任务到集群
- 客户端的种类有很多种
- hadoop jar wordcount.jar
- hadoop jar wordcount.jar
JobTracker
- 接受客户端的mr任务
- 选择一个资源丰富的,执行对应的任务
- 并且给这个任务分配资源
- 与TaskTracker保持心跳,接受汇报信息
TaskTracker
- 保持心跳,汇报资源
- 当分配资源之后,开始在本机分配对应的资源给Task
- 并且实时监控任务的执行,并汇报
Slot(槽)
- 属于JobTracker分配的资源
- 计算能力,IO能力…
- 不管任务大小,资源是恒定的,不灵活但是好管理
Task(MapTask–ReduceTask)
- 开始按照MR的流程执行业务
- 当任务完成时,JobTracker告诉TaskTracker回收资源
缺点:
- 单点故障
- 内存扩展
- 业务瓶颈
- 只能执行MR的操作
- 如果其他框架需要运行在Hadoop上,需要独立开发自己的资源调度框架
MapReduce2.x
client
- 客户端发送mr任务到集群
- 客户端的种类有很多种
- hadoop jar wordcount.jar
- hadoop jar wordcount.jar
yarn(ResourceManager)
- 资源协调框架的管理者
- 分为主节点和备用节点(防止单点故障)
- 主备的切换基于Zookeeper进行管理
- 时刻与NodeManager保持心跳,接受NodeManager的汇报
- 汇报当前节点的资源情况
- 当有外部框架要使用资源的时候直接访问ResourceManager即可
- 如果有MR任务,先去ResourceManager申请资源,ResourceManager根据汇报分配资源
- 资源在NodeManager1,NodeManager1要负责开辟资源
- 资源在NodeManager1,NodeManager1要负责开辟资源
yarn(NodeManager)
- Yet Another Resource Negotiator(另一种资源协调者)
- 资源协调框架的执行者
- 每一个DataNode上默认有一个NodeManager
- NodeManager汇报自己的信息到ResourceManager
Container
- 2.x资源的代名词
- Container动态分配的
ApplicationMaster
- 我们本次任务的主导者
- 负责调度本次被分配的资源Container
- 当所有的节点任务全部完成,application告诉ResourceManager请求杀死当前ApplicationMaster线程
- 本次任务所有的资源都会被释放
Task(MapTask–ReduceTask)
- 开始按照MR的流程执行业务
- 当任务完成时,ApplicationMaster接收到当前节点的回馈