Tipos de cluster (small, medium and large) Componentes del cluster • Master Node • Slave Node • Edge Node Cluster alternativos • Entornos Virtualizados • Entornos Cloud Factores que influyen en el rendimiento. Instalación básica de un cluster Hadoop Distribuido. Comandos básicos de administración de un cluster Hadoop. Herramientas de administración. Referencias y enlaces de interés.
sistema diseñado para almacenar y procesar datos a gran escala, utilizando un cluster de nodos. Hadoop está pensado para ser instalado en equipos físicos, con almacenamiento y red dedicados. Conceptos básicos a tener en cuenta para el diseño de un cluster Hadoop: Redundancia: Fundamental para evitar puntos únicos de fallo. Escalado Horizontal: Para satisfacer la demanda de almacenamiento o procesamiento , se añaden nuevos nodos esclavos. • Enracados. • Alimentación eléctrica. • Conexionado de red. • Refrigeración. Ejemplo Cluster Hadoop
• Este tipo de clusters tienen múltiples racks (+300 nodos). • Implementa una arquitectura de red más sofisticada. • Se recomienda la utilización de 4 Master Nodes.
Tienen una función de misión crítica, por lo tanto, se debe realizar un diseño pensando en incluir redundancia para garantizar la HA. Recomendaciones para la elección del hardware de los Master Nodes: • Procesadores: • 2 sockets con 6/8 cores = 12/16 cores por nodo • Memoria RAM: • Es un factor crítico, porque los NameNodes utilizan RAM para manejar el HDFS. • 64GB – 128GB • Regla: El NameNode utiliza 1GB de RAM por cada millón de bloques HDFS. • Almacenamiento: • 4 discos 900GB SAS (Raid 1) • Red: • Imprescindible una rápida comunicación entre nodos. • Bonding 10Gb + 10Gb = 20Gb
Los servidores definidos como Master Nodes pueden desplegar los siguientes servicios: • NameNode: • Encargado de administrar el almacenamiento HDFS. • Secondary NameNode ( or Backup Node): • Encargado de realizar los checkpoints (puntos de control) periódicos del NameNode. • Si se implementa HA, se utiliza Standby NameNode. • JournalNode: • Recibe el registro de logs desde el NameNode, con modificaciones realizadas en los ficheros del HDFS. • Es utilizado en HA, para que el Stanby NameNode esté sincronizado. • Se recomienda desplegar al menos 3 instancias para garantizar HA. • ResourceManager: • Supervisa la programación de tareas y gestiona los recursos del cluster Hadoop. • Este servicio es el corazón del YARN.
• Zookeeper: • Coordina los componentes distribuidos del cluster y proporciona mecanismos para mantenerlos sincronizados. • Se utiliza para detectar un fallo en el NameNode y elegir uno nuevo. • Se recomienda desplegar al menos 3 instancias para garantizar HA. • Job HistoryServer: • Almacena y muestra un historial de los trabajos MapReduce que se ejecutan en el cluster.
Recomendaciones para la elección del hardware de los Slaves Nodes: • Procesadores: • 2 sockets con 6/8 cores = 12/16 cores por nodo. • Regla: ratio 1:1 entre nº discos y nº cores. • Memoria RAM: • 48GB es suficiente. • Almacenamiento: • Se necesitan dos conjuntos de unidades de disco: • Sistema Operativo: 2 x 500GB SATA • HDFS: 12-16 discos 3TB/4TB SATA (Factor de replicación) • Red: • Cluster ≥ 48 GB para HDFS Bonding 2 x 10Gb • Cluster < 48 GB para HDFS Bonding 2 x 1Gb
Los servidores definidos como Slave Nodes pueden desplegar los siguientes servicios: • DataNode: • Servicio de HDFS que permite al NameNode almacenar los bloques de datos en un SlaveNode. • NodeManager: • Coordina los recursos para cada Slave Node y reporta la información el ResourceManager. • ApplicationMaster: • Seguimiento del proceso de las tareas que se ejecutar en el cluster para una aplicación específica. • Se despliega una por cada aplicación cliente. • Container: • Colección de todos los recursos necesarios para ejecutar las tareas de una aplicación.
(Gateway Node) Es una interfaz entre el cluster Hadoop y el exterior. Normalmente son usados para ejecutar aplicaciones de clientes y herramientas de administración del cluster Hadoop.
Learning / Testing. • Completar un análisis de un gran conjunto de datos en un momento puntual. • Peor rendimiento que entorno hardware. Entornos Cloud • Peor rendimiento que entorno hardware. • Diferentes proveedores Cloud (Amazon, Rackspace, etc ) entornos optimizados para Hadoop. • No recomendable para largo plazo Mayor coste que mantener un sistema propio. • Privacidad Si tienes datos sensibles recomendable cloud privada.
cores velocidad de procesamiento. • RAM de NameNode incrementa el número total de bloques de datos en el cluster. • Velocidad disco grado de rendimiento que se puede conseguir. MAPREDUCE • Optimizando el nº de tareas map y tareas reduce para un job concreto. • Incrementar el tamaño de bloque, para jobs que utilizan un gran conjunto de datos, reduce el numero de tareas.
Incluir el nombre FQDN de todos los nodos que conforman el cluster en el fichero /etc/hosts: 192.168.40.4 hd-master 192.168.40.5 hd-slave1 192.168.40.6 hd-slave2 192.168.40.7 hd-slave3 2. Creamos el usuario y grupo hadoop: root@hd-master:~# addgroup hadoop root@hd-master:~# adduser --ingroup hadoop hadoop root@hd-master:~# passwd hadoop 3. Establecer relación de confianza SSH entre el MasterNode y los SlavesNodes: root@hd-master:~#su - hadoop hadoop@hd-master:~#ssh-keygen -t rsa hadoop@hd-master:~#ssh-copy-id hadoop@hd-slave1 #Comprobamos el acceso sin password hadoop@hd-master:~# ssh hadoop@hd-slave1
Fichero Formato Descripción hadoop-env.sh Bash script Variables de entorno que son usadas en los scripts que ejecutan Hadoop. core-site.xml Hadoop configuration XML Configuración para Hadoop Core, como ajustes de I/O que son comunes para HDFS y MapReduce. hdfs-site.xml Hadoop configuration XML Ajustes de configuración para los daemons de HDFS: NameNode, Secundary NameNode y DataNodes. mapred-site.xml Hadoop configuration XML Ajustes de configuración para los daemons MapReduce: Jobtracker, Tasktrackers o YARN. yarn-site.xml Hadoop configuration XML Ajustes de configuración específicos para YARN. masters Testo Plano Lista de maquinas (una por línea) que iniciaran un Secundary NameNode. slaves Testo Plano Lista de maquinas (una por línea) que iniciaran un DataNode y un NodeManager
1. Descargamos e instalamos Hadoop en el nodo master (después de realizar la configuración, la replicaremos en todos los nodos slaves) wget http://ftp.cixug.es/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz tar xzvf hadoop-2.6.0.tar.gz mv hadoop-2.6.0 /usr/local/hadoop chown -R hadoop:hadoop /usr/local/hadoop 2. Realizamos la configuración básica en el nodo Master: vi /usr/local/hadoop/etc/hadoop/core-site.xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hd-master:9000</value> <description>NameNode URI</description> </property> </configuration>
vi /usr/local/hadoop/etc/hadoop/slaves hd-slave1 hd-slave2 hd-slave3 3. Creamos el directorio para almacenar los datos HDFS del NameNode: root@hd-master:~# mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode root@hd-master:~# chown -R hadoop:hadoop /usr/local/hadoop 4. Duplicamos la configuracion de Hadoop en todos los Slaves Nodes: root@hd-master:~# scp -r /usr/local/hadoop root@hd-slave1:/usr/local root@hd-master:~# scp -r /usr/local/hadoop root@hd-slave2:/usr/local root@hd-master:~# scp -r /usr/local/hadoop root@hd-slave3:/usr/local root@hd-slaveX:~# chown -R hadoop:hadoop /usr/local/hadoop 5. Creamos el directorio para almacenar los datos HDFS den DataNode: root@hd-slaveX~# mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode root@hd-slaveX:~# chown -R hadoop:hadoop /usr/local/hadoop
6. Cambiamos configuración del NameNode por DataNode en todos los Slaves Nodes: vi /usr/local/hadoop/etc/hadoop/hdfs-site.xml <configuration> <property> <name>dfs.replication</name> <value>3</value> <description>Default block replication</description> </property> <property> <name>dfs.datanode.name.dir</name> <value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value> </property> </configuration> 7. Damos formato al nuevo filesystem distibuido: hadoop@hd-master:~#hdfs namenode --formart
1. Creamos un directorio para almacenar los datos del usuario hadoop: hadoop fs -mkdir /user hadoop fs -mkdir /user/hadoop 2. Subimos el directorio de los ficheros de configuración: hadoop fs -put /usr/local/hadoop/etc/hadoop /user/hadoop/hadoop-config 3. Comprobamos que se ha subido los datos correctamente: hdfs dfs -ls /user/hadoop/hadoop-configuracion 4. Ejecutamos un trabajo de ejemplo: hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples- 2.6.0.jar grep /user/hadoop/hadoop-config /user/hadoop/output 'dfs[a-z.]+' 5. Comprobamos la información del directorio output: hdfs dfs -ls /user/hadoop/output/
Realiza el balanceo de datos en los DataNodes del cluster. Threshold representa el porcentaje de la capacidad del disco (default 10%). hadoop balancer [ - threshold value ] datanode Ejecuta el servicio DataNode de HDFS. hadoop datanode [ - rollback ] dfsadmin Realiza las operaciones administrativas de HDFS. hadoop dfsadmin [ OPTIONS ] mradmin Realiza las operaciones administrativas de MapReduce. hadoop mradmin [OPTIONS] namenode Ejecuta el servicio NameNode y coordina el almacenamiento para el cluster Hadoop. hadoop namenode [- format ] [- upgrade] [- rollback ] [- finalize ] [- import checkpoint ] secundary namenode Ejecuta el servicio del Secundary NameNode hadoop secondary namenode [- checkpoint [force] ] [- geteditsize ]
gráfica de usuario para Hadoop. • Hue permite: • Navegar por HDFS (FileBrowser). • Crear y administrar cuentas de usuarios. • Monitoreo del cluster. • Lanzar y visualizar trabajos . • Habilitar la interfaz de usuario de Hive. • Acceso a editores de queries para Hive, Pig, Cloudera Impala, etc.
para el aprovisionamiento, la configuración, el mantenimiento y monitoreo del cluster Hadoop. • Puede desplegar y operar con todos los elementos del cluster Hadoop , usando una interfaz de administración web.
las siguientes tareas: 1. Aprovisionamiento de un cluster Hadoop: • Proporciona un asistente para ayudarte a instalar los servicios de Hadoop. • Se encarga de la configuración de los servicios de Hadoop en el cluster. 2. Administración de un cluster Hadoop: • Proporciona una gestión centralizada para iniciar, detener y reconfigurar de los servicios de Hadoop en todo el clúster. 3. Monitoreo del cluster Hadoop: • Ofrece un panel de control para el seguimiento del estado del clúster Hadoop. • Aprovecha Ganglia para la recolección de métricas para el accounting. • Aprovecha Nagios para las alertas del sistema y envía e-mails cuando se necesita su atención, como cuando falla un nodo.