En el artículo anterior hacíamos una breve introducción sobre qué es hadoop y para que nos puede servir, ahora comenzaremos una nueva entrega para ver cómo podemos instalar Hadoop en Solaris 10 en una arquitectura multinodo
Requisitos Iniciales
Hadoop está escrito en Java y por lo tanto, debe funcionar en aquellas plataformas sobre las que esté soportado, sin embargo, nosotros nos vamos a centrar en la instalación de Hadoop sobre Solaris 10.
- Descargar Hadoop de aquí
- Java JDK 1.6+
Hadoop está compuesto de varios componentes y pueden ser instalados en una o varias máquinas aunque nosotros vamos a realizar la instalación con varios nodos cada uno de ellos una zona de Solaris 10.
- NameNode. Sistema encargado de gestionar los Metadatos (Al menos 1)
- DataNode. Almacenamiento de datos (Al menos 1)
- JobTracker. Sistema encargado de gestionar los Jobs (Reduce)
- TaskTacker. Sistema encargado de gestionar los Task (Map)
- SecondaryNameNode. Sistema de Backup para NameNode
En la Zona Global instalaremos Hadoop NameNode y JobTracker y en la Zona node1 y node2 serán DataNodes. Puedes encontrar información más detallada de qué es cada uno de ellos aquí
Ajustes de Solaris para mayor seguridad
Vamos ha realizar unos ajustes en las instalaciones de Solaris para mejorar su seguridad, esto debemos hacerlo en cada una de las zonas. Por defecto, Solaris guarda las contraseñas utilizando crypt, sin embargo, soporta muchos más algoritmos, para ello editamos el archivo /etc/security/policy.conf y modificamos la entrada
CRYPT_DEFAULT=__unix__
por
CRYPT_DEFAULT=1
Esto hará que las contraseñas ahora se guarden utilizando md5. También, vamos a poner un banner en cada maquina para poder distinguirlas fácilmente
# banner node1 > /etc/issue
Nota: Sustituye "node1" por el nombre que le quieras asignar
Ajuste de Fecha/Hora automática
Es muy importante tener los relojes sincronizados para que el sistema Hadoop funcione correctamente, por ello, vamos a configurar ntp en la Zona Global (ya que las Zonas NoGlobales no puede modificar el clock)
# echo "server hora.rediris.es" > /etc/inet/ntp.conf
# svcadm enable svc:/network/ntp:default
Creación del Usuario, Grupo y Project
# groupadd hadoopNota: Todos los usuarios deben tener la misma ruta de $HOME, id, groupid para evitar problemas.
# projadd hadoop
# useradd -g hadoop -p hadoop -s /bin/bash -d /export/home/hadoop -m hadoop
# passwd hadoop
Estructura de directorios y variables de entorno
Deberemos crear la estructura de directorios igual en todas las máquinas que pertenezcan al cluster de hadoop
# cd /optYa hemos instalado hadoop, fácil no? La verdad es que no hemos hecho más que empezar ... Ahora nos vamos a conectar a la máquina (zona) que hará de NodeName (en nuestro caso será la zona global)
# /usr/sfw/bin/wget http://apache.rediris.es/hadoop/core/hadoop-0.20.0/hadoop-0.20.0.tar.gz
# /usr/sfw/bin/gtar zxvpf hadoop-0.20.0.tar.gz
# mv hadoop-0.20.0 hadoop
# chown -R hadoop:hadoop hadoop
# uname -a
SunOS sol10-enigma 5.10 Generic_139556-08 i86pc i386 i86pc
# zonename
global
Vamos a editar el $HOME/.profile del usuario "hadoop" para asignar las variables necesarias para la instalación: JAVA_HOME, HADOOP_HOME
# su - hadoopEditamos el archivo /etc/hosts (de cada máquina) he introducimos las direcciones IP de los datanode y el namenode (en mi caso 10.1.1.3/10.1.1.5 para DataNode y 10.1.1.4 para NameNode)
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
$ vi .profile
JAVA_HOME=/usr/java
HADOOP_HOME=/opt/hadoop
HADOOP_DATA_DIR=/var/hadoop-datastore/hadoop
PATH=$PATH:$HADOOP_HOME/bin:/usr/sfw/bin:/usr/local/bin:/usr/ccs/bin
export PATH HADOOP_HOME JAVA_HOME HADOOP_DATA_DIR
MAIL=/usr/mail/${LOGNAME:?}
##########################################################
## CLUSTER HADOOP
##########################################################
10.1.1.3 node1 node1.hadoop.test.com
10.1.1.4 namenode namenode.hadoop.test.com
10.1.1.5 node2 node2.hadoop.test.com
Generamos una nueva clave SSH para el usuario "hadoop" y configuramos el sistema para que nos permita acceder de un nodo a otro sin contraseña
$ pwdCopiamos las claves a los demás nodos y nos conectamos a ellos para comprobar que podemos acceder sin contraseña. Desde la Zona Global
/export/home/hadoop
$ zonename
global
$ ssh-keygen -t rsa
Generando pareja de claves pública/privada rsa.
Escriba el archivo en el que se debe guardar la clave (/export/home/hadoop/.ssh/id_rsa):
Directorio creado '/export/home/hadoop/.ssh'.
Escriba una frase de contraseña (si está vacío se interpreta que no hay ninguna frase de contraseña):
Escriba la misma frase de contraseña de nuevo:
Se ha guardado su identificación en /export/home/hadoop/.ssh/id_rsa.
Se ha guardado su clave pública en /export/home/hadoop/.ssh/id_rsa.pub.
La huella de la clave es:
3e:05:9b:1c:6d:80:50:5a:53:77:5d:54:15:b4:b1:02 hadoop@sol10-enigma
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ ssh namenode
No se puede establecer la autenticidad del sistema 'namenode (10.1.1.4).
RSA la firma de la clave es 8f:5e:ae:c4:fa:4e:25:3b:9d:1d:ed:2d:4c:97:d6:c1.
¿Desea continuar con la conexión (sí/no)? sí
Advertencia: Se ha agregado permanentemente 'namenode,10.1.1.4' (RSA) a la lista de hosts conocidos.
Last login: Sat Jul 11 17:24:38 2009 from sol10-enigma
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
$ exit
$ pwdCopiaremos el profile que hemos creado para el usuario "hadoop" a todos los nodos y comprobaremos que tenemos "hadoop" en el path
/export/home/hadoop/.ssh
$ cd ..
$ scp -r .ssh hadoop@node1:~
Contraseña:
id_rsa 100% |******************************************************************************| 883 00:00
id_rsa.pub 100% |******************************************************************************| 229 00:00
authorized_keys 100% |******************************************************************************| 229 00:00
known_hosts 100% |******************************************************************************| 451 00:00
$ ssh node1
Last login: Mon Jul 13 20:36:29 2009 from namenode
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
$ exit
logout
Cerrada la conexión con node1.
$ scp .profile hadoop@node1:~
.profile 100% |******************************************************************************| 176 00:00
$ ssh node1
Last login: Mon Jul 13 20:40:22 2009 from namenode
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
$ which hadoop
/opt/hadoop/bin/hadoop
Vamos a hacer un pequeño resumen de lo que hemos hecho hasta ahora:
- Descargar e Instalar Hadoop en cada una de las máquinas
- Crear Usuario, Grupo y Proyecto en cada una de las máquinas
- Crear clave RSA y copiarla al resto de las máquinas para permitir el acceso sin contraseña
Espero no haberos aburrido con esta entrega y en la próxima comenzaremos con la configuración de nuestro cluster de Hadoop.
No hay comentarios:
Publicar un comentario