在将 map reduce 作业提交到 hadoop 时,我试图以编程方式确定哪些任务尝试在集群中的哪个 tasktracker 上运行。我发现我可以像这样从 JobClient 获取大部分任务数据:
jobClient.getMapTaskReports(jobID)
但不是任务尝试成功的机器的主机名。有人知道如何从任务尝试 ID 中获取主机名吗?
JobClient在提交时为您提供所谓的NetworkedJob 。它有一个名为getTaskCompletionEvents
.
这将返回一个发生的数组TaskCompletionEvent
,其中包含运行 task 的 tasktracker 的 HTTP 地址。
从那时起,您可以从 URL 解析主机。