apache spark - आवेदन_(राज्य: स्वीकृत) के लिए आवेदन रिपोर्ट स्पार्क सबमिट के लिए कभी समाप्त नहीं होती है(यार्न पर स्पार्क 1.2.0 के साथ)




apache-spark yarn (8)

इस मुद्दे को ठीक करने के तीन तरीके हैं जिन्हें हम कोशिश कर सकते हैं।

  1. अपनी मशीन पर स्पार्क प्रक्रिया की जांच करें और इसे मार दें।

कर

ps aux | grep spark

सभी प्रक्रिया आईडी को स्पार्क प्रक्रियाओं के साथ लें और उन्हें मार दें

sudo kill -9 4567 7865
  1. अपने क्लस्टर पर चल रहे स्पार्क अनुप्रयोगों की संख्या के लिए जांचें।

इसे जांचने के लिए, करें

yarn application -list

आपको इस तरह का आउटपुट मिलेगा:

Total number of applications (application-types: [] and states: [SUBMITTED, ACCEPTED, RUNNING]):1
                Application-Id      Application-Name        Application-Type          User       Queue               State         Final-State         Progress                        Tracking-URL
application_1496703976885_00567       ta da                SPARK        cloudera       default             RUNNING           UNDEFINED              20%             http://10.0.52.156:9090

एप्लिकेशन आईडी के लिए जांचें, अगर वे 1 से अधिक हैं, या 2 से अधिक हैं, तो उन्हें मार दें। आपका क्लस्टर एक ही समय में 2 से अधिक स्पार्क अनुप्रयोग नहीं चला सकता है। मैं इसके बारे में 100% निश्चित नहीं हूं, लेकिन क्लस्टर पर यदि आप दो से अधिक स्पार्क अनुप्रयोग चलाते हैं, तो यह शिकायत शुरू कर देगा। तो, उन्हें मार डालो उन्हें मारने के लिए ऐसा करें:

yarn application -kill application_1496703976885_00567
  1. अपने स्पार्क कॉन्फ़िगरेशन पैरामीटर के लिए जांचें। उदाहरण के लिए, यदि आपने अपने स्पार्क एप्लिकेशन पर अधिक एक्जिक्यूटर मेमोरी या ड्राइवर मेमोरी या एक्जिक्यूटर्स की संख्या सेट की है जो किसी समस्या का कारण बन सकती है। तो, उनमें से किसी को भी कम करें और अपने स्पार्क एप्लिकेशन को चलाएं, जो इसे हल कर सकता है।

मैं kinesis प्लस स्पार्क एप्लिकेशन चला रहा हूँ https://spark.apache.org/docs/1.2.0/streaming-kinesis-integration.html

मैं नीचे के रूप में चल रहा हूँ

ec2 उदाहरण पर आदेश:

 ./spark/bin/spark-submit --class org.apache.spark.examples.streaming.myclassname --master yarn-cluster --num-executors 2 --driver-memory 1g --executor-memory 1g --executor-cores 1  /home/hadoop/test.jar 

मैंने ईएमआर पर स्पार्क स्थापित किया है।

EMR details
Master instance group - 1   Running MASTER  m1.medium   
1

Core instance group - 2 Running CORE    m1.medium

मैं INFO नीचे जा रहा हूं और यह कभी खत्म नहीं होता है।

15/06/14 11:33:23 INFO yarn.Client: Requesting a new application from cluster with 2 NodeManagers
15/06/14 11:33:23 INFO yarn.Client: Verifying our application has not requested more than the maximum memory capability of the cluster (2048 MB per container)
15/06/14 11:33:23 INFO yarn.Client: Will allocate AM container, with 1408 MB memory including 384 MB overhead
15/06/14 11:33:23 INFO yarn.Client: Setting up container launch context for our AM
15/06/14 11:33:23 INFO yarn.Client: Preparing resources for our AM container
15/06/14 11:33:24 INFO yarn.Client: Uploading resource file:/home/hadoop/.versions/spark-1.3.1.e/lib/spark-assembly-1.3.1-hadoop2.4.0.jar -> hdfs://172.31.13.68:9000/user/hadoop/.sparkStaging/application_1434263747091_0023/spark-assembly-1.3.1-hadoop2.4.0.jar
15/06/14 11:33:29 INFO yarn.Client: Uploading resource file:/home/hadoop/test.jar -> hdfs://172.31.13.68:9000/user/hadoop/.sparkStaging/application_1434263747091_0023/test.jar
15/06/14 11:33:31 INFO yarn.Client: Setting up the launch environment for our AM container
15/06/14 11:33:31 INFO spark.SecurityManager: Changing view acls to: hadoop
15/06/14 11:33:31 INFO spark.SecurityManager: Changing modify acls to: hadoop
15/06/14 11:33:31 INFO spark.SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(hadoop); users with modify permissions: Set(hadoop)
15/06/14 11:33:31 INFO yarn.Client: Submitting application 23 to ResourceManager
15/06/14 11:33:31 INFO impl.YarnClientImpl: Submitted application application_1434263747091_0023
15/06/14 11:33:32 INFO yarn.Client: Application report for application_1434263747091_0023 (state: ACCEPTED)
15/06/14 11:33:32 INFO yarn.Client:
         client token: N/A
         diagnostics: N/A
         ApplicationMaster host: N/A
         ApplicationMaster RPC port: -1
         queue: default
         start time: 1434281611893
         final status: UNDEFINED
         tracking URL: http://172.31.13.68:9046/proxy/application_1434263747091_0023/
         user: hadoop
15/06/14 11:33:33 INFO yarn.Client: Application report for application_1434263747091_0023 (state: ACCEPTED)
15/06/14 11:33:34 INFO yarn.Client: Application report for application_1434263747091_0023 (state: ACCEPTED)
15/06/14 11:33:35 INFO yarn.Client: Application report for application_1434263747091_0023 (state: ACCEPTED)
15/06/14 11:33:36 INFO yarn.Client: Application report for application_1434263747091_0023 (state: ACCEPTED)
15/06/14 11:33:37 INFO yarn.Client: Application report for application_1434263747091_0023 (state: ACCEPTED)
15/06/14 11:33:38 INFO yarn.Client: Application report for application_1434263747091_0023 (state: ACCEPTED)
15/06/14 11:33:39 INFO yarn.Client: Application report for application_1434263747091_0023 (state: ACCEPTED)
15/06/14 11:33:40 INFO yarn.Client: Application report for application_1434263747091_0023 (state: ACCEPTED)
15/06/14 11:33:41 INFO yarn.Client: Application report for application_1434263747091_0023 (state: ACCEPTED)

क्या कोई मुझे बता सकता है कि यह क्यों काम नहीं कर रहा है?


इससे पता चलता है कि YARN आपके द्वारा सबमिट किए जा रहे नए ऐप के लिए संसाधन असाइन नहीं कर सकता है। उस कंटेनर के संसाधनों को कम करने का प्रयास करें जो आप पूछ रहे हैं ( here देखें), या कम व्यस्त क्लस्टर पर इसे आज़माएं।

कोशिश करने की एक और बात यह है कि क्या यार्न सेवा के रूप में ठीक से काम करता है या नहीं:

sudo service hadoop-yarn-nodemanager status
sudo service hadoop-yarn-resourcemanager status

जब मैंने pyspark खोल निष्पादित करने की कोशिश की तो मुझे क्लौरा क्विकस्टार्ट वीएम में एक ही समस्या का सामना करना पड़ा। मैं संसाधन संसाधन में नौकरी लॉग देखता हूं, मैं देखता हूं

17/02/18 22:20:53 ERROR yarn.ApplicationMaster: Failed to connect to driver at RM IP. 

इसका मतलब है कि नौकरी आरएम (संसाधन प्रबंधक) से कनेक्ट करने में सक्षम नहीं है क्योंकि डिफ़ॉल्ट रूप से pyspark क्लौडेरा वीएम में यार्न मोड में लॉन्च करने का प्रयास करता है।

pyspark --master local 

मेरे लिए काम किया यहां तक ​​कि आरएम ने भी इस मुद्दे को हल किया।

धन्यवाद


मुझे इस स्थिति में यह त्रुटि मिली है:

  1. मास्टर = यार्न (या यार्न-क्लाइंट)
  2. स्पार्क-सबमिट क्लस्टर के बाहर एक कंप्यूटर पर चलता है और क्लस्टर से इसका कोई मार्ग नहीं है क्योंकि यह राउटर द्वारा छिपा हुआ है

कंटेनर_1453825604297_0001_02_000001 के लिए लॉग (संसाधन प्रबंधक वेब यूआई से):

16/01/26 08:30:38 INFO yarn.ApplicationMaster: Waiting for Spark driver to be reachable.
16/01/26 08:31:41 ERROR yarn.ApplicationMaster: Failed to connect to driver at 192.168.1.180:33074, retrying ...
16/01/26 08:32:44 ERROR yarn.ApplicationMaster: Failed to connect to driver at 192.168.1.180:33074, retrying ...
16/01/26 08:32:45 ERROR yarn.ApplicationMaster: Uncaught exception: 
org.apache.spark.SparkException: Failed to connect to driver!
    at org.apache.spark.deploy.yarn.ApplicationMaster.waitForSparkDriver(ApplicationMaster.scala:484) 

मैं यार्न क्लस्टर मोड का उपयोग कर इसे काम करता हूं: मास्टर = यार्न-क्लस्टर।

एक और कंप्यूटर पर जो कि इसी तरह से कॉन्फ़िगर किया गया है, लेकिन आईपी क्लस्टर से पहुंच योग्य है, यार्न-क्लाइंट और यार्न-क्लस्टर दोनों काम।

अन्य लोगों को विभिन्न कारणों से इस त्रुटि का सामना करना पड़ सकता है, और मेरा मुद्दा यह है कि त्रुटि लॉग जांचना (टर्मिनल से नहीं देखा गया है, लेकिन इस मामले में संसाधन प्रबंधक वेब UI) लगभग हमेशा मदद करता है।


मेरे पास एक छोटा क्लस्टर था जहां संसाधन सीमित थे (~ 3 जीबी प्रति नोड)। पर्याप्त स्मृति आवंटन को पर्याप्त रूप से कम संख्या में बदलकर इस समस्या को हल किया।

से:

yarn.scheduler.minimum-allocation-mb: 1g
yarn.scheduler.increment-allocation-mb: 512m

सेवा मेरे:

yarn.scheduler.minimum-allocation-mb: 256m
yarn.scheduler.increment-allocation-mb: 256m

मेरे मामले में, मुझे कुछ पुरानी स्पार्क प्रक्रियाएं दिखाई देती हैं (जो Ctrl + Z द्वारा रुकती हैं) अभी भी चल रही हैं और उनके ऐपमास्टर्स (ड्राइवर) शायद अभी भी स्मृति पर कब्जा कर रहे हैं। तो, नए स्पार्क कमांड से नया ऐपमास्टर यर्नशेडुलर द्वारा पंजीकृत होने के लिए अनिश्चित काल तक इंतजार कर रहा है, क्योंकि spark.driver.memory संबंधित कोर नोड्स में आवंटित नहीं किया जा सकता है। यह तब भी हो सकता है जब अधिकतम संसाधन आवंटन सत्य है और यदि ड्राइवर कोर-नोड के लिए उपलब्ध अधिकतम संसाधनों का उपयोग करने के लिए सेट है।

इसलिए, मैंने उन सभी पुरानी स्पार्क क्लाइंट प्रक्रियाओं की पहचान की और उन्हें मार डाला (जो उनके ड्राइवरों को मार सकता है और स्मृति जारी कर सकता है)।

ps -aux | grep spark

hadoop    3435  1.4  3.0 3984908 473520 pts/1  Tl   Feb17   0:12  .. org.apache.spark.deploy.SparkSubmit --conf spark.driver.memory=1G --class org.apache.spark.examples.SparkPi /usr/lib/spark/lib/spark-examples.jar 10

hadoop   32630  0.9  3.0 3984908 468928 pts/1  Tl   Feb17   0:14 .. org.apache.spark.deploy.SparkSubmit --conf spark.driver.memory=1G --class org.apache.spark.examples.SparkPi /usr/lib/spark/lib/spark-examples.jar 1000

    kill -9 3435 32630

उसके बाद मैं उन संदेशों को नहीं देखता हूं।


मैंने एमएस एज़ूर क्लस्टर को अपने एचडीआईएसआईटी स्पार्क क्लस्टर में एक ही समस्या को मारा।
आखिरकार यह पता चला कि क्लस्टर ड्राइवर से बात करने में सक्षम नहीं था। मुझे लगता है कि जब आप इस डीबग लॉग प्रदान कर सकते हैं तो आप नौकरी जमा करते समय क्लाइंट मोड का इस्तेमाल करते हैं।

कारण स्पार्क निष्पादकों को ड्राइवर कार्यक्रम से बात करना क्यों है, और टीसीपी कनेक्शन को द्वि-दिशात्मक होना चाहिए। इसलिए यदि आपका ड्राइवर प्रोग्राम वीएम (ec2 इंस्टेंस) में चल रहा है जो होस्टनाम या आईपी के माध्यम से पहुंच योग्य नहीं है (आपको स्पार्क conf में निर्दिष्ट होना है, मेजबाननाम के लिए डिफ़ॉल्ट), तो आपकी स्थिति हमेशा के लिए स्वीकार की जाएगी।


यार्न-क्लस्टर के साथ चलते समय सभी एप्लिकेशन लॉगिंग और स्टडआउट असाइन किए गए यार्न एप्लिकेशन मास्टर में स्थित होंगे और स्पार्क-सबमिट में दिखाई नहीं देंगे। एप्लिकेशन को स्ट्रीम करने के दौरान आमतौर पर बाहर नहीं निकलता है। हैडोप संसाधन प्रबंधक वेब इंटरफ़ेस की जांच करें और स्पार्क वेब UI और लॉग देखें जो हडोप ui से उपलब्ध होंगी।





amazon-kinesis