Jawabannya tergantung ... Saya baru saja menginstal Hadoop 2.6 dari tarball pada 64-bit CentOS 6.6. Instalasi Hadoop memang datang dengan pustaka asli 64-bit prebuilt. Untuk instal saya, ada di sini:
/opt/hadoop/lib/native/libhadoop.so.1.0.0
Dan saya tahu itu 64-bit:
[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)
Sayangnya, saya dengan bodohnya mengabaikan jawaban di sana menatap wajah saya ketika saya fokus pada, "Apakah perpustakaan ini 32 pr 64 bit?":
`GLIBC_2.14' not found (required by ./libhadoop.so.1.0.0)
Jadi, pelajaran bisa dipetik. Ngomong-ngomong, sisanya setidaknya membuatku mampu menekan peringatan itu. Jadi saya melanjutkan dan melakukan semua yang direkomendasikan dalam jawaban lain untuk menyediakan jalur pustaka menggunakan variabel lingkungan HADOOP_OPTS tanpa hasil. Jadi saya melihat kode sumbernya. Modul yang menghasilkan kesalahan memberi tahu Anda petunjuk ( util.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
Jadi, pergilah ke sini untuk melihat apa fungsinya:
http://grepcode.com/file/repo1.maven.org/maven2/com.ning/metrics.action/0.2.6/org/apache/hadoop/util/NativeCodeLoader.java/
Ah, ada beberapa level debug debug - mari kita aktifkan itu di lihat apakah kita mendapatkan bantuan tambahan. Ini dilakukan dengan menambahkan baris berikut ke $ HADOOP_CONF_DIR / file log4j.properties:
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=DEBUG
Lalu saya menjalankan perintah yang menghasilkan peringatan asli, seperti stop-dfs.sh, dan mendapatkan barang ini:
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)
Dan jawabannya terungkap dalam cuplikan pesan debug ini (hal yang sama dengan perintah ldd sebelumnya 'coba' untuk memberi tahu saya:
`GLIBC_2.14' not found (required by opt/hadoop/lib/native/libhadoop.so.1.0.0)
GLIBC versi apa yang saya miliki? Inilah trik sederhana untuk mengetahuinya:
[hadoop@VMWHADTEST01 hadoop]$ ldd --version
ldd (GNU libc) 2.12
Jadi, tidak dapat memperbarui OS saya ke 2.14. Satu-satunya solusi adalah membangun pustaka asli dari sumber di OS saya atau menekan peringatan dan abaikan saja untuk saat ini. Saya memilih untuk hanya menekan peringatan yang mengganggu untuk saat ini (tetapi berencana untuk membangun dari sumber di masa depan) membeli dengan menggunakan opsi logging yang sama yang kami gunakan untuk mendapatkan pesan debug, kecuali sekarang, hanya membuatnya tingkat KESALAHAN.
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
Saya harap ini membantu orang lain melihat bahwa manfaat besar dari perangkat lunak open source adalah Anda dapat mengetahui hal ini jika Anda mengambil beberapa langkah logis sederhana.