Cargando librerias nativas para hadoop 2, come evitar el WARNING Unable to load native-hadoop library

Siguiendo con los posts anteriores (I, II) relacionados con el laboratorio de hadoop 2, el primer post dejé un warning en el arranque de hdfs sin resolver. El warning está relacionado con el uso de librerías nativas del sistema operativo para los procesos de compresión y descompresión. Parece que estos procesos realizados por medio de código java son un 40% más lentos que si los realizan los comandos nativos del sistema operativo. Así que hemos montado el laboratiorio para que haga uso de esas librerías nativas. Para ello hemos tenido que recompilar el producto para poder generar unas librerías .so y .a que hacen de pasarela (supongo que por JNI), a las librerías nativas. Hadoop al arrancar las detecta y las carga en vez de cargar las implementaciones nativas 100% java.

Los pasos han sido los siguientes:

  • Instalar las dependencias necesarias (usamos ubuntu)

>>>sudo aptitude install  zlib1g zlib1g-dbg  zlib1g-dev zlibc libssl-dev lbzip2  libzip-dev libzip2 pbzip2

  • Instalamos las dependencias para poder compilar con make, maven etc.

>>>sudo apt-get install build-essential
>>>sudo apt-get install g++ autoconf automake libtool cmake zlib1g-dev pkg-config libssl-dev
>>>sudo apt-get install maven

  • descargamos protobuf y lo compilamos

>>>wget https://protobuf.googlecode.com/svn/rc/protobuf-2.5.0.tar.gz
>>>tar xzf protobuf-2.5.0.tar.gz
>>>cd protobuf-2.5.0
>>>./configure
>>>make
>>>sudo make install
>>>sudo ldconfig

  • descargamos el código fuente de hadoop.-2.5.0 y lo compilamos con maven

>>>mvn package -Pdist,native -DskipTests -Dtar


Ahora ya podemos usar las nuevea libs para arquitecturas iguales, cada nodo de arquitectura distinta... a recompilar.

Y ya no sale el warning en el arranque de hdfs

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

 

00

Más entradas de blog

Añadir comentarios