2015-11-16 16 views
5

पर यार्न क्लस्टर कॉन्फ़िगरेशन जोड़ें I spark-submit का उपयोग करने के बजाय मैं स्कैला एसबीटी एप्लिकेशन में यार्न पर स्पार्क का उपयोग करने की कोशिश कर रहा हूं।स्पार्क एप्लिकेशन

मेरे पास पहले से ही एक रिमोट यार्न क्लस्टर चल रहा है और मैं स्पार्कआर में यार्न क्लस्टर रन स्पार्क नौकरियों से कनेक्ट कर सकता हूं। लेकिन जब मैं स्कैला एप्लिकेशन में समान काम करने की कोशिश करता हूं तो यह मेरे पर्यावरण चर को यार्न कॉन्फ़िगरेशन में लोड नहीं कर सकता है और इसके बजाय डिफ़ॉल्ट यार्न पता और पोर्ट का उपयोग कर सकता है।

एसबीटी आवेदन सिर्फ एक सरल वस्तु है:

object simpleSparkApp { 
    def main(args: Array[String]): Unit = { 
    val conf = new SparkConf() 
     .setAppName("simpleSparkApp") 
     .setMaster("yarn-client") 
     .set("SPARK_HOME", "/opt/spark-1.5.1-bin-hadoop2.6") 
     .set("HADOOP_HOME", "/opt/hadoop-2.6.0") 
     .set("HADOOP_CONF_DIR", "/opt/hadoop-2.6.0/etc/hadoop") 
    val sc = new SparkContext(conf) 
    } 
} 

जब मैं IntelliJ विचार में इस एप्लिकेशन को चलाने लॉग कहते हैं:

15/11/15 18:46:05 INFO RMProxy: Connecting to ResourceManager at /0.0.0.0:8032 
15/11/15 18:46:06 INFO Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS) 
15/11/15 18:46:07 INFO Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS) 
... 

ऐसा लगता वातावरण नहीं जोड़ा जाता सही ढंग क्योंकि 0.0.0.0 है रिमोट यार्न रिसोर्स मैनेजर नोड का आईपी नहीं है और मेरा spark-env.sh है:

export JAVA_HOME="/usr/lib/jvm/ibm-java-x86_64-80" 
export HADOOP_HOME="/opt/hadoop-2.6.0" 
export HADOOP_CONF_DIR="$HADOOP_HOME/etc/hadoop" 
export SPARK_MASTER_IP="master" 

और मेरे yarn-site.xml है:

<property> 
    <name>yarn.resourcemanager.hostname</name> 
    <value>master</value> 
</property> 

कैसे मैं सही ढंग से इस एसबीटी स्पार्क आवेदन करने के लिए यार्न क्लस्टर विन्यास का वातावरण चर जोड़ सकते हैं?

अतिरिक्त जानकारी:

मेरे प्रणाली Ubuntu14.04 और SparkR कोड है कि धागा क्लस्टर से कनेक्ट कर सकते है इस तरह दिखता है:

Sys.setenv(HADOOP_HOME = "/opt/hadoop-2.6.0") 
Sys.setenv(SPARK_HOME = "/opt/spark-1.4.1-bin-hadoop2.6") 
.libPaths(c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"), .libPaths())) 
library(SparkR) 
sc <- sparkR.init(master = "yarn-client") 

उत्तर

7

इन दिनों, वहाँ करने के लिए बॉक्स समाधान का कोई बाहर है यार्न मोड के लिए स्पार्क-सबमिट उपयोग से बचें।

स्पार्क के लिये भेज: काम चलाने के लिए कॉन्फ़िगर पर्यावरण पर org.apache.spark.deploy.yarn.Client कोड चिंगारी के लिये भेज चलाने (या अपने मामले में के रूप में विन्यस्त नहीं)। यहां क्लाइंट है जो कार्य सबमिशन करता है: https://github.com/apache/spark/blob/master/yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala

हालांकि समाधान क्या है?

  1. ग्राहक व्यवहार को ओवरराइड करने के लिए एक विकल्प नहीं था के रूप में यहां पाया जा सकता है http://blog.sequenceiq.com/blog/2014/08/22/spark-submit-in-java/ इसलिए आपको अतिरिक्त env चर जोड़ सकते हैं, आदि बाद में स्पार्क यार्न ग्राहक चिंगारी पैकेज को निजी बनाया (~ 2014 के अंत)। इसलिए यदि आपके पैकेज org.apache.spark नाम है - संभवतः एक विकल्प ..

  2. चिंगारी के लिये भेज समाधान (इसके फायदे और कमियां के साथ) के शीर्ष पर बनाया गया है यहाँ वर्णित है: http://www.henningpetersen.com/post/22/running-apache-spark-jobs-from-applications

स्पार्कआर के बारे में क्या।आर, यह चिंगारी sumbit आंतरिक रूप से उपयोग करता है: https://github.com/apache/spark/blob/master/R/pkg/R/sparkR.R जब यह https://github.com/apache/spark/blob/master/R/pkg/R/client.R से launchBackend() फोन और वहाँ सभी पर्यावरण पहले से ही सेट + तर्क

+0

धन्यवाद देते हैं, मैं करने के लिए इस उम्मीद नहीं थी इतना बोझिल हो। क्या आपने मेसोस पर स्पार्क का उपयोग करने का भी प्रयास किया है? क्या यह आसान होगा क्योंकि हम मेसॉस मास्टर एड्रेस पोर्ट को स्पष्ट रूप से स्पार्क प्रदान करते हैं? – Bamqf

+0

क्षमा करें, Mesos पर जांच करने का मौका नहीं मिला है –