2014-10-02 12 views
9

मैं SparkConfig और SparkContext वाले एक्जिक्यूटर्स के जावा (या स्कैला) कोड राशि से कैसे कॉन्फ़िगर कर सकता हूं? मैं लगातार 2 निष्पादकों को देखता हूं। ऐसा लगता है कि spark.default.parallelism काम नहीं करता है और कुछ अलग है।स्पार्क निष्पादकों की राशि कैसे निर्धारित करें?

मुझे केवल क्लस्टर आकार के बराबर होने के लिए निष्पादकों की मात्रा निर्धारित करने की आवश्यकता है, लेकिन उनमें से केवल 2 ही हैं। मैं अपने क्लस्टर आकार को जानता हूँ। यदि यह मायने रखता है तो मैं यार्न पर चलता हूं।

उत्तर

16

ठीक है, समझ गया। निष्पादकों की संख्या वास्तव में स्पार्क संपत्ति नहीं है बल्कि चालक यार्न पर नौकरी रखने के लिए उपयोग किया जाता है। इसलिए जब मैं स्पार्कसममिट क्लास को ड्राइवर के रूप में उपयोग कर रहा हूं और इसमें उचित --num-executors पैरामीटर है जो मुझे बिल्कुल चाहिए।

अद्यतन:

कुछ नौकरियों के लिए मैं SparkSubmit दृष्टिकोण अब और पालन नहीं करते। मैं मुख्य रूप से उन अनुप्रयोगों के लिए नहीं कर सकता जहां स्पार्क जॉब केवल एप्लिकेशन घटक में से एक है (और यहां तक ​​कि वैकल्पिक भी है)। इन मामलों के लिए मैं क्लस्टर कॉन्फ़िगरेशन से जुड़े spark-defaults.conf और spark.executor.instances संपत्ति के अंदर उपयोग करता हूं। यह दृष्टिकोण क्लस्टर (डेवलपर वर्कस्टेशन, स्टेजिंग, उत्पादन) के आधार पर संसाधनों को सही तरीके से संतुलित करने की इजाजत देता है।

+0

संपत्ति spark.default.parallelism कम संचालन जैसे कम करने के लिए है, कम करने के लिए ByKey, groupBy। – Rags

5

स्पार्ककॉन्फ़ ऑब्जेक्ट पर पैरामीटर "spark.executor.instances" और "spark.executor.cores" पैरामीटर सेट करके आप इसे प्रोग्रामेटिक रूप से भी कर सकते हैं।

उदाहरण:

SparkConf conf = new SparkConf() 
     // 4 workers 
     .set("spark.executor.instances", "4") 
     // 5 cores on each workers 
     .set("spark.executor.cores", "5"); 

दूसरा पैरामीटर केवल यार्न और स्टैंडअलोन मोड के लिए है। यह एक कार्यकर्ता को एक ही कार्यकर्ता पर कई निष्पादकों को चलाने की अनुमति देता है, बशर्ते कि उस कार्यकर्ता पर पर्याप्त कोर हों।

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