Hadoop
Contenido
Introducción
Documento con apuntes sobre mi investigación sobre que es hadoop y como instalarlo. Viene de la necesidad en mi curro de instalar un sistema de procesado distribuido de ciertos ficheros de log.
Enlaces de interes
Instalación
Preparación
Antes de nada he tenido que instalar Java 1.6.x (segun la documentación, preferiblemente desde SUN). Para descargarlo desde esta página. Me lo he descargado a /opt/src, y después lo he ejecutado poniendo sh /opt/src/jre-6u33-linux-x64.bin. Esto descomprime el binario y lo deja en /opt/src/jre1.6.0_33 y yo lo he movido a /opt/jre1.6.0_33. Además creo un enlace dentro del propio /opt con ln -s /opt/jre1.6.0_33 java.
Tambien he añadido al fichero /root/.bashrc las siguientes líneas
export JAVA_HOME=/opt/java export PATH=$PATH:$JAVA_HOME/bin
Comprobamos que tenemos el paquete ssh y sshd en el servidor
Descarga
Nos descargamos el hadoop. Para ello vamos a esta página para descargarnos la versión estable actual.
En primer lugar me he bajado la versión estable en RPM para 64 bits. Me la he descargado en el directorio /opt/src. Después lo he instalado con rpm: rpm -i hadoop-1.0.3-1.x86_64.rpm
Configuración previa
Home de Java
Antes de arrancar nada, nada más instalar el rpm, editamos el fichero /etc/hadoop/hadoop-env.sh. Comprobamos que hace un export a la ubicación de java correcta (/opt/java)
Uso maximo de memoria java
Para cambiar el límite de memoria que puede usar el proceso java de hadoop hay que cambiar la variable de HADOOP_OPTS del fichero de configuración /etc/hadoop/hadoop-env.sh
export HADOOP_OPTS="-Djava.net.preferIPv4Stack=true -Xmx2048m $HADOOP_CLIENT_OPTS"
Si ejecutamos /usr/bin/hadoop, nos dará información de como arrancar el proceso de hadoop.
Configuración pseudo-distribuida
Segun la página de documentación de hadoop La configuración que hay que realizar para el modo de distribuido en un solo nodo es la siguiente: conf/core-site.xml:
<configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration>
conf/hdfs-site.xml:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
conf/mapred-site.xml:
<configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration>
Sin embargo yo lo he hecho de la siguiente forma, lanzando unos scripts de configuración que hay en esta versión rpm de centos.
En primer lugar lanzamos el script de configuración de hadoop:
# hadoop-setup-conf.sh
En el que pregunta varios datos de ubicación de ficheros de configuración o donde va a ir el repositorio de datos de hdfs, donde va el pid, etc
Al terminal este script de configuración dice que hay que ejecutar el de configuracion de hdfs, pero antes de eso le vamos a dar formato.
Para ello, como usuario hdfs, ejecutamos el comando:
# hadoop namenode -format
Después podemos volver al usuario root y ejecutamos la configuracion de hdfs
# hadoop-setup-hdfs.sh
esto generará varios directorios dentro del dfs. Al finalizar nos sugiere que arranquemos el servicio datanode
# /etc/init.d/hadoop-datanode start
Ahora nos queda por arrancar los servicios jobtracker y tasktracker. El primero lo arrancamos de la siguiente forma:
# /etc/init.d/hadoop-jobtracker start
Para el tasktracker antes tendremos que crear el directorio de trabajo de este en local, para lo cual creamos el directorio /var/lib/hadoop/mapred y le damos permisos para el usuario mapred.hadoop
mkdir /var/log/hadoop/mapred chown mapred.hadoop /var/log/hadoop/mapred
y entonces podremos arrancar el servicio:
# /etc/init.d/tasktracker start
Configuración distribuida
(falta... lo guapo)
Instalación de PIG
La instalación de pig es muy sencilla en Centos. Nos hemos bajado la versión estable desde esta página como rpm en /opt/src/ y después lo hemos instalado con rpm -i pig-0.10.0-1.i386.rpm