簡體   English   中英

Hadoop Mappers是否僅在本地執行?

[英]Are Hadoop Mappers executed only locally?

我有一種情況,文件的整個塊位於一台機器上,默認復制因子為1。

在這種情況下,如果我在我的集​​群上啟動hadoop,我覺得我的所有映射任務只能在一台機器上運行,因為塊只存在於該機器上。 這樣對嗎? Local mapper任務執行是約束還是只是優先級?
如果是,是否可以通過將塊復制到其本地磁盤來配置映射器任務也在其他計算機上運行。

第二個問題是,即使映射器任務僅在一台機器上運行,通過復制映射器的中間數據,減少器將在所有其他機器中啟動是否正確。

數據本地執行只是一個優先事項,而不是約束。 如果其他節點上有空閑插槽,Hadoop將生成非本地映射器。 您甚至可以為同時運行的相同數據塊啟動更多映射器 - 這稱為推測執行 - 完成第一次獲勝的任務,其他任務被殺死。

對於減速器 - 它們在稱為shuffle的階段通過網絡復制地圖輸出數據。

框架盡力使處理盡可能保持本地化。 但是在某些情況下可能會出現這種情況。 一個顯然是插槽不可用。 另一種情況可能是當您的InputSplit跨越多個塊並且每個塊駐留在不同的機器上時。 在這種情況下,InputSplit的另一部分將被移動到啟動此InputSplit的Mapper的節點,以便整個塊由1個Mapper處理。

Local mapper任務執行是約束還是只是優先級?

這不是一個約束。 這只是為了提高效率。 否則,將BigData從此處移動到那里以便處理它是多么低效。 這是Hadoop的基本原則之一。

如果是,是否可以通過將塊復制到其本地磁盤來配置映射器任務也在其他計算機上運行。

為什么要這么做? 如果您確實希望在同一塊的多個副本上運行Mappers,則可以將推測執行切換為true,而不是將塊從一個位置復制到另一個位置。 這將在多台機器上的同一塊上運行多個Mapper,您將通過最快的映射器獲得輸出。

第二個問題是,即使映射器任務僅在一台機器上運行,通過復制映射器的中間數據,減少器將在所有其他機器中啟動是否正確。

減速器可以在任何具有空閑插槽的節點上啟動。 不是所有機器都必然。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM