2016-05-16 9 views
14

मेरे अपाचे स्पार्क क्लस्टर पर बाहर निकलने के लिए एक आवेदन है कि मुझे दे निष्पादक समय समाप्ति के बहुत चल रहा है:स्पार्क दिल की धड़कन समय समाप्ति से भरा क्लस्टर, निष्पादकों अपने स्वयं के

10:23:30,761 ERROR ~ Lost executor 5 on slave2.cluster: Executor heartbeat timed out after 177005 ms 
10:23:30,806 ERROR ~ Lost executor 1 on slave4.cluster: Executor heartbeat timed out after 176991 ms 
10:23:30,812 ERROR ~ Lost executor 4 on slave6.cluster: Executor heartbeat timed out after 176981 ms 
10:23:30,816 ERROR ~ Lost executor 6 on slave3.cluster: Executor heartbeat timed out after 176984 ms 
10:23:30,820 ERROR ~ Lost executor 0 on slave5.cluster: Executor heartbeat timed out after 177004 ms 
10:23:30,835 ERROR ~ Lost executor 3 on slave7.cluster: Executor heartbeat timed out after 176982 ms 

लेकिन, मेरा विन्यास में मैं पुष्टि कर सकता मैं सफलतापूर्वक वृद्धि हुई निष्पादक दिल की धड़कन अंतराल: enter image description here

जब मैं EXITED के रूप में चिह्नित निष्पादकों के लॉग का दौरा (यानी: चालक उन्हें जब यह एक दिल की धड़कन नहीं मिल सका निकाला गया), ऐसा लगता है कि निष्पादकों खुद को मार डाला क्योंकि वे प्राप्त नहीं किया ड्राइवर से कोई भी कार्य:

16/05/16 10:11:26 ERROR TransportChannelHandler: Connection to /10.0.0.4:35328 has been quiet for 120000 ms while there are outstanding requests. Assuming connection is dead; please adjust spark.network.timeout if this is wrong. 
16/05/16 10:11:26 ERROR CoarseGrainedExecutorBackend: Cannot register with driver: spark://[email protected]:35328 

मैं दिल की धड़कन कैसे बंद कर सकता हूं और/या निष्पादकों को समय-समय पर रोक सकता हूं?

उत्तर

17

उत्तर सरल था। मेरे spark-defaults.conf में मैंने spark.network.timeout को उच्च मान पर सेट किया है। दिल की धड़कन अंतराल समस्या के लिए कुछ अप्रासंगिक था (हालांकि ट्यूनिंग आसान है)।

$SPARK_HOME/bin/spark-submit --conf spark.network.timeout 10000000 --class myclass.neuralnet.TrainNetSpark --master spark://master.cluster:7077 --driver-memory 30G --executor-memory 14G --num-executors 7 --executor-cores 8 --conf spark.driver.maxResultSize=4g --conf spark.executor.heartbeatInterval=10000000 path/to/my.jar 
+1

दिल की धड़कन ड्राइवर को यह बताते हैं कि निष्पादक अभी भी जीवित है और इसे प्रगति कार्यों के लिए मीट्रिक के साथ अपडेट करें। spark.executor.heartbeatInterval spark.network.timeout से काफी कम होना चाहिए - http://spark.apache.org/docs/latest/configuration.html – evgenii

+0

यह मेरे लिए काम नहीं करता है, मुझे का उपयोग करना था - conf spark.network.timeout = 10000000 – nEO

20

गुम दिल की धड़कन और निष्पादकों यार्न द्वारा हत्या किए जाने लगभग हमेशा ooms की वजह से है:

जब spark-submit का उपयोग कर रहा इस प्रकार भी समाप्ति सेट करने में सक्षम था। आपको व्यक्तिगत निष्पादकों पर लॉग का निरीक्षण करना चाहिए ("भौतिक स्मृति से परे चल रहे पाठ" को देखें)। यदि आपके पास कई निष्पादक हैं और मैन्युअल रूप से सभी लॉग का निरीक्षण करने के लिए यह बोझिल लगता है, तो मैं स्पार्क UI में अपने काम की निगरानी करने की सलाह देता हूं। जैसे ही कोई कार्य विफल हो जाता है, यह यूआई में कारण की रिपोर्ट करेगा, इसलिए इसे देखना आसान है। ध्यान दें कि कुछ कार्य गायब निष्पादकों के कारण विफलता की रिपोर्ट करेंगे जो पहले से ही मारे गए हैं, इसलिए सुनिश्चित करें कि आप प्रत्येक व्यक्तिगत असफल कार्यों के कारणों को देखते हैं।

यह भी ध्यान रखें कि ज्यादातर OOM समस्याओं बस अपने कोड में उपयुक्त स्थानों पर अपने डेटा repartitioning द्वारा जल्दी से हल किया जा सकता है (फिर से के रूप में जहां repartition के लिए एक कॉल की जरूरत हो सकता है करने के लिए संकेत के लिए स्पार्क यूआई देखो)। अन्यथा, आप स्मृति की आवश्यकता को समायोजित करने के लिए अपनी मशीनों को स्केल करना चाहेंगे।

+0

मुझे एक ही समस्या थी और 'रिपर्टिशन' ने चाल की थी। धन्यवाद –

संबंधित मुद्दे