Instalando Hadoop 1.2.1 con librerías nativas

Guía para compilar e instalar Hadoop 1.2.1 con librerías nativas a partir del código fuente.

Hadoop

Obtener el código fuente de Hadoop 1.2.1:

Dependencias

En ubuntu 13.04:

Activar la compilación de Snappy, cambiando en build.xml:

por

y

por

(dependiente de la distribución, comprobar mediante $ dpkg -L libsnappy-dev)
Añadir a la línea 1584 (variables de entorno de ejecución del script de empaquetado):

Modificar el fichero src/native/packageNativeHadoop.sh para que empaquete bien la librería Snappy, sustituyendo la línea 71:

por

Compilar

El resultado se encuentra en build/hadoop-1.2.1-...-bin.tar.gz con un distribuible “de producción”.

Binario con código fuente

Personalmente utilizo el .tar.gz con fuentes porque así tengo un acceso más fácil a la configuración por defecto (core-default.xml, hdfs-default.xml y mapred-default.xml), así que el resto del artículo es en base a ello.

Si se desea realizar la compilación que incluye el código fuente, primero hay que sustituir en build.xml porque hay que intallar previamente Forrest y no tengo ganas:

por

y compilar:

Esto generará 2 ficheros:

  • build/hadoop-1.2.1.tar.gz: fuentes, ejecutables y librerías.
  • build/hadoop-1.2.1-bin.tar.gz: sólo ejecutables y librerías.

Configurar

Descomprimir hadoop-1.2.1.tar.gz.
Modificar /etc/hosts añadiendo la IP externa del nodo (y eliminando la referencia que suele aparecer en Ubuntu con IP 127.0.1.1).
Configurar en hadoop-1.2.1/conf/ los ficheros core-site, hdfs-site y mapred-site (se ponen aquí unos como ejemplo). Modificar el nombre del nodo master (en donde corresponda), y el nombre de usuario en mapred-site.xml.
Modificar /etc/environment: agregar a $PATH la ruta /home/hadoop/hadoop-1.2.1/bin y la entrada JAVA_HOME=...

Yo suelo usar unos scripts para borrar todo HDFS y para lanzar y apagar cada nodo: clear-all, start-all, stop-all.

Hadoop not running the datanode (issue 1)

Found this in datanode’s log file? :

This means you have configured your datanode’s dfs.datanode.failed.volumes.tolerated to 1 (or more) in hdfs-site.xml. Delete that configuration option and done.