2014-09-28 48 views
1

我在本地機器上運行的火花,用8個芯,我明白,我可以使用「本地[NUM_THREADS]」作爲主,並使用「NUM_THREADS」在支架來指定由火花使用的線程的數目。如何控制使用的線程/內核的數量?

然而,似乎星火經常使用比我需要更多的線程。例如,如果我只爲Spark指定一個線程,那麼通過在Linux上使用top命令,我仍然可以觀察到cpu使用率通常超過100%甚至200%,這意味着Spark實際使用了超過1個線程。

這可能是一個問題,如果我需要同時運行多個程序。我如何控制Spark嚴格使用的線程/內核數量?

+2

這不是線程的數量。這是Spark將執行的併發任務的數量(任務是RDD上某個操作的一部分)。 Spark使用其他幾個線程來處理不同的事情,例如處理通信和爲驅動程序的UI提供服務。 – vanza 2014-09-29 02:06:44

+0

感謝您的回覆!那麼是否有辦法控制Spark使用的內核/處理器的數量? – SciPioneer 2014-09-29 02:26:28

+0

不符合你想要的樣子。您可以控制併發任務的數量,但就是這樣。如果你想要更多,你將不得不使用一些操作系統級別的控制,比如Linux cgroups。 – vanza 2014-09-29 02:28:59

回答

0

Spark爲其調度程序使用一個線程,它解釋了您看到它的使用模式。如果同時啓動n線程,則會使用n+1核心。

有關詳細信息,請參閱scheduling doc