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:
1 |
svn export http://svn.apache.org/repos/asf/hadoop/common/tags/release-1.2.1/ hadoop-1.2.1-src |
Dependencias
En ubuntu 13.04:
1 |
apt-get install openjdk-7-jdk g++ autoconf automake libtool zlib1g-dev libsnappy-dev |
Activar la compilación de Snappy, cambiando en build.xml
:
1 |
<property name="bundle.snappy" value="false"/> |
por
1 |
<property name="bundle.snappy" value="true"/> |
y
1 |
<property name="snappy.prefix" value="/usr/local"/> |
por
1 |
<property name="snappy.prefix" value="/usr"/> |
(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):
1 |
<env key="NATIVE_PLATFORM" value="${build.platform}" /> |
Modificar el fichero src/native/packageNativeHadoop.sh
para que empaquete bien la librería Snappy, sustituyendo la línea 71:
1 |
$TAR . | (cd $DIST_LIB_DIR/; $UNTAR) |
por
1 |
$TAR ./libsnappy* | (cd $DIST_LIB_DIR/$NATIVE_PLATFORM; $UNTAR) |
Compilar
1 |
ant -Dcompile.native=true binary |
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:
1 |
<target name="package" depends="compile, jar, javadoc, docs, api-report, examples, tools-jar, jar-test, ant-tasks, package-librecordio" |
por
1 |
<target name="package" depends="compile, jar, api-report, examples, tools-jar, jar-test, ant-tasks, package-librecordio" |
y compilar:
1 |
ant -Dcompile.native=true tar |
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.