2015-12-18 69 views
0

我有四個節點通過設置運行我的火花程序--num -executeors 4, 但問題是隻有兩個運行,其他兩臺計算機不做任何計算,這裏是: Executor_ID地址.... ..Total_Task Task_Time輸入 1 slave8 88 21.5s 104MB 2 slave6 0 0 0B 3 SLAVE1 88 1分鐘99.4MB 4 SLAVE2 0 0 0B如何使執行程序使用--num-executors運行spark程序?

怎樣使運行我火花程序所有這些四個節點?

+0

您正在使用YARN? –

回答

0
  1. 執行者運行任務。在spark中,任務由數據分區預先確定。如果你有2個分區,但只有4個執行者,那麼只有2個執行者可能有工作要做。
  2. 在獨立集羣中,節點需要工作人員啓動執行程序才能運行。
  3. 將CPU和內存與執行程序相關聯。如果節點無法獲得請求的資源,它將排隊等待這些資源可用。
  4. 如果兩個節點本身具有足夠的CPU內核來完成所有工作,那麼其他節點將不會工作。數據的地點很重要,所以如果可能的話,所有的任務將被安排在一個節點上。

我懷疑你的情況,這可以通過更好地劃分你的數據來解決。更好並不總是意味着更多。這也意味着在正確的時間,並以一種可能避免一些洗牌的方式。

1

我猜你在YARN上運行。在這種情況下,您需要在capacity-scheduler.xml文件中設置

yarn.scheduler.capacity.resource-calculator=org.apache.hadoop.yarn.util.resource.DominantResourceCalculator 

。請參閱Apache Hadoop Yarn - Underutilization of cores。否則,無論您使用--num-executors標誌指定什麼,YARN都將只啓動2個執行程序。