Saat ini saya mengonfigurasi hadoop pada server yang menjalankan CentOs . Ketika saya menjalankan start-dfs.sh
atau stop-dfs.sh
, saya mendapatkan kesalahan berikut:
PERINGATAN util.NativeCodeLoader: Tidak dapat memuat pustaka-hadoop asli untuk platform Anda ... menggunakan kelas builtin-java di mana berlaku
Saya menjalankan Hadoop 2.2.0.
Melakukan pencarian online memunculkan tautan ini: http://balanceandbreath.blogspot.ca/2013/01/utilnativecodeloader-unable-to-load.html
Namun, isi /native/
direktori pada hadoop 2.x tampaknya berbeda jadi saya tidak yakin apa yang harus dilakukan.
Saya juga menambahkan dua variabel lingkungan ini di hadoop-env.sh
:
export HADOOP_OPTS = "$ HADOOP_OPTS -Djava.library.path = / usr / local / hadoop / lib /"
export HADOOP_COMMON_LIB_NATIVE_DIR = "/ usr / local / hadoop / lib / native /"
Ada ide?
Jawaban:
Saya berasumsi Anda menjalankan Hadoop pada 64bit CentOS. Alasan Anda melihat bahwa peringatan adalah pustaka Hadoop asli
$HADOOP_HOME/lib/native/libhadoop.so.1.0.0
sebenarnya dikompilasi pada 32 bit.Bagaimanapun, itu hanya peringatan, dan tidak akan memengaruhi fungsionalitas Hadoop.
Inilah caranya jika Anda ingin menghilangkan peringatan ini, unduh kode sumber Hadoop dan kompilasi ulang
libhadoop.so.1.0.0
pada sistem 64bit, lalu ganti 32bit.Langkah-langkah tentang cara mengkompilasi ulang kode sumber disertakan di sini untuk Ubuntu:
Semoga berhasil.
sumber
hadoop-common-project/hadoop-common
dan ituhadoop-hdfs-project/hadoop-hdfs
sudah cukup.Cukup tambahkan kata asli ke Anda
HADOOP_OPTS
seperti ini:PS: Terima kasih Searene
sumber
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:
Dan saya tahu itu 64-bit:
Sayangnya, saya dengan bodohnya mengabaikan jawaban di sana menatap wajah saya ketika saya fokus pada, "Apakah perpustakaan ini 32 pr 64 bit?":
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 ):
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:
Lalu saya menjalankan perintah yang menghasilkan peringatan asli, seperti stop-dfs.sh, dan mendapatkan barang ini:
Dan jawabannya terungkap dalam cuplikan pesan debug ini (hal yang sama dengan perintah ldd sebelumnya 'coba' untuk memberi tahu saya:
GLIBC versi apa yang saya miliki? Inilah trik sederhana untuk mengetahuinya:
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.
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.
sumber
Saya memiliki masalah yang sama. Itu dipecahkan dengan menambahkan baris berikut di
.bashrc
:sumber
Dalam kasus saya, setelah saya membangun hadoop di Linux mint OS 64 bit saya, saya mengganti perpustakaan asli di
hadoop/lib
. Masih ada masalah. Lalu aku menemukan hadoop yang menunjuk kehadoop/lib
tidak kehadoop/lib/native
. Jadi saya baru saja memindahkan semua konten dari perpustakaan asli ke induknya. Dan peringatan itu hilang begitu saja.sumber
Ini juga akan berfungsi:
sumber
Setelah penelitian berkelanjutan seperti yang disarankan oleh KotiI, masalah terselesaikan.
Bersulang
sumber
Bagi mereka yang menggunakan OSX dengan Hadoop diinstal melalui Homebrew, ikuti langkah-langkah ini menggantikan jalur dan versi Hadoop yang sesuai
kemudian perbarui hadoop-env.sh dengan
sumber
sumber
@zhutoulala - FWIW tautan Anda berfungsi untuk saya dengan Hadoop 2.4.0 dengan satu pengecualian, saya harus memberi tahu maven untuk tidak membangun javadocs. Saya juga menggunakan tambalan di tautan pertama untuk 2.4.0 dan bekerja dengan baik. Inilah perintah pakar yang harus saya keluarkan
Setelah membangun ini dan memindahkan perpustakaan, jangan lupa untuk memperbarui hadoop-env.sh :)
Kupikir ini mungkin membantu seseorang yang mengalami hambatan sama seperti aku
sumber
Pindahkan file perpustakaan asli yang dikompilasi ke
$HADOOP_HOME/lib
folder.Kemudian atur variabel lingkungan Anda dengan mengedit
.bashrc
filePastikan file perpustakaan asli Anda yang dikompilasi berada di
$HADOOP_HOME/lib
folder.itu harus bekerja.
sumber
sumber
Baris ini di sini:
Dari jawaban KunBetter, bekerja untuk saya. Cukup tambahkan ke file .bashrc dan muat ulang konten .bashrc
sumber
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
dan itu berhasil untuk saya.Baris ini di sini:
Dari jawaban KunBetter adalah di mana uang itu berada
sumber
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
danexport LD_LIBRARY_PATH=$HADOOP_HOME/lib/native:$LD_LIBRARY_PATH
Saya memiliki masalah yang sama dengan JDK6, saya mengubah JDK menjadi JDK8, masalah terpecahkan. Coba gunakan JDK8 !!!
sumber
Selain jawaban yang diterima @zhutoulala, berikut adalah pembaruan untuk membuatnya berfungsi dengan versi stabil terbaru hingga saat ini (2,8) pada platform ARMHF (Raspberry Pi 3 model B). Pertama saya dapat mengkonfirmasi bahwa Anda harus mengkompilasi ulang pustaka asli ke ARM 64 bit, jawaban lain di sini berdasarkan pengaturan beberapa variabel lingkungan tidak akan berfungsi. Seperti yang ditunjukkan dalam dokumentasi Hadoop, perpustakaan asli pra-dibangun adalah 32 bit.
Langkah-langkah tingkat tinggi yang diberikan dalam tautan pertama ( http://www.ercoppa.org/posts/how-to-compile-apache-hadoop-on-ubuntu-linux.html ) sudah benar. Pada url ini http://www.instructables.com/id/Native-Hadoop-260-Build-on-Pi/ Anda mendapatkan detail lebih lanjut khusus untuk Raspberry Pi, tetapi tidak untuk Hadoop versi 2.8.
Berikut indikasi saya tentang Hadoop 2.8:
Metode penambalan file CMake harus diubah. Apalagi file yang akan ditambal tidak sama. Sayangnya, tidak ada patch yang diterima pada JIRA khusus untuk 2,8. Pada URL ini ( https://issues.apache.org/jira/browse/HADOOP-9320 ) Anda harus menyalin dan menempel tambalan yang diusulkan Andreas Muttscheller pada namenode Anda:
Setelah membangun berhasil:
Dan ganti konten lib / direktori asli Hadoop Anda instal dengan konten arsip ini. Pesan peringatan saat menjalankan Hadoop harus menghilang.
sumber
Untuk menginstal Hadoop, soooooo jauh lebih mudah menginstal versi gratis dari Cloudera. Itu datang dengan GUI yang bagus yang membuatnya mudah untuk menambahkan node, tidak ada kompilasi atau mengisi dengan dependensi, ia datang dengan hal-hal seperti sarang, babi dll
http://www.cloudera.com/content/support/en/downloads.html
Langkah-langkahnya adalah: 1) Unduh 2) Jalankan 3) Buka web GUI (1.2.3.4:7180) 4) Tambahkan node tambahan di web gui (JANGAN menginstal perangkat lunak cloudera di node lain, itu melakukan semuanya untuk Anda) 5) Di dalam GUI web, buka Beranda, klik Hue dan Hue Web UI. Ini memberi Anda akses ke Sarang, Babi, Sqoop dll.
sumber
Obat terverifikasi dari posting sebelumnya:
1) Memeriksa bahwa
libhadoop.so.1.0.0
pengiriman dengan distribusi Hadoop dikompilasi untuk arsitektur mesin saya, yaitu x86_64:2) Ditambahkan
-Djava.library.path=<path>
keHADOOP_OPT
dalamhadoop-env.sh
:Ini memang membuat peringatan yang mengganggu itu hilang.
sumber
Pertama: Anda dapat memodifikasi versi glibc.CentOS menyediakan perangkat lunak yang aman secara tranditional, itu juga berarti versi yang lama seperti glibc, protobuf ...
Anda dapat membandingkan versi glibc saat ini dengan glibc yang dibutuhkan.
Kedua: Jika versi glibc saat ini sudah tua, Anda dapat memperbarui glibc. DownLoad Glibc
Jika versi glibc id saat ini benar, Anda dapat menambahkan kata asli ke HADOOP_OPTS Anda
sumber
Saya tidak menggunakan CentOS. Inilah yang saya miliki di Ubuntu 16.04.2, hadoop-2.7.3, jdk1.8.0_121. Jalankan start-dfs.sh atau stop-dfs.sh berhasil tanpa kesalahan:
Ganti / j01 / sys / jdk, / j01 / srv / hadoop dengan jalur instalasi Anda
Saya juga melakukan hal berikut untuk satu kali pengaturan di Ubuntu, yang menghilangkan kebutuhan untuk memasukkan kata sandi beberapa kali ketika menjalankan start-dfs.sh:
Ganti pengguna dengan nama pengguna Anda
sumber
Pada dasarnya, ini bukan kesalahan, itu peringatan di cluster Hadoop. Di sini kita memperbarui variabel lingkungan.
sumber