面试题答案
一键面试主要组件
- JobTracker:负责接收客户端提交的MapReduce作业,管理作业生命周期,协调资源分配。它监控集群中TaskTracker的健康状况和资源使用情况。
- TaskTracker:运行在各个节点上,向JobTracker汇报自身的资源情况(如CPU、内存等),并执行由JobTracker分配的任务(Map或Reduce任务)。
- HRegionServer:HBase中负责管理和维护HBase表的Region,处理读写请求。在MapReduce执行过程中,与JobTracker和TaskTracker交互,影响任务分配。
负载均衡原理及工作流程
- 作业提交:客户端将MapReduce作业提交给JobTracker。JobTracker分析作业,根据输入数据的大小和分布,计算出需要的Map和Reduce任务数量。
- 资源汇报:TaskTracker定期向JobTracker汇报自身资源状况,如空闲的CPU核心数、可用内存量等。同时,HRegionServer也会向JobTracker反馈其管理的Region负载情况。
- 任务分配:JobTracker基于TaskTracker的资源汇报和HRegionServer的负载信息,进行任务分配。尽量将Map任务分配到存储有对应数据块(HDFS数据块)的节点上,以减少数据传输开销,这就是数据本地化原则。对于Reduce任务,JobTracker会考虑各个节点的负载均衡,将任务均匀分配到不同的TaskTracker上。如果某个节点负载过高,JobTracker会减少分配到该节点的任务数量,将任务分配到负载较低的节点。
- 动态调整:在作业执行过程中,如果某个TaskTracker出现故障或负载发生变化,JobTracker会重新分配任务。例如,若一个TaskTracker负载过高,JobTracker可能会将部分任务迁移到其他负载较低的TaskTracker上,以保证整个作业执行过程中的负载均衡,提高作业执行效率。