GNU/Linux >> Tutoriales Linux >  >> Linux

Advertencia de Hadoop No se puede cargar la biblioteca nativa de Hadoop para su plataforma

Supongo que está ejecutando Hadoop en CentOS de 64 bits. La razón por la que vio esa advertencia es la biblioteca nativa de Hadoop $HADOOP_HOME/lib/native/libhadoop.so.1.0.0 en realidad fue compilado en 32 bits.

De todos modos, es solo una advertencia y no afectará las funcionalidades de Hadoop.

Esta es la forma si desea eliminar esta advertencia, descargue el código fuente de Hadoop y vuelva a compilar libhadoop.so.1.0.0 en el sistema de 64 bits, luego reemplace el de 32 bits.

Los pasos sobre cómo recompilar el código fuente se incluyen aquí para Ubuntu:

  • http://www.ercoppa.org/Linux-Compile-Hadoop-220-fix-Unable-to-load-native-hadoop-library.htm

Buena suerte.


Tuve el mismo problema. Se resuelve agregando las siguientes líneas en .bashrc :

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

La respuesta depende... Acabo de instalar Hadoop 2.6 desde tarball en CentOS 6.6 de 64 bits. De hecho, la instalación de Hadoop vino con una biblioteca nativa de 64 bits preconstruida. Para mi instalación, está aquí:

/opt/hadoop/lib/native/libhadoop.so.1.0.0

Y sé que es de 64 bits:

[[email protected] 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)

Desafortunadamente, pasé por alto estúpidamente la respuesta justo ahí, mirándome a la cara mientras me concentraba en "¿Esta biblioteca es de 32 bits de 64 bits?":

`GLIBC_2.14' not found (required by ./libhadoop.so.1.0.0)

Entonces, lección aprendida. De todos modos, el resto al menos me llevó a poder suprimir la advertencia. Así que continué e hice todo lo recomendado en las otras respuestas para proporcionar la ruta de la biblioteca usando la variable de entorno HADOOP_OPTS sin éxito. Así que miré el código fuente. El módulo que genera el error te dice la pista (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

Entonces, vamos aquí para ver qué hace:

http://grepcode.com/file/repo1.maven.org/maven2/com.ning/metrics.action/0.2.6/org/apache/hadoop/util/NativeCodeLoader.java/

Ah, hay un registro de nivel de depuración:activemos eso y veamos si obtenemos ayuda adicional. Esto se hace agregando la siguiente línea al archivo $HADOOP_CONF_DIR/log4j.properties:

log4j.logger.org.apache.hadoop.util.NativeCodeLoader=DEBUG

Luego ejecuté un comando que genera la advertencia original, como stop-dfs.sh, y obtuve este regalo:

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)

Y la respuesta se revela en este fragmento del mensaje de depuración (lo mismo que el comando ldd anterior 'intentó' decirme:

`GLIBC_2.14' not found (required by opt/hadoop/lib/native/libhadoop.so.1.0.0)

¿Qué versión de GLIBC tengo? Aquí hay un truco simple para averiguarlo:

[[email protected] hadoop]$ ldd --version
ldd (GNU libc) 2.12

Entonces, no puedo actualizar mi sistema operativo a 2.14. La única solución es construir las bibliotecas nativas a partir de fuentes en mi sistema operativo o suprimir la advertencia e ignorarla por ahora. Opté por suprimir la molesta advertencia por ahora (pero planeo compilar a partir de las fuentes en el futuro) comprar usando las mismas opciones de registro que usamos para obtener el mensaje de depuración, excepto que ahora, simplemente haga que sea de nivel ERROR.

log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR

Espero que esto ayude a otros a ver que un gran beneficio del software de código abierto es que puedes resolver estas cosas si sigues algunos pasos lógicos simples.


Simplemente agregue la palabra nativo a tu HADOOP_OPTS así:

export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"

PD:Gracias Searene


Linux
  1. ¡Escribe! – Aplicación de escritura sin distracciones para su productividad

  2. Cómo elegir la mejor plataforma de alojamiento en la nube para su software de análisis

  3. Cómo cargar el módulo SELinux para Oracleasm

  4. Biblioteca Bluetooth para BlueZ (Windows)

  5. No se puede cargar la biblioteca de soporte nativo JNA Elasticsearch 6.x

Cómo configurar Openbox para tu escritorio Linux

12 extensiones para tu escritorio GNOME

20 pasos para preparar tu PC para la instalación de Linux

Cómo verificar la carga de su servidor en Linux

Cómo verificar la carga de su servidor en el sistema Linux

Las mejores distribuciones de KDE Linux para su escritorio