2012-09-11 20 views
10

के माध्यम से विंडोज़ पर हैडोप कॉन्फ़िगरेशन मैं अपने विंडोज 7 मशीन पर हैडोप को कॉन्फ़िगर करने की कोशिश कर रहा हूं। मैं नाम नोड और अन्य सेवाओं के शुरू करने के लिए कर रहा हूँ, लेकिन जैसा कि मैंने एक उदाहरण जो Hadoop पैकेज के साथ आता है (1.0.3 संस्करण) चला रहा हूँ, निम्न त्रुटि आ रहा है:सिडविन

bin/hadoop: line 320 : C:\Program: Command not found. 

मैं निम्नलिखित के साथ उदाहरण के भाग गया आदेश:

bin/hadoop jar hadoop-examples-1.0.3.jar pi 10 

मैं इस hadoop फ़ाइल जिसमें त्रुटि आ रहा है खोला और पाया कि लाइन 320 में एक पथ उत्पन्न किया जा रहा है:

JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m ${HADOOP_JAVA_PLATFORM_OPTS} org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"` 

तो मुझे लगता है कि समस्या JAVA चर में हो सकती है क्योंकि साइगविन पथ नाम के लिए अलग-अलग सम्मेलनों का उपयोग करता है। क्या किसी को भी इस समस्या का सामना करना पड़ा है या पता है कि समस्या का कारण क्या है?

उत्तर

23

त्वरित सारांश:

  • (path)/bin/hadoop तहत hadoop बैश स्क्रिप्ट वास्तव में यह में एक बग है। लिपि मानती है कि हड्डी की जरूरतों वाली किसी भी फाइल/पथ में उनमें रिक्त स्थान नहीं होंगे। खैर, विंडोज़ के लिए, उनके पास कहीं भी एक जगह होगी, क्योंकि "प्रोग्राम फाइल्स" में एक जगह है।

विवरण

यह एक मुश्किल से एक है ... मैं एक ही समस्या में पड़ गए और यह मेरे कुछ समय लिया ठीक करने के लिए।

सबसे पहले, समस्या: स्क्रिप्ट के माध्यम से पर्यावरण चर सेट करना स्केची प्राप्त कर सकता है जब रिक्त स्थान फ़ाइल पथ/नामों में शामिल होते हैं (जो इन दिनों गैर-* निक्स सिस्टम में अक्सर होता है)।

इसके बाद, वहाँ की संभावना दो स्थानों पर जहां आप समस्या को ठीक करने की जरूरत है:

  1. अपने (path)/conf/hadoop-env.sh स्क्रिप्ट में, आप JAVA_HOME स्क्रिप्ट की स्थापना की जानी चाहिए, और यह कुछ ऐसा दिखाई देगा:

    export JAVA_HOME=/cygdrive/c/"Program Files"/Java/jdk1.7.0_06 
    

    (नोट के आसपास "प्रोग्राम फ़ाइलें" उद्धरण चिह्न देखते हैं कि, इतना है कि यह एक भी तत्व के रूप में मान्यता प्राप्त है। आप यू नहीं कर सकते \ से बचने वाला चरित्र क्योंकि सिग्विन विंडोज़ के यूनिक्स पथों में कुछ फ़ाइनलिंग करता है, इसलिए \ बचने के रूप में कार्य नहीं कर सकता है।

  2. अपने (path)/bin/hadoop स्क्रिप्ट में, लाइन 320 की संभावना निम्नलिखित की तरह कुछ लिखा है:

    JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m ${HADOOP_JAVA_PLATFORM_OPTS} org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"` 
    

    इसके बजाय आप कहने के लिए इसे बदलने के लिए की आवश्यकता होगी:

    JAVA_PLATFORM=`CLASSPATH="${CLASSPATH}" "${JAVA}" -Xmx32m ${HADOOP_JAVA_PLATFORM_OPTS} org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"` 
    

    ध्यान दें कि मैं उद्धरण को शामिल किया है पर्यावरण चर के चारों ओर अंक ${CLASSPATH} और ${JAVA}। इसके चारों ओर उद्धरण चिह्न डालकर, आप कह रहे हैं कि "इस चर द्वारा निर्दिष्ट वर्णों का पूरा सेट एक स्ट्रिंग ऑब्जेक्ट माना जाना चाहिए"।


ठीक है, अब अगर आप को समझने के लिए क्यों यह हो रहा है और क्या हो रहा है परवाह, समस्या यह है कि आपके JDK संभावना "प्रोग्राम फ़ाइलें" के तहत संग्रहीत किया जाता है, या हो सकता है के तहत "प्रोग्राम फ़ाइलें (x86 है) ", जिनमें से दोनों पथ पथ के भीतर हैं। हडोप की जरूरतों के सभी अन्य पर्यावरण चर "प्रोग्राम फाइल" मार्ग के भीतर किसी भी चीज़ पर निर्भर नहीं हैं। इसलिए यही कारण है कि आप केवल एक त्रुटि को ध्वजांकित करते हुए देखते हैं। अन्य सभी पर्यावरण चर जो उद्धरण गायब हैं, उनमें बस रिक्त स्थान नहीं हैं।

+0

मैं तुमसे प्यार करता हूँ माइक: डी धन्यवाद! –

+0

@ एंटनबेलेव ओएल ... मैं कभी भी किसी भी संदेश बोर्ड से ऐसी चमकदार टिप्पणियों के लिए उपयोग नहीं किया जाता! बस यह दिखाने के लिए चला जाता है कि स्टैक एक्सचेंज पर लोगों को कितना अच्छा लगता है, मुझे लगता है। :) –

+0

मैं वास्तव में विश्वास नहीं कर सकता कि वे इसे इतना कठिन बनाते हैं। क्या यह हडोप पुजारी से अनियमित (मेरे जैसे) को दूर रखना है? मैंने कभी भी प्रोग्राम को स्थापित करने में इतना मुश्किल नहीं बताया है! –

0

इन टुकड़ों को कर रहे हैं, त्रुटि थी: hadoop.util.Platform आदेश

नहीं मिला
  • "CLASSPATH=cygpath -p "$CLASSPATH" वितरण, त्रुटि
  • "CLASSPATH=cygpath -p -w "$CLASSPATH" जोड़ा खिड़कियों ध्वज का उत्पादन किया, त्रुटि
  • "CLASSPATH=cygpath -wp "$CLASSPATH"समस्या हल हो गई उत्पादित

यह Vista पर था।