2015-07-31 13 views
9

मैं स्पार्क और Hadoop ओएस एक्स पर स्थापित किया है मैं सफलतापूर्वक एक उदाहरण है जहां Hadoop स्थानीय रूप से भाग गया के माध्यम से काम किया, फ़ाइलें HDFS में जमा हो जाती थी और मैंअपाचे स्पार्क स्थानीय रूप से इनकार कर दिया चल दे रही कनेक्शन त्रुटि

spark-shell --master yarn-client 

और साथ चिंगारी भागा शैल के भीतर से एचडीएफएस के साथ काम किया। मुझे समस्याएं आ रही हैं, हालांकि, स्पार्क को एचडीएफएस के बिना चलाने की कोशिश कर रहा है, सिर्फ मेरी मशीन पर स्थानीय रूप से। मैं this answer को देखा, लेकिन यह सही नहीं लगता है वातावरण चर के साथ चारों ओर खिलवाड़ जब Spark documentation कहते

यह एक मशीन पर स्थानीय रूप से चलाने के लिए आसान है - आप सभी की जरूरत जावा आपके सिस्टम पथ पर स्थापित करने के लिए है, या JAVA_HOME पर्यावरण चर जावा स्थापना को इंगित करता है।

यदि मैं मूल SparkPi उदाहरण चलाता हूं तो मुझे सही आउटपुट मिलता है।

अगर मैं फिर से नमूना जावा एप्लिकेशन they provide चलाने की कोशिश, मैं उत्पादन मिलता है, लेकिन कनेक्शन के साथ इस बार इनकार कर दिया पोर्ट 9000, जो है जैसे कि यह Hadoop से कनेक्ट करने के कोशिश कर रहा है लगता है के संबंध में त्रुटियों, लेकिन मैं पता नहीं क्यों क्योंकि मैं यह निर्दिष्ट नहीं कर रहा हूं कि

$SPARK_HOME/bin/spark-submit --class "SimpleApp" --master local[4] ~/study/scala/sampleJavaApp/target/simple-project-1.0.jar 
    Exception in thread "main" java.net.ConnectException: Call From 37-2-37-10.tssg.org/10.37.2.37 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
... 
... 
... 
org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:604) 
     at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:699) 
     at org.apache.hadoop.ipc.Client$Connection.access(Client.java:367) 
     at org.apache.hadoop.ipc.Client.getConnection(Client.java:1462) 
     at org.apache.hadoop.ipc.Client.call(Client.java:1381) 
     ... 51 more 
    15/07/31 11:05:06 INFO spark.SparkContext: Invoking stop() from shutdown hook 
    15/07/31 11:05:06 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/metrics/json,null} 
... 
... 
... 
    15/07/31 11:05:06 INFO ui.SparkUI: Stopped Spark web UI at http://10.37.2.37:4040 
    15/07/31 11:05:06 INFO scheduler.DAGScheduler: Stopping DAGScheduler 
    15/07/31 11:05:06 INFO spark.MapOutputTrackerMasterEndpoint: MapOutputTrackerMasterEndpoint stopped! 
    15/07/31 11:05:06 INFO util.Utils: path = /private/var/folders/cg/vkq1ghks37lbflpdg0grq7f80000gn/T/spark-c6ba18f5-17a5-4da9-864c-509ec855cadf/blockmgr-b66cc31e-7371-472f-9886-4cd33d5ba4b1, already present as root for deletion. 
    15/07/31 11:05:06 INFO storage.MemoryStore: MemoryStore cleared 
    15/07/31 11:05:06 INFO storage.BlockManager: BlockManager stopped 
    15/07/31 11:05:06 INFO storage.BlockManagerMaster: BlockManagerMaster stopped 
    15/07/31 11:05:06 INFO scheduler.OutputCommitCoordinator$OutputCommitCoordinatorEndpoint: OutputCommitCoordinator stopped! 
    15/07/31 11:05:06 INFO spark.SparkContext: Successfully stopped SparkContext 
    15/07/31 11:05:06 INFO util.Utils: Shutdown hook called 
    15/07/31 11:05:06 INFO util.Utils: Deleting directory /private/var/folders/cg/vkq1ghks37lbflpdg0grq7f80000gn/T/spark-c6ba18f5-17a5-4da9-864c-509ec855cadf 

कोई पॉइंटर्स/स्पष्टीकरण जहां मैं गलत जा रहा हूं, इसकी सराहना की जाएगी!


अद्यतन

ऐसा लगता है कि मैं वातावरण चर HADOOP_CONF_DIR सेट कुछ समस्या आ रही है तथ्य यह है। कि निर्देशिका के अंतर्गत, मैं core-site.xml जो निम्नलिखित

<property> 
    <name>fs.default.name</name>          
    <value>hdfs://localhost:9000</value>        
</property> 

शामिल है मैं मूल्य उदा को बदलते हैं <value>hdfs://localhost:9100</value> तो जब मैं चिंगारी काम चलाने के लिए प्रयास करते हैं, कनेक्शन अस्वीकृत त्रुटि इस बदली हुई बंदरगाह

Exception in thread "main" java.net.ConnectException: Call From 37-2-37-10.tssg.org/10.37.2.37 to localhost:9100 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused 
किसी कारण से

तो को संदर्भित करता है, यह स्थानीय स्तर पर चलाने के लिए, यह HDFS से कनेक्ट करने के प्रयास कर रहा है को निर्देश के बावजूद। यदि मैं HADOOP_CONF_DIR पर्यावरण चर को हटा देता हूं, तो नौकरी ठीक काम करती है।

+0

क्या आप अपनी नौकरी के अंदर मास्टर कॉन्फ़िगरेशन भी स्थापित कर रहे हैं? – eliasah

+0

मुझे यकीन नहीं है कि आपका क्या मतलब है (यह एक संकेत हो सकता है कि यह क्यों काम नहीं कर रहा है!)। मैं सिर्फ '$ SPARK_HOME/bin/spark-submit --class "SimpleApp" कमांड चला रहा हूं --मास्टर स्थानीय [4] ~/अध्ययन/स्कैला/नमूना जावावा/लक्ष्य/सरल-परियोजना-1.0.jar' –

+0

आप कैसे हैं अपने जावा प्रोजेक्ट में अपना स्पार्ककॉन्टेक्स्ट सेट अप करना? – eliasah

उत्तर

12

अपाचे स्पार्क फ़ाइल पहुँच के लिए Hadoop क्लाइंट लाइब्रेरी का उपयोग करता है जब आप sc.textFile का उपयोग करें। यह उदाहरण के लिए hdfs:// या s3n:// पथ का उपयोग करना संभव बनाता है।आप file:/home/robocode/foo.txt के रूप में स्थानीय पथ का भी उपयोग कर सकते हैं।

यदि आप स्कीमा के बिना फ़ाइल नाम निर्दिष्ट करते हैं, तो fs.default.name का उपयोग किया जाता है। यह file: पर डिफ़ॉल्ट है, लेकिन आप इसे अपने core-site.xml में hdfs://localhost:9000 पर स्पष्ट रूप से ओवरराइड करते हैं। इसलिए यदि आप स्कीमा निर्दिष्ट नहीं करते हैं, तो यह एचडीएफएस से पढ़ने की कोशिश कर रहा है।

सरल समाधान स्कीमा निर्दिष्ट करने के लिए है:

JavaRDD<String> logData = sc.textFile("file:/home/robocode/foo.txt").cache(); 
+0

ग्रेट स्पष्टीकरण के बारे में एक और समझदार तरीका होना चाहिए, इससे हल हो गया। –

1

मुझे लगता है कि हैडोप से संबंधित उदाहरण के लिए आपके द्वारा परिभाषित पर्यावरण चर जो अभी भी आपके परीक्षण में हस्तक्षेप कर रहे हैं।

यह देखते हुए कि आप सरकारी स्पार्क जावा उदाहरण का उपयोग कर रहे:

public static void main(String[] args) { 
    String logFile = "YOUR_SPARK_HOME/README.md"; // Should be some file on your system 
    SparkConf conf = new SparkConf().setAppName("Simple Application"); 
    JavaSparkContext sc = new JavaSparkContext(conf); 
    JavaRDD<String> logData = sc.textFile(logFile).cache(); 
... 
} 

मैं explictly, मास्टर स्थापित करने के लिए के रूप में डिफ़ॉल्ट मान लिया जाता है अन्यथा सुझाव है।

SparkConf conf = new SparkConf().setMaster("local").setAppName("Simple Application") 

चेक अधिक जानकारी के लिए SparkConf doc:

+0

कहां है मैंने अभी कोशिश की आपका सुझाव, लेकिन मास्टर के साथ भी स्पष्ट रूप से सेट किया गया है, यह अभी भी 'HADOOP_CONF_DIR' सेट होने के परिणामस्वरूप एचडीएफएस के साथ संवाद करने का प्रयास कर रहा है। मुझे पता है कि मैं बस अनसेट कर सकता हूं और एनवी वैरिएबल को आवश्यकतानुसार सेट कर सकता हूं लेकिन –

1

मैं एक ही त्रुटि थी, HADOOP_CONF_DIR परिभाषित किया गया था, तो मैं बस को सेट किए बिना वातावरण चर।

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