Hadoop Architecture Internals:使用Job和任务跟踪器

时间:2012-06-29 13:59:10

标签: java hadoop

hadoop中的作业跟踪器和任务跟踪器有什么用? namenode中存在的元数据的内容是什么? hadoop中辅助namenode的用途是什么?

2 个答案:

答案 0 :(得分:1)

注意:请查看检查点节点(在最新版本中不推荐使用辅助名称节点)。 辅助名称节点的目的是执行定期检查点。辅助名称节点定期下载当前名称 - 节点映像并编辑日志文件,将它们连接到新映像并将新映像上载回(主要和唯一)名称节点。请参阅用户指南。

因此,如果名称节点失败并且您可以在同一物理节点上重新启动它,那么就不需要关闭数据节点,只需要重新启动名称节点。如果您不能再使用旧节点,则需要将最新图像复制到其他位置。如果可用,可以在故障之前的节点上找到最新的映像;或在辅助名称节点上。后者将是没有后续编辑日志的最新检查点,也就是最近可能缺少的名称空间修改。在这种情况下,您还需要重新启动整个群集

JobTracker是用于在Hadoop中提交和跟踪MapReduce作业的守护程序服务。在任何hadoop集群上只运行一个作业跟踪器进程。 Job Tracker在其自己的JVM进程上运行。在典型的生产集群中,它在单独的机器上运行。每个从节点配置有作业跟踪器节点位置。 JobTracker是Hadoop MapReduce服务的单点故障。如果它发生故障,则所有正在运行的作业都将暂停。 Hadoop中的JobTracker执行以下操作(来自Hadoop Wiki :) 客户端应用程序将作业提交给作业跟踪器。 JobTracker与NameNode通信以确定数据的位置 JobTracker在数据处或附近找到具有可用槽的TaskTracker节点 JobTracker将工作提交给选定的TaskTracker节点。 TaskTracker节点受到监控。如果他们不经常提交心跳信号,则认为他们已经失败并且工作安排在不同的TaskTracker上。 任务失败时,TaskTracker将通知JobTracker。 JobTracker决定该做什么:它可以在其他地方重新提交作业,它可能将该特定记录标记为要避免的事情,甚至可能将TaskTracker黑名单列为不可靠。 工作完成后,JobTracker会更新其状态。

客户端应用程序可以轮询JobTracker以获取信息。

TaskTracker是集群中的从属节点守护程序,它从JobTracker接受任务(Map,Reduce和Shuffle操作)。在任何hadoop从节点上只运行一个任务跟踪器进程。任务跟踪器在其自己的JVM进程上运行。每个TaskTracker都配置了一组插槽,这些插槽指示它可以接受的任务数。 TaskTracker启动一个单独的JVM进程来执行实际工作(称为任务实例),这是为了确保进程失败不会导致任务跟踪器失效。 TaskTracker监视这些任务实例,捕获输出和退出代码。当Task实例成功完成时,任务跟踪器会通知JobTracker。 TaskTrackers也会通常每隔几分钟向JobTracker发送心跳消息,以向JobTracker保证它仍处于活动状态。这些消息还告知JobTracker可用插槽的数量,因此JobTracker可以及时了解集群工作的位置。

Namenode存储整个系统命名空间。上次修改时间,创建时间,文件大小,所有者,权限等信息存储在Namenode中。名称节点上的fsimage采用二进制格式。使用“离线图像查看器”以人类可读的格式转储fsimage。当文件数量很大时,单个Namenode将无法保留所有元数据。实际上这是HDFS的局限之一。您可以检查HDFS Federation,它旨在通过拆分由不同名称节点提供服务的不同命名空间来解决此问题。

答案 1 :(得分:1)

这是一个快速参考:

  • NameNode :管理命名空间,文件系统元数据和访问控制。每个群集中只有一个NameNode。
  • SecondaryNameNode :从NameNode下载定期检查点以获取容错。每个群集中只有一个SecondaryNameNode。
  • JobTracker :将任务分发给从属节点。每个集群中只有一个JobTracker。
  • DataNode :保存文件系统数据;每个数据节点管理其自己的本地连接存储(即节点的硬盘),并在文件系统中存储一些或所有块的副本。每个群集中都有一个或多个DataNode。如果您的群集只有一个DataNode,则无法复制文件系统数据。
  • TaskTracker :执行map和reduce任务的Slave。每个群集中都有一个或多个TaskTrackers。

Source