हडूप बाइनरी पथ में बाइनरीटाइल बाइनरी का पता लगाने में विफल


108

लेटेस्ट हडूप -२.२ रिलीज के लिए नामेनोड शुरू करते समय मुझे निम्न त्रुटि हो रही है। मुझे हडूप बिन फ़ोल्डर में विंडुटिल्स एक्सई फ़ाइल नहीं मिली। मैंने आज्ञाओं के नीचे प्रयास किया

$ bin/hdfs namenode -format
$ sbin/yarn-daemon.sh start resourcemanager

ERROR [main] util.Shell (Shell.java:getWinUtilsPath(303)) - Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
    at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)
    at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293)
    at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)
    at org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.main(ResourceManager.java:863)


मैं उस त्रुटि संदेश से छुटकारा पाने की कोशिश कर रहा हूँ -Dhadoop.home.dir को एक सार्थक मूल्य। अब मुझे कुछ ऐसा मिल रहा है (चर नाम से स्थानीय पथ): निष्पादन योग्य $ {HADOOP_HOME} \ bin \ winutils.exe को Hadoop बायनेरिज़ में ढूँढ नहीं सका। और क्या लगता है: चर सेट करना द्विआधारी प्रकट नहीं हुआ। इसके अलावा प्राथमिकता ERROR गलत है, क्योंकि आवेदन जारी रहता है। मेरी आँखों में जो हाडोप 2.2.0 में एक बग है।
हिरण

इसके लिए एक (आज के अनुसार खुला) जीरा है
रेने नफेनेगर


1
कृपया प्रसाद डी। द्वारा दिए गए उत्तर को स्वीकार करें। उन्होंने रेडीमेड फाइलों का उपयोग करने के लिए प्रदान किया है; इस प्रकार प्रयासों से बचना।
कौशिक लेले

जवाबों:


96

सरल समाधान: इसे यहां से डाउनलोड करें और इसमें जोड़ें$HADOOP_HOME/bin

( स्रोत )

महत्वपूर्ण अद्यतन:

के लिए Hadoop-2.6.0 आप से बाइनरी डाउनलोड कर सकते हैं टाइटस बारिक ब्लॉग >>

मुझे न केवल HADOOP_HOMEनिकाले गए निर्देशिका को इंगित करने की आवश्यकता है [path], बल्कि -Djava.library.path=[path]\binमूल देयताओं (डीएल) को लोड करने के लिए सिस्टम संपत्ति भी प्रदान करना है।


यह hdfs को शुरू करने में मदद करता है, लेकिन जब मैं एक पाठ फ़ाइल को hdfs में डालने की कोशिश करता हूं तो यह थ्रेड में मुख्य अपवाद देता है "java.lang.UnsatisfiedLinkError: org.apache.hadoop.util .ative.CanCrc32.nativeComputeChunkedSumsBy TeArray (II) / lang / स्ट्रिंग; JZ) V
कौशिक लेले

यह आंशिक रूप से मेरे उत्तर की नकल है। उत्तर में उल्लिखित डाउनलोड और स्रोत दोनों ही मेरे ब्लॉग के लिंक हैं।
अभिजीत

1
यह Hadoop 2.7.3 के साथ भी काम करता प्रतीत होता है। या कोई मुद्दा होगा? 1) उपरोक्त पेज से डाउनलोड करें। tar xfvz जो एक Hadoop 2.6 वितरण देता है। फिर 2.73 \ बिन निर्देशिका में bin \ winutlis.exe कॉपी करें। तुरन्त, यह काम करता है। अब तक - कम से कम।
रिचमिस्टर

28

यदि आप स्पार्क के साथ स्व-निहित स्थानीय एप्लिकेशन चलाते समय इस समस्या का सामना करते हैं (यानी, स्पार्क-असेंबली-एक्सएक्सएक्स-हडक्सएक्सएक्सएक्सएक्सएक्स या प्रोजेक्ट के लिए मावेन निर्भरता को जोड़ने के बाद), तो एक सरल समाधान विंडुटिल्स डालना होगा। से यहाँ ) में "C: \ \ बिन winutil"। फिर आप कोड में निम्नलिखित पंक्ति जोड़कर हैडूप होम निर्देशिका में winutils.exe जोड़ सकते हैं:

System.setProperty("hadoop.home.dir", "c:\\\winutil\\\")

स्रोत: यहां क्लिक करें


मेरे लिए यह विंडुटिल्स सामान को अंदर डालने के लिए पर्याप्त था hadoop/bin/bin/। तो बस विंडोपिल binफ़ोल्डर को हैडूप के binफ़ोल्डर में कॉपी करें । ( HADOOP_HOMEenv vars में सेट किया गया है)
holzkohlengrill

+1 निर्देशिका पथ में एक बहुत अधिक स्लैश है, इसलिए मैं इसे यहाँ खुद के लिए छोड़ रहा हूँ:System.setProperty("hadoop.home.dir", "c:\\winutil\\")
Emragins

27

अगर हम सीधे Apache Hadoop 2.2.0 रिलीज़ के बाइनरी डिस्ट्रीब्यूशन को लेते हैं और इसे Microsoft विंडोज पर चलाने की कोशिश करते हैं, तो हम ERROR यूज़ का सामना करेंगे। हाइप बाइनरी पाथ में विंडुटिल बाइनरी का पता लगाने में विफल।

Apache Hadoop 2.2.0 रिलीज के द्विआधारी वितरण में कुछ विंडोज़ देशी घटक (जैसे winutils.exe, hadoop.dll आदि) शामिल नहीं हैं। विंडोज पर Hadoop चलाने के लिए ये (वैकल्पिक नहीं) आवश्यक हैं।

इसलिए आपको हडूप के स्रोत वितरण के अंदर स्थित "BUILD.txt" फ़ाइल के बाद स्रोत कोड से हडूप के मूल निवासी द्विआधारी वितरण का निर्माण करने की आवश्यकता है। आप स्क्रीन शॉट के साथ कदम से कदम गाइड के लिए निम्न पदों का पालन कर सकते हैं

Microsoft Windows OS में Apache Hadoop 2.2.0 का निर्माण, इंस्टॉल, कॉन्फ़िगर और रन करें

त्रुटि का उपयोग करें: हडप बाइनरी पथ में विंडुटिल बाइनरी का पता लगाने में विफल


2
हाय अभिजीत। क्या आपने अपने निर्देशों का पालन किया है? Hadoop Windows पर समर्थित नहीं है। वास्तव में यह केवल विंडोज सर्वर के कुछ संस्करणों पर समर्थित है। यह Microsoft और HortonWorks द्वारा बहुत घटिया है।
जवदाबा

2
यह दो साल पहले और उस समय बहुत (बहुत!) सच था। मैंने एक सम्मेलन में सिर्फ दो सप्ताह पहले हॉर्टोनवर्क इंजीनियरों के साथ सीधे सत्यापित किया था।
२०:२० पर जावदबा

18

कथन java.io.IOException: निष्पादन योग्य null \ bin \ winutils.exe का पता नहीं लगा सका

बताते हैं कि पर्यावरण चर को विस्तारित या प्रतिस्थापित करने पर अशक्त प्राप्त होता है। यदि आप शैल को देखते हैं। सामान्य पैकेज में जावा। आप पाएंगे कि HADOOP_HOME वैरिएबल सेट नहीं हो रहा है और आप इसके स्थान पर नल प्राप्त कर रहे हैं और इसलिए त्रुटि।

तो, HADOOP_HOME को इसके लिए ठीक से या वैरिएबल hadoop.home.dir प्रॉपर्टी को सेट करना होगा।

उम्मीद है की यह मदद करेगा।

धन्यवाद, कमलेश्वर


1
किस कॉन्फ़िगरेशन फ़ाइल पर हमें hadoop.home.dir गुण (उदा। Hdfs-site.xml, core-site.xml) सेट करने की आवश्यकता है?
तुषार सार्दे

4
System.setProperty ("hadoop.home.dir", "C: \\ winutil \\"); संदर्भ: stackoverflow.com/a/33610936/3110474
हिमांशु भंडारी

यदि आप Windows का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आप किसी भी पथ को मान के रूप में लिखते समय डबल बैकस्लैश का उपयोग करते हैं।
ऋषिरीच

12

Winutils.exe SPARK के लिए शेल कमांड चलाने के लिए उपयोग किया जाता है। जब आपको Hadoop को स्थापित किए बिना स्पार्क को चलाने की आवश्यकता है, तो आपको इस फ़ाइल की आवश्यकता है।

चरण इस प्रकार हैं:

  1. Hadut 2.7.1 के लिए निम्न स्थान से winutils.exe डाउनलोड करें। https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin [नोट: यदि आप अलग-अलग हैडॉप संस्करण का उपयोग कर रहे हैं तो कृपया डाउनलोड करें ऊपर बताए गए स्थान से GITHUB पर संबंधित हडूप संस्करण फ़ोल्डर से विंडुटिल।]

  2. अब, C: \ ड्राइव में एक फ़ोल्डर 'winutils' बनाएं। अब फ़ोल्डर 'winutils' के अंदर एक फ़ोल्डर 'bin' बनाएं और उस फ़ोल्डर में winutils.exe कॉपी करें। तो winutils.exe का स्थान C: \ winutils \ bin \ winutils.exe होगा

  3. अब, पर्यावरण चर खोलें और HADOOP_HOME = C: \ winutils सेट करें [नोट: कृपया HADOOP_HOME में \ bin न जोड़ें और पथ में HADOOP_HOME सेट करने की आवश्यकता नहीं है]

आपकी समस्या का समाधान होना चाहिए !!


11

मैं सिर्फ ग्रहण के साथ काम करते हुए इस मुद्दे पर भाग गया। मेरे मामले में, मेरे पास सही Hadoop संस्करण डाउनलोड किया गया था (hadoop-2.5.0-cdh5.3.0.tgz), मैंने सामग्री निकाली और इसे सीधे अपने C ड्राइव में रखा। फिर मैं गया

ग्रहण-> डिबग / रन कॉन्फ़िगरेशन -> पर्यावरण (टैब) -> और जोड़ा

चर: HADOOP_HOME

मान: C: \ hadoop-2.5.0-cdh5.3.0



3

Pyspark में, लाइनों के नीचे Pycharm का उपयोग करके स्थानीय स्पार्क एप्लिकेशन को चलाने के लिए

os.environ['HADOOP_HOME'] = "C:\\winutils"
print os.environ['HADOOP_HOME']

2

hadut से संबंधित कमांड करने के लिए hadut के लिए winutils.exe आवश्यक है। कृपया हूप-आम -२.२.० ज़िप फ़ाइल डाउनलोड करें। winutils.exe बिन फ़ोल्डर में पाया जा सकता है। ज़िप फ़ाइल को निकालें और इसे स्थानीय हडॉप / बिन फ़ोल्डर में कॉपी करें।


2

मैं उसी समस्या का सामना कर रहा था। निकाला जा रहा है bin\HADOOP_HOME पथ से मेरे लिए यह हल किया। HADOOP_HOME चर के लिए पथ कुछ इस तरह दिखना चाहिए।

C:\dev\hadoop2.6\

सिस्टम रीस्टार्ट की जरूरत हो सकती है। मेरे मामले में, आईडीई को पुनरारंभ करना पर्याप्त था।


2

समस्या को हल करने के लिए विंडोज़ में HADOOP_HOME चर सेट करें ।

आप इसमें उत्तर पा सकते हैं org/apache/hadoop/hadoop-common/2.2.0/hadoop-common-2.2.0-sources.jar!/org/apache/hadoop/util/Shell.java:

से IOException

  public static final String getQualifiedBinPath(String executable) 
  throws IOException {
    // construct hadoop bin path to the specified executable
    String fullExeName = HADOOP_HOME_DIR + File.separator + "bin" 
      + File.separator + executable;
    File exeFile = new File(fullExeName);
    if (!exeFile.exists()) {
      throw new IOException("Could not locate executable " + fullExeName
        + " in the Hadoop binaries.");
    }
    return exeFile.getCanonicalPath();
  }

HADOOP_HOME_DIR से

// first check the Dflag hadoop.home.dir with JVM scope
String home = System.getProperty("hadoop.home.dir");
// fall back to the system/user-global env variable
if (home == null) {
  home = System.getenv("HADOOP_HOME");
}


1

मुझे विंडोज़ में वही मुद्दा मिल रहा था। मैंने इसे ठीक कर लिया

  • लिंक से डाउनलोडिंग हूप-कॉमन-2.2.0-बिन-मास्टर ।
  • पर्यावरण चर में एक उपयोगकर्ता चर HADOOP_HOME बनाएं और मूल्य के रूप में हडूप-सामान्य बिन निर्देशिका का मार्ग निर्दिष्ट करें।
  • आप इसे cmd में hadoop चलाकर सत्यापित कर सकते हैं।
  • IDE को पुनरारंभ करें और इसे चलाएँ।

1

हडूप फ़ोल्डर के वांछित संस्करण को डाउनलोड करें (यदि आप विंडोज पर स्पार्क स्थापित कर रहे हैं तो हडूप संस्करण जिसके लिए जिप के रूप में इस लिंक से आपके लिए स्पार्क बनाया गया है) ।

वांछित निर्देशिका के लिए ज़िप निकालें। आपको डाउनलोड हडूप के फ़ोल्डर में समाहित सभी फाइलों को सम्‍मिलित करने के लिए फॉर्म की डायरेक्टरी होनी चाहिए hadoop\bin( hadoop\binयदि आप चाहें तो ऐसी डायरेक्टरी स्ट्रक्चर बनाएं ) । इसमें winutil.exe के अलावा कई फाइलें जैसे कि hdfs.dll, hadoop.dll आदि शामिल होंगी।binbin

अब पर्यावरण चर बनाएं HADOOP_HOME और इसे सेट करें <path-to-hadoop-folder>\hadoop। फिर जोड़ने ;%HADOOP_HOME%\bin; के लिए PATHवातावरण चर।

एक "नया कमांड प्रॉम्प्ट" खोलें और अपने कमांड को पुन: निर्देशित करें।


यह मेरे लिए काम करता है, और बिन निर्देशिका के बजाय HADOOP_HOME को इंगित करने के बजाय विकल्प (इसके बजाय यह माता-पिता) नहीं था।
फिलवॉक

0

मैंने "hbase-1.3.0" और "hadoop-2.7.3" संस्करणों का उपयोग किया। HADOOP_HOME पर्यावरण चर सेट करना और HADOOP_HOME / bin फ़ोल्डर के अंतर्गत 'winutils.exe' फ़ाइल की प्रतिलिपि बनाना विंडोज़ ओएस पर समस्या का समाधान करता है। हडूप के स्थापना फ़ोल्डर में HADOOP_HOME वातावरण सेट करने का ध्यान रखें (इन संस्करणों के लिए बिन फ़ोल्डर आवश्यक नहीं है)। इसके अतिरिक्त मैंने linux os कार्यक्षमता (जहाँ तक हो सके) को निपटाने के लिए क्रॉस प्लेटफ़ॉर्म टूल cygwin का उपयोग करना पसंद किया क्योंकि Hbase टीम linux / unix env की सलाह देती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.