जवाब निर्भर करता है ... मैंने 64-बिट CentOS 6.6 पर टारबॉल से सिर्फ Hadoop 2.6 स्थापित किया। Hadoop स्थापित वास्तव में एक पूर्वनिर्मित 64-बिट देशी पुस्तकालय के साथ आया था। मेरी स्थापना के लिए, यह यहाँ है:
/opt/hadoop/lib/native/libhadoop.so.1.0.0
और मुझे पता है कि यह 64-बिट है:
[hadoop@VMWHADTEST01 native]$ ldd libhadoop.so.1.0.0
./libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./libhadoop.so.1.0.0)
linux-vdso.so.1 => (0x00007fff43510000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f9be553a000)
libc.so.6 => /lib64/libc.so.6 (0x00007f9be51a5000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9be5966000)
दुर्भाग्य से, मैंने बेवकूफी से उस जवाब को अनदेखा कर दिया, जिसमें वह मुझे घूर रहा था, क्योंकि मैं इस पर ध्यान केंद्रित कर रहा था, "क्या यह लाइब्रेरी 64 पीआर बिट है?":
`GLIBC_2.14' not found (required by ./libhadoop.so.1.0.0)
तो, सबक सीखा। वैसे भी, बाकी लोगों ने कम से कम मुझे चेतावनी को दबाने में सक्षम होने के लिए प्रेरित किया। इसलिए मैंने जारी रखा और HADOOP_OPTS पर्यावरण चर का उपयोग करने के लिए पुस्तकालय पथ प्रदान करने के लिए अन्य उत्तरों में अनुशंसित सब कुछ किया, कोई फायदा नहीं हुआ। इसलिए मैंने सोर्स कोड देखा। मॉड्यूल जो त्रुटि उत्पन्न करता है वह आपको संकेत बताता है ( use.NativeCodeLoader ):
15/06/18 18:59:23 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
इसलिए, यह देखने के लिए यहां क्लिक करें कि यह क्या करता है:
http://grepcode.com/file/repo1.maven.org/maven2/com.ning/metrics.action/0.2.6/org/apache/hadoop/util/NativeCodeLoader.java/
आह, कुछ डिबग लेवल लॉगिंग है - आइए इसे देखें कि क्या हमें कुछ अतिरिक्त मदद मिलती है। यह $ HADOOP_CONF_DIR / log4j.properties फ़ाइल में निम्न पंक्ति जोड़कर किया जाता है:
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=DEBUG
फिर मैंने एक कमांड चलाई, जो मूल चेतावनी को रोकती है, जैसे- stops.sh, और यह गुडी मिली:
15/06/18 19:05:19 DEBUG util.NativeCodeLoader: Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: /opt/hadoop/lib/native/libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/hadoop/lib/native/libhadoop.so.1.0.0)
और जवाब डिबग संदेश के इस स्निपेट में पता चला है (वही बात जो पिछले ldd कमांड ने "बताने की कोशिश की":
`GLIBC_2.14' not found (required by opt/hadoop/lib/native/libhadoop.so.1.0.0)
मेरे पास GLIBC का कौन सा संस्करण है? यहां जानिए आसान ट्रिक:
[hadoop@VMWHADTEST01 hadoop]$ ldd --version
ldd (GNU libc) 2.12
इसलिए, मेरे OS को 2.14 में अपडेट नहीं कर सकता। केवल समाधान मेरे ओएस पर स्रोतों से देशी पुस्तकालयों का निर्माण करना है या चेतावनी को दबा देना है और अभी के लिए इसे अनदेखा करें। मैंने अभी के लिए कष्टप्रद चेतावनी को दबाने का विकल्प चुना (लेकिन भविष्य में स्रोतों से निर्माण की योजना बनाएं) उसी लॉगिंग विकल्प का उपयोग करके खरीदें, जिसे हम डिबग संदेश प्राप्त करने के लिए उपयोग करते थे, अब के अलावा, बस इसे ERROR स्तर बनाते हैं।
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
मुझे उम्मीद है कि यह दूसरों को यह देखने में मदद करता है कि ओपन सोर्स सॉफ़्टवेयर का एक बड़ा लाभ यह है कि यदि आप कुछ सरल तार्किक कदम उठाते हैं तो आप इस सामान का पता लगा सकते हैं।