启动hadoop集群后,可以通过jps命令显示当前所有java进程pid的命令,也就显示了所有与Hadoop相关的进程。
主节点:
5664 SecondaryNameNode
20898 Jps
5821 ResourceManager
5439 NameNode
从节点:
21557 NodeManager
21432 DataNode
24765 Jps
下面对这5个hadoop相关进行的功能做一下记录。
- NameNode:
- 维护文件系统树及整棵树内所有的文件和目录。这些信息永久保存在本地磁盘的两个文件中:命名空间镜像文件、编辑日志文件
- 记录每个文件中各个块所在的数据节点信息,这些信息在内存中保存,每次启动系统时重建这些信息
- 负责响应客户端的 数据块位置请求 。也就是客户端想存数据,应该往哪些节点的哪些块存;客户端想取数据,应该到哪些节点取
- 接受记录在数据存取过程中,datanode节点报告过来的故障、损坏信息
- SecondaryNameNode:实现namenode容错的一种机制。定期合并编辑日志与命名空间镜像,当namenode挂掉时,可通过一定步骤进行上顶。
- DataNode:
- 根据需要存取并检索数据块
- 定期向namenode发送其存储的数据块列表
- ResourceManager:负责Job的调度:将一个任务与一个NodeManager相匹配。也就是将一个MapReduce之类的任务分配给一个从节点的NodeManager来执行。
- NodeManager:运行ResourceManager分配的任务,同时将任务进度向application master报告
下面来讲一下MapReduce 1 和MapReduce 2 的比较
MapReduce 1 中有两类守护进程控制着作业执行过程:一个jobtracker和多个tasktracker。
jobtracker 通过调度 tasktracker上运行的任务来协调所有运行在系统上的作业。
tasktracker在运行任务的同时将运行进度报告发送给jobtracker,jobtracker由此记录每项作业任务的整体进度情况。如果其中一个任务失败,jobtracker 可以在另一个 tasktracker 节点上重新调度该任务。
MapReduce 2 中引入了YARN机制,来减轻 jobtracker 的重担。
MapReduce 1 中jobtracker同时负责作业调度(就是把一个作业分配给一个tasktracker)和任务进度监督(跟踪任务,重启失败任务;记录任务流:维护计数器的计数),但在MapReduce 2中,这两块任务,分别由:ResourceManager和application master (每个作业都被分配一个application master,用来监督该作业)来承担。而MapReduce 1 中的 tasktracker 角色由MapReduce 2 中的NodeManager来充当。
MapReduce 1 | MapReduce 2 (YARN) |
---|---|
Jobtracker | ResourceManager、application master |
Tasktracker | NodeManager |
Slot | Container |