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

最佳答案

注意:请查看检查点节点(在最新版本中不建议使用辅助名称节点)。
次要名称节点的目的是执行定期检查点。次要名称节点会定期下载当前的名称节点镜像并编辑日志文件,将其加入新镜像,然后将新镜像上传回(主要和唯一)名称节点。请参阅《用户指南》。

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

JobTracker是守护程序服务,用于在Hadoop中提交和跟踪MapReduce作业。在任何hadoop集群上仅运行一个Job Tracker进程。 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从属节点上仅运行一个Task Tracker进程。 Task Tracker在其自己的JVM进程上运行。每个TaskTracker均配置有一组插槽,这些插槽指示其可以接受的任务数。 TaskTracker启动一个单独的JVM进程来执行实际的工作(称为任务实例),这是为了确保进程失败不会导致任务跟踪器崩溃。 TaskTracker监视这些任务实例,捕获输出和退出代码。当Task实例成功完成或未成功完成时,任务跟踪器将通知JobTracker。 TaskTrackers还通常每隔几分钟就向JobTracker发送一次心跳消息,以确保JobTracker仍在运行。这些消息还会通知JobTracker可用插槽的数量,因此JobTracker可以随时了解可以委派集群工作的位置。

Namenode存储整个系统 namespace 。上次修改时间,创建时间,文件大小,所有者,权限等信息都存储在Namenode中。名称节点上的fsimage是二进制格式。使用“脱机图像查看器”以人类可读的格式转储fsimage。当文件数量巨大时,单个Namenode将无法保留所有元数据。实际上,这是HDFS的局限性之一。您可以检查旨在解决此问题的HDFS联合身份,方法是将其拆分为由不同名称节点提供服务的不同 namespace 。

08-25 10:25