Clúster de Hadoop 2.0.1-alpha + HBase 0.94.2-rc3

Configuración inicial

 
Crear el usuario cluster en todos los nodos, y con directorio home /home/cluster/.
Crearemos un nodo master00 que contendrá el ResourceMangager, NameNode y JobHistory Server (podrían estar los tres en nodos diferentes). En un nodo a parte podríamos poner el SecondaryNameNode.

Crearemos nodos esclavos slave01, slave02, slave03,… cada uno con un NodeManager y un DataNode.

Crear el script ~/set_paths para configurar todas las variables de entorno necesarias con el contenido:

export HADOOP_PREFIX=/home/cluster/hadoop
export YARN_HOME=/home/cluster/hadoop
export PATH=/home/cluster/hbase/bin:$PATH
export JAVA_HOME=<code>update-java-alternatives -l | grep 1.6 | tail -1 | cut -f3 -d' '</code>

Hadoop

 
La arquitectura de Hadoop 2.0.1 se compone de: un ResourceManager, un NameNode, un MapReduce JobHistory Server, un SecondaryNameNode (no usaré), varios NodeManagers, varios DataNodes, varios WebAppProxy (no usaré).

Descargar la versión Hadoop 2.0.1-alpha y descomprimirla en ~/hadoop.

Configurar ~/hadoop/etc/hadoop/core-site.xml:

Configurar ~/hadoop/etc/hadoop/hdfs-site.xml para NameNode y los DataNodes:

Configurar ~/hadoop/etc/hadoop/yarn-site.xml para ResourceManager y los NodeManagers:

Copiar ~/hadoop/share/hadoop/common/templates/conf/mapred-site.xml a ~/hadoop/etc/hadoop y configurar ~/hadoop/etc/hadoop/mapred-site.xml para los trabajos (Jobs) MapReduce:

Configurar ~/hadoop/etc/hadoop/httpfs-site.xml :

 

HBase

 
Para trabajar con HBase, ejecutaremos en el nodo master00 lo siguiente: HBase Master y ZooKeeper (único del quorum).
En cada nodo slave ejecutaremos una instancia RegionServer.
Exportar del repositorio la versión hbase-0.94.2-rc3 en /home/cluster/hbase-0.94.2-rc3.

Modificamos las dependencias de maven para que compile para Hadoop 2.0.1 al especificar el perfil “2.0”. Para ello, editamos el fichero ~/hbase-0.94.2-rc3/pom.xml, y cambiamos la línea que dice:

por:

Recompilar HBase para Hadoop 2.0:

Descomprimir el paquete creado ~/hbase-0.94.2-rc3/target/hbase-0.94.2.tar.gz en ~/hbase:

Modificamos el fichero ~/hbase/conf/regionservers para que esté vacío:

Modificar ~/hbase/conf/hbase-env.sh y descomentar la línea que dice:

Configurar ~/hbase/conf/hbase-site.xml :

   

Scripts de start/stop del nodo master

 
Una vez configurado todo, creamos el script ~/start-master-all.sh con el contenido:

El script ~/stop-master-all.sh con el contenido:

Scripts de start/stop de los nodos slaves

 
Creamos el script ~/start-slave-all.sh con el contenido:

El script ~/stop-slave-all.sh con el contenido:

 

Interfaces de usuario

 
Después de configurar todo lo anterior y ejecutar el nodo master mediante:

y en el caso de desear esclavos, ejecutar (opcionalmente en el propio master) lo siguiente en cada esclavo:

Se dispondrán de interfaces de usuario web en las siguientes direcciones:

 

Links

 
Referencia de puertos por defecto para Cloudera.
 

Bugs

 

Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Protocol message end-group tag did not match expected tag.; Host Details : local host is: “master00/192.168.0.6”; destination host is: “master00”:50070;

 
En a página http://master00:50070/dfsnodelist.jsp?whatNodes=LIVE hay enlaces a los Datanodes vivos. Al pinchar alguno de ellos se muestra el error anterior. Esto es debido a un bug en el que se indica erróneamente cuál es la dirección al IPC del Namenode: nnaddr=. Se puede navegar sustituyendo el puerto 50070 por el puerto IPC de Hadoop 8020, de manera que la dirección:

http://master00:50075/browseDirectory.jsp?namenodeInfoPort=50070&dir=%2F&nnaddr=192.168.0.6:50070

se sustituye por:

http://master00:50075/browseDirectory.jsp?namenodeInfoPort=50070&dir=%2F&nnaddr=192.168.0.6:8020

Leave a Reply

Your email address will not be published.