当JobTracker将地图任务分配给TaskTracker时,是否需要与NameNode通信?或者它可以从InputSplit本身获取信息? 当我查看代码时,我发现InputSplits包含了BlockLocations。 JobTracker会使用此信息还是需要使用Namenode? p>
答案 0 :(得分:0)
JobTracker确实联系NameNode以获取块位置。如果作业处理的块数非常大,则此过程可能需要一段时间。
答案 1 :(得分:0)
客户端计算拆分信息,并将拆分信息写入HDFS。
您可以查看Hadoop 1.x JobSplit.SplitMetaInfo
实现的序列化也可以序列化这些位置。
jobtracker只是选择这些序列并安排它们,其中位置只是一个提示,如果插槽可用,可以更快地执行。