Hadoop系统在正常启动后有五个重要的JVM进程,分别是NameNode,SecondaryNameNode,DataNode,JobTracker,TaskTracker。这五个进程肩负着HDFS在存储和计算上的各项任务。
NameNode进程
NameNode只有一个,它是整个HDFS的核心。分布式文件系统的管理者。当然也是HDFS的一个单点瓶颈,如果它挂掉,HDFS就会崩溃,所以对它的保护尤为重要。secondarynamenode进程可选的,负责创建整个系统的检查点。
DataNode进程
文件存储的基本单元。每个节点运行一个。应用程序才访问文件系统时,先由NameNode提供数据的位置,然后程序去访问对应的DataNode。
JobTracker进程
1、应用程序将job提交给JobTracker;
2、JobTracker通知NameNode,让其确定数据的位置;
3、JobTracker确定TaskTacker节点,将work提交给确定好的TaskTracker;
4、TaskTracker一直被JobTracker监控着,如果不按时返回心跳信号或者主动返回失败,则认为是执行失败,将会转向其他TaskTracker;
5、当work顺利执行完毕,JobTracker更新状态;
6、应用程序可以轮询JobTracker的状态。
TaskTracker进程
task指的是Map/Reduce/Shuffle操作。
每个TaskTracker都有一个slot集来标记这个TaskTracker所能接受的task的个数。当JobTracker要分配一个task时,会在DataNode的就近节点中找一个空的slot,把task分配给对应的TaskTracker。当TaskTracker要处理一个task时,会产生一个新的进程来执行它。在执行期间不断向JobTracker发回心跳信号,执行完毕返回结果。