A resposta depende ... Acabei de instalar o Hadoop 2.6 do tarball no CentOS 6.6 de 64 bits. A instalação do Hadoop realmente veio com uma biblioteca nativa pré-construída de 64 bits. Para minha instalação, está aqui:
/opt/hadoop/lib/native/libhadoop.so.1.0.0
E eu sei que é 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)
Infelizmente, estupidamente ignorei a resposta ali mesmo, me encarando quando me concentrei em "Esta biblioteca é de 32 a 64 bits?":
`GLIBC_2.14' not found (required by ./libhadoop.so.1.0.0)
Então, lição aprendida. Enfim, o resto pelo menos me levou a ser capaz de suprimir o aviso. Portanto, continuei e fiz tudo o que foi recomendado nas outras respostas para fornecer o caminho da biblioteca usando a variável de ambiente HADOOP_OPTS sem sucesso. Então eu olhei o código fonte. O módulo que gera o erro informa a dica ( 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
Então, vamos aqui para ver o que ele faz:
http://grepcode.com/file/repo1.maven.org/maven2/com.ning/metrics.action/0.2.6/org/apache/hadoop/util/NativeCodeLoader.java/
Ah, existe algum log no nível de depuração - vamos ativar isso para ver se obtemos alguma ajuda adicional. Isso é feito adicionando a seguinte linha ao arquivo $ HADOOP_CONF_DIR / log4j.properties:
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=DEBUG
Em seguida, executei um comando que gera o aviso original, como stop-dfs.sh, e recebi o presente:
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)
E a resposta é revelada neste trecho da mensagem de depuração (a mesma coisa que o comando ldd anterior 'tentou' me dizer:
`GLIBC_2.14' not found (required by opt/hadoop/lib/native/libhadoop.so.1.0.0)
Qual versão do GLIBC eu tenho? Aqui está um truque simples para descobrir:
[hadoop@VMWHADTEST01 hadoop]$ ldd --version
ldd (GNU libc) 2.12
Portanto, não consigo atualizar meu sistema operacional para 2.14. A única solução é criar as bibliotecas nativas a partir de fontes no meu sistema operacional ou suprimir o aviso e ignorá-lo por enquanto. Optei por apenas suprimir o aviso irritante por enquanto (mas planejo construir a partir de fontes no futuro) comprar usando as mesmas opções de log que usamos para obter a mensagem de depuração, exceto agora, basta torná-la no nível de ERRO.
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
Espero que isso ajude outras pessoas a ver que um grande benefício do software de código aberto é que você pode descobrir isso se seguir algumas etapas lógicas simples.