2017-08-29 82 views
0

我正在從網關啓動紗線羣集模式下的spark應用程序(2.1.0),其選項爲--master yarn --deploy-mode cluster。但是,我看到網關上的​​啓動的進程仍在本地創建數百個線程。我預計線程將在工作節點上創建,而不是在網關中,因爲集羣模式已激活。羣集模式由日誌確認。爲什麼會在網關中啓動數百個線程?Spark羣集模式和線程

PS:我正在使用運行Hadoop 2.6.0的加密羣集。

+0

我在Cloudera 5.6.0上運行(hadoop 2.6.0) – pgrandjean

+0

編輯添加更多詳細信息。 – pgrandjean

回答

1

您可能遇到此處報告的問題https://issues.apache.org/jira/browse/HDFS-7718。此問題似乎影響了我們在我公司的Cloudera羣集上啓用了kerberos,使用cluster部署模式減少了啓動節點​​上的資源消耗。我們會看到,推出從我們的網關節點幾星火作業會導致類似的錯誤:

java.lang.OutOfMemoryError: Unable to create new native thread 

要調查,如果這確實是影響你,嘗試對紗線的應用掌握JVM啓動jstack,並瞭解問題你的線程看起來像。如果您看到很多線程具有以下堆棧跟蹤:

"Truststore reloader thread" daemon prio=10 tid=0x00007fd1a5fa4000 nid=0x46f5 waiting on condition [0x00007fd086eed000] 
    java.lang.Thread.State: TIMED_WAITING (sleeping) 
    at java.lang.Thread.sleep(Native Method) 
    at org.apache.hadoop.security.ssl.ReloadingX509TrustManager.run(ReloadingX509TrustManager.java:189) 
    at java.lang.Thread.run(Thread.java:745) 

您非常有資格。

在我們的案例中,當在我們的安全集羣中使用spark.yarn.jars時,我們的ApplicationMaster將每增加一個新的jar分析緩存在HDFS中時使用的線程數量增加1。每個新線程都有上述的堆棧跟蹤。在我們的例子中,我們有hdfs.DFSClient實例創建一個新的KMSClientProvider,創建一個新的ReloadingX509TrustManager,創建新的線程,每個緩存的jar一個。一個簡單的解決方法,爲我們工作是避免使用spark.yarn.jars

爲了完整起見,您可能還想看看這個問題https://issues.apache.org/jira/browse/HADOOP-11368

相關問題