2016-01-24 56 views
0

我想知道在調度任務時用於使Spark數據局部性感知的算法嗎? 我們是否需要像YARN這樣的集羣管理器才能這樣做?如果是,那麼計劃任務的底層算法是什麼?Apache Spark數據局部性算法

回答

0

這取決於。如果您的數據採用的是鍵值對的形式,而不是Spark通過分區處理器處理數據局部性(通常是通過散列鍵,但您可以定義自定義分區或使用RangePartitioner根據您的數據優化您的本地)。如果你的數據沒有被賦予一個密鑰,那麼通常它會保持每個文件的數據(如果你沒有大文件,這可能會有問題,因爲你可能不是以最佳並行性工作)。如果您的數據分佈過於分散或過於本地化,您可以分別使用重新分區(numPartitions)和合並(numPartitions)來優化您要使用的分區數量。

下面是如何創建一個自定義分區的例子:

How to Define Custom partitioner for Spark RDDs of equally sized partition where each partition has equal number of elements?

+0

是否有使用火花來優化它的任何特定的算法? – openArrow

+0

我現在意識到,您在系統級別要求更多,而不是程序優化負載平衡的實際流程。這個頁面應該有你正在尋找的內容http://spark.apache.org/docs/latest/job-scheduling.html#scheduling-within-an-application –