SafeChildren Banner

Havoc Oracle Solaris Experts

miércoles, 15 de julio de 2009

Instalación de Hadoop sobre Solaris 10

Introducción

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+
Estructura Hadoop

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
Vamos a realizar una instalación de Hadoop sobre Solaris 10, teniendo la siguiente estructura:

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 hadoop
# projadd hadoop
# useradd -g hadoop -p hadoop -s /bin/bash -d /export/home/hadoop -m hadoop
# passwd hadoop
Nota: Todos los usuarios deben tener la misma ruta de $HOME, id, groupid para evitar problemas.

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 /opt
# /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
Ya 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)

# 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 - hadoop
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:?}

Editamos 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)

##########################################################
## 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

$ pwd
/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
Copiamos las claves a los demás nodos y nos conectamos a ellos para comprobar que podemos acceder sin contraseña. Desde la Zona Global
$ pwd
/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.
Copiaremos el profile que hemos creado para el usuario "hadoop" a todos los nodos y comprobaremos que tenemos "hadoop" en el path

$ 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:

  1. Descargar e Instalar Hadoop en cada una de las máquinas
  2. Crear Usuario, Grupo y Proyecto en cada una de las máquinas
  3. 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 en la entrada