2015-07-11 128 views
6

我一直在閱讀有關RDD以及各種轉換如何受分區影響以及某些轉換如何影響分區本身的內容。雖然我理解這一點,但我無法將它與更大的圖像聯繫起來,以瞭解它如何適合具有多個節點的羣集。RDD,分區和節點之間的關係

分區和節點之間是否存在一對一的對應關係?我的意思是如果理想情況下每個節點有單個分區?如果不是,Spark如何確定特定RDD的多少個分區必須駐留在同一個節點上?

更具體而言,我可以認爲以下之一: -

1)所有的對於給定的RDD分區相同的節點 2)相同的RDD的所有分區可以駐留在不同節點上(但什麼是拆分的基礎?) 3)同一個節點的分區分散在整個集羣中,其中一些分佈在同一個節點上,一些分佈在不同的節點上(同樣,這個分佈的基礎是什麼?)

有人可以解釋一下,或者至少可以指點我一些具體的鏈接,這正是答案嗎?

回答

8
  • 單個RDD具有分散在多個節點的一個或多個分區,
  • 單個分區在單個節點上處理,
  • 單個節點能夠同時處理多個分區(每最佳2-4分區根據official documentation CPU)

由於星火支持分佈的可插拔資源管理的細節將取決於你使用一個(獨立,紗,Messos)。

+0

我在DataFrame上'coalesce(1)',然後是'foreachPartition',我的日誌顯示多個worker(實際上是4個)在同一個分區上迭代。這怎麼可能 ?也許是因爲它太大了? – ericbn

+0

@ericbn最有可能你看到「coalesce」之前的階段對應的任務。 – zero323

相關問題