2016-03-29 92 views
1
殺死星火應用主

我運行電子病歷EMR-4.3.0的火花應用與1名碩士和4個節點紗線保持對EMR

他們每個人都有5GB的內存和2個內核。

以下是我的火花提交選項

--class com.mobi.vserv.driver.Query5kPids1
--num執行人4
--executor-4G內存
- 執行-芯2
--driver-4G內存

但我不斷收到以下錯誤

ERROR executor.CoarseGrainedExecutorBackend:Driver 10.225.19.144:56334 disassociated!關機。

最後紗害死應用主

錯誤ApplicationMaster:接收信號15:SIGTERM

1)我可以進一步提高NUM-執行者和執行我的火花提交選項-cores。

2)我在Perfomance Graph中只看到2個節點,CPU的利用率高於50%,而另外2個節點低於5%。 3)有趣的是,我在Spark-submit中給出了相同的配置,並且在2個節點和1個主節點上運行了相同的應用程序,並且應用程序成功運行。那麼這個行爲有4個節點的原因是什麼

+0

您是否找到解決方案? – halil

回答

0

當用紗線運行spark時,手動強制執行程序實例的數量永遠不是好事,請改用「spark.dynamicAllocation.enabled = true」。

這樣火花就會禮貌地詢問紗線,如果紗線可以有更多的資源運行,如果紗線有,它會授予它。

要找出場景的根本原因,您需要查看紗線的應用ui(namenode上的默認端口8088)有多少內存紗線。 由於您正在爲每個執行器指定自己的內存,因此yarn只能分配該大小的實例,而且yarn還必須爲下一個任務預留一組vCore和Memory reserve。

如果紗線有問題,您可以使用「yarn -applicationId app_name_id」查找紗線上的應用程序日誌。

+0

嗨Abhishek謝謝你的答案,所以你只是說只給Spark-dynamicicAllocation.enabled = true爲火花提交,執行器內存和驅動程序內存呢?請回答。 –

+0

您應該明確指定執行程序,驅動程序,主設備和內存的內核數量。但是對於執行者來說,你必須知道,什麼核心/內存組合最適合你的集羣。一般情況下1 GB內存對1核心的工作很好。儘量不要讓執行者設置大或非常小。你可以通過http://blog.cloudera。com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/ –

+0

另外你說過,1個內核爲1個內核,我猜你的意思是1個Executor? –