La respuesta depende ... Acabo de instalar Hadoop 2.6 de tarball en CentOS 6.6 de 64 bits. La instalación de Hadoop realmente vino con una biblioteca nativa precompilada de 64 bits. Para mi instalación, está aquí:
/opt/hadoop/lib/native/libhadoop.so.1.0.0
Y sé que es de 64 bits:
[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)
Desafortunadamente, estúpidamente pasé por alto la respuesta allí mismo mirándome a la cara mientras me enfocaba en "¿Es esta biblioteca 32 pr 64 bit?":
`GLIBC_2.14' not found (required by ./libhadoop.so.1.0.0)
Entonces, la 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 en vano. Así que miré el código fuente. El módulo que genera el error le 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, fuera de 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 algunos registros de nivel de depuración. Vamos a ver 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 descubrir:
[hadoop@VMWHADTEST01 hadoop]$ ldd --version
ldd (GNU libc) 2.12
Por lo tanto, no puedo actualizar mi sistema operativo a 2.14. La única solución es construir las bibliotecas nativas a partir de las fuentes en mi sistema operativo o suprimir la advertencia e ignorarla por ahora. Opté por suprimir la advertencia molesta por ahora (pero planeo construir desde fuentes en el futuro) comprar usando las mismas opciones de registro que usamos para obtener el mensaje de depuración, excepto ahora, solo haga que sea 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 esto si sigues algunos pasos lógicos simples.