hadoop jar命令执行

jucafojl  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(701)

我们通过hadoopjar命令提交jar文件
它击中了主节点
hadoopjar命令是否会将jar文件复制到所有从属节点并开始执行,或者是如何工作的,是谁做的?工作追踪器还是namenode?

mutmk8jj

mutmk8jj1#

“hadoopjar”命令告诉hadoop通过提供jarfile、输入路径、输出路径在集群中执行作业。jar文件包含作业配置和所有map和reduce代码。
步骤:
作业客户端将作业提交给jobtracker(jt)。在后台,它将包含config、mapper和reducer代码、输入和输出路径信息的二进制文件复制到靠近task trackers(tts)的集中区域中的hdfs。一旦tts需要使用该代码,它们就在datanode上本地下载它,这样当map和reduce任务启动时,它们就可以使用该代码在本地数据上运行。
jt向namenode查询包含数据的数据位置和数据节点名称。
有了这些信息,jt与tts对话,并通过考虑最接近数据的tts(如果它们有可用的执行槽)来创建执行计划。如果不是,则查找机架位置并发现同一机架中的所有tts都有可用的插槽。如果仍然找不到,则在任何机架/任何位置找到tts。
根据执行计划,jt向tts提交工作。tts现在支持map和reduce任务,并在数据上执行。
tts定期向jt报告进度和心跳(默认每5秒一次)。每个map和reduce任务都通过tt向jt报告其进度/完成/错误。i、 eMap器和reducer任务向tt报告,tt向jt报告。如果mr任务死亡,tts会将此报告给jt,jt会启动其他mr任务来处理错误。
一旦所有Map者完成了他们的任务,jt就通知tts让reducer运行他们的reducer执行(即run reduce()方法)
一旦所有Map器和还原器都完成,并且最终输出被写入,jt就会将其状态更新为success并通知客户机。

相关问题