2017-03-22 33 views
0

我有一個使用Spark 1.0.1的具有4個節點(每個節點有16個內核)的集羣。火花計算中的分區數量和併發任務數量

我有一個RDD,我已經重新分區,所以它有200個分區(希望增加並行性)。

當我在RDD上進行轉換(例如過濾器)時,我似乎無法在一個時間點獲得超過64個任務(4個節點上的核心總數)。通過任務,我指的是在Application Spark UI下顯示的任務數量。我試着明確地將spark.default.parallelism設置爲128(希望我會得到128個併發運行的任務),並在正在運行的應用程序的應用程序UI中驗證了這一點,但這沒有任何作用。也許,這被忽略了一個'過濾器',默認值是可用的核心總數。

我是相當新的火花,所以也許我只是失蹤或誤解的根本。任何幫助,將不勝感激。

回答

0

這是正確的行爲。每個「核心」一次只能執行一項任務,每項任務對應一個分區。如果您的羣集只有64個內核,則一次最多隻能運行64個任務。

您可以爲每個節點運行多個工作者以獲得更多的執行者。這會給你在集羣中更多的核心。但是,無論您擁有多少內核,每個內核一次只能運行一項任務。

你可以看到下面的線程的詳細信息 How does Spark paralellize slices to tasks/executors/workers?