2016-11-30 38 views
0

我知道映射器總是執行幾個映射操作,而reducer總是執行幾個reduce操作。換句話說,mapper(reducer)和map(reduce)操作之間的映射是一對多的映射。
現在我有一個問題,是tasktracker和mapper之間的一對一或一對多的映射嗎?是一個tasktracker對應hadoop中的mapper還是reducer?

回答

2

首先,我會向你解釋一個任務跟蹤器正是:

一個的TaskTracker是接受任務的集羣中的節點 - 地圖, 減少和整理操作 - 從JobTracker的。

每個TaskTracker都配置了一組插槽,這些插槽指示它可以接受的任務數量。當JobTracker嘗試在MapReduce操作中查找某處安排任務時,它首先在承載包含數據的DataNode的同一臺服務器上查找一個空插槽,如果沒有,則會在該計算機上的一個計算機上查找空插槽相同的機架。

TaskTracker生成一個單獨的JVM進程來完成實際的工作;這是爲了確保流程失敗不會使任務跟蹤器失效。 TaskTracker監視這些產生的進程,捕獲輸出和退出代碼。當流程成功或失敗時,跟蹤器通知JobTracker。 TaskTracker通常每隔幾分鐘發送一次心跳消息給JobTracker,以確保JobTracker它仍然活着。這些消息還通知JobTracker可用插槽的數量,因此JobTracker可以及時瞭解羣集工作中可以委派的位置。

,是的,這導致我們到一個點一個任務跟蹤器做的作業服務器很多操作(實際工作,即,地圖reduce任務),所以回答你的問題會

一個(作業服務器)到很多(任務跟蹤器)關係

1

最後一行是不正確的。

糾正方法:羣集中每個DataNode有一個任務跟蹤器,並且羣集中每個NameNode只有一個作業跟蹤器,假設您位於MRV1(非YARN)Hadoop羣集(Hadoop 1。 X)。

0

在mapreduce中 - 映射器的數量取決於輸入拆分的數量。

又會有每個數據節點的一個任務服務器

在情況下,如果有多個輸入分割單個節點-的分裂(按照數據局部性優化)內將在隊列中被執行在相應的機器JVM中(默認情況下,每個節點有兩個JVM執行操作)。

考慮到上述情況,將會有任務跟蹤器與MAPPER的一對多映射。

相關問題