Slide 1

Slide 1 text

Jornadas Técnicas Uex-CIEMAT // 10-12 Febrero 2015 Procesando grandes volúmenes de datos con HADOOP Jesús Santisteban Fernández [email protected] Diseño e Instalación de un Cluster HADOOP

Slide 2

Slide 2 text

ÍNDICE  Diseño de un cluster Hadoop:  Introdución  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.

Slide 3

Slide 3 text

DISEÑO DE UN CLUSTER HADOOP INTRODUCCIÓN  Hadoop es un 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

Slide 4

Slide 4 text

DISEÑO DE UN CLUSTER HADOOP TIPOS DE CLUSTER SMALL (Pequeño) • Este tipo de clusters están formados por 1 o 2 racks. • Ideal como punto de partida de la instalación de un cluster Hadoop.

Slide 5

Slide 5 text

DISEÑO DE UN CLUSTER HADOOP TIPOS DE CLUSTER MEDIUM (Mediano) • Este tipo de clusters tienen multiples racks (45-150 nodos). • Se recomiendo distribuir los Master Nodes entre los diferentes racks.

Slide 6

Slide 6 text

DISEÑO DE UN CLUSTER HADOOP TIPOS DE CLUSTER LARGE (Grande) • 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.

Slide 7

Slide 7 text

DISEÑO DE UN CLUSTER HADOOP COMPONENTES DEL CLUSTER 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

Slide 8

Slide 8 text

DISEÑO DE UN CLUSTER HADOOP COMPONENTES DEL CLUSTER Master Nodes 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.

Slide 9

Slide 9 text

DISEÑO DE UN CLUSTER HADOOP COMPONENTES DEL CLUSTER Master Nodes • 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.

Slide 10

Slide 10 text

DISEÑO DE UN CLUSTER HADOOP COMPONENTES DEL CLUSTER Slave Nodes 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

Slide 11

Slide 11 text

DISEÑO DE UN CLUSTER HADOOP COMPONENTES DEL CLUSTER Slave Nodes 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.

Slide 12

Slide 12 text

DISEÑO DE UN CLUSTER HADOOP COMPONENTES DEL CLUSTER Slave Nodes

Slide 13

Slide 13 text

DISEÑO DE UN CLUSTER HADOOP COMPONENTES DEL CLUSTER Edge Nodes Recomendaciones para la elección del hardware de los Edge Nodes: • Procesadores: • 2 sockets con 6/8 cores = 12/16 cores por nodo. • Memoria RAM: • 48GB es suficiente. • Almacenamiento: • 4 discos 900GB SAS (Raid 1) • Red: • Nodos de administración  Bonding 1Gb + 1Gb = 2Gb • Nodos alto ratios I/O  Bonding 10Gb + 10Gb = 20Gb

Slide 14

Slide 14 text

DISEÑO DE UN CLUSTER HADOOP COMPONENTES DEL CLUSTER Edge Nodes (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.

Slide 15

Slide 15 text

DISEÑO DE UN CLUSTER HADOOP CLUSTER ALTERNATIVOS Entornos Virtualizados • 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.

Slide 16

Slide 16 text

FACTORES QUE INFLUYEN EN EL RENDIMIENTO HARDWARE • nº de 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.

Slide 17

Slide 17 text

INSTALACIÓN BÁSICA DE UN CLUSTER HADOOP DISTRIBUIDO ESPECIFICACIONES DE LAS MAQUINAS Plataforma: VM sobre OpenStack SO: Ubuntu Server 14.04 Cores: 2 RAM: 4GB Disco: 40 GB SOFTWARE Hadoop 2.6.0 (Apache Software Fundation) ARQUITECTURA 1 Master Node (ResourceManager y NameNode): • hd-master 3 Slaves Nodes (DataNode y NodeManger): • hd-slave1 • hd-slave2 • hd-slave3

Slide 18

Slide 18 text

INSTALACIÓN BÁSICA DE UN CLUSTER HADOOP DISTRIBUIDO REQUISITOS INICIALES 1. 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

Slide 19

Slide 19 text

INSTALACIÓN BÁSICA DE UN CLUSTER HADOOP DISTRIBUIDO REQUISITOS INICIALES 4. Instalación de Java: root@hd-master:~# apt-get install default-jdk root@hd-master:~# java -version java version "1.7.0_65" OpenJDK Runtime Environment (IcedTea 2.5.3) (7u71-2.5.3-0ubuntu0.14.04.1) OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode) 5. Inclusión de variables de entorno de Hadoop y Java en el fichero .bashrc del usuario hadoop: export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 export HADOOP_INSTALL=/usr/local/hadoop export PATH=$PATH:$HADOOP_INSTALL/bin export PATH=$PATH:$HADOOP_INSTALL/sbin export HADOOP_MAPRED_HOME=$HADOOP_INSTALL export HADOOP_COMMON_HOME=$HADOOP_INSTALL export HADOOP_HDFS_HOME=$HADOOP_INSTALL export YARN_HOME=$HADOOP_INSTALL export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"

Slide 20

Slide 20 text

INSTALACIÓN BÁSICA DE UN CLUSTER HADOOP DISTRIBUIDO INSTALACIÓN Y CONFIGURACIÓN 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

Slide 21

Slide 21 text

INSTALACIÓN BÁSICA DE UN CLUSTER HADOOP DISTRIBUIDO INSTALACIÓN Y CONFIGURACIÓN 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 fs.defaultFS hdfs://hd-master:9000 NameNode URI

Slide 22

Slide 22 text

INSTALACIÓN BÁSICA DE UN CLUSTER HADOOP DISTRIBUIDO INSTALACIÓN Y CONFIGURACIÓN vi /usr/local/hadoop/etc/hadoop/hdfs-site.xml dfs.replication 3 Default block replication dfs.namenode.name.dir file:/usr/local/hadoop/hadoop_data/hdfs/namenode vi /usr/local/hadoop/etc/hadoop/mapred-site.xml mapreduce.framework.name yarn Execution framework

Slide 23

Slide 23 text

INSTALACIÓN BÁSICA DE UN CLUSTER HADOOP DISTRIBUIDO INSTALACIÓN Y CONFIGURACIÓN vi /usr/local/hadoop/etc/hadoop/yarn-site.xml yarn.nodemanager.aux-services mapreduce_shuffle shuffle service for MapReduce yarn.resourcemanager.resource-tracker.address hd-master:8025 ResourceManager for NodeManagers yarn.resourcemanager.scheduler.address hd-master:8030 ResourceManager for ApplicationMasters yarn.resourcemanager.address hd-master:8050 ResourceManager for clients to submit jobs

Slide 24

Slide 24 text

INSTALACIÓN BÁSICA DE UN CLUSTER HADOOP DISTRIBUIDO INSTALACIÓN Y CONFIGURACIÓN 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

Slide 25

Slide 25 text

INSTALACIÓN BÁSICA DE UN CLUSTER HADOOP DISTRIBUIDO INSTALACIÓN Y CONFIGURACIÓN 6. Cambiamos configuración del NameNode por DataNode en todos los Slaves Nodes: vi /usr/local/hadoop/etc/hadoop/hdfs-site.xml dfs.replication 3 Default block replication dfs.datanode.name.dir file:/usr/local/hadoop/hadoop_data/hdfs/datanode 7. Damos formato al nuevo filesystem distibuido: hadoop@hd-master:~#hdfs namenode --formart

Slide 26

Slide 26 text

INSTALACIÓN BÁSICA DE UN CLUSTER HADOOP DISTRIBUIDO INSTALACIÓN Y CONFIGURACIÓN 8. Iniciamos YARN/HDFS manualmente: Master Nodes: hadoop-daemon.sh --script hdfs start namenode yarn-daemon.sh start resourcemanager yarn-daemon.sh stop resourcemanager hadoop-daemon.sh --script hdfs stop namenode Slaves Nodes: hadoop-daemon.sh --script hdfs start datanode yarn-daemon.sh start nodemanager yarn-daemon.sh stop nodemanager hadoop-daemon.sh --script hdfs stop datanode

Slide 27

Slide 27 text

INSTALACIÓN BÁSICA DE UN CLUSTER HADOOP DISTRIBUIDO TESTING CLUSTER HADOOP 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/

Slide 28

Slide 28 text

INSTALACIÓN BÁSICA DE UN CLUSTER HADOOP DISTRIBUIDO TESTING CLUSTER HADOOP 6. El fichero part-r-00000 contiene el resultado de nuestro trabajo: hdfs dfs -cat /user/hadoop/output/part-r-00000 6 dfs.audit.logger 4 dfs.class 3 dfs.server.namenode. 2 dfs.period 2 dfs.audit.log.maxfilesize 2 dfs.audit.log.maxbackupindex 1 dfsmetrics.log 1 dfsadmin 1 dfs.servers 1 dfs.replication 1 dfs.namenode.name.dir 1 dfs.file ACCESO WEB ResourceManager: http://hd-master:8088 NodeManager httpd://hd-master:50070

Slide 29

Slide 29 text

COMANDOS BÁSICOS DE ADMINISTRACIÓN DEL CLUSTER Comando Función Sintasis balancer 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 ]

Slide 30

Slide 30 text

HERRAMIENTAS DE ADMINISTRACIÓN HUE ( Hadoop User Experience) • Interfaz 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.

Slide 31

Slide 31 text

HERRAMIENTAS DE ADMINISTRACIÓN AMBARI • Es una herramienta open source 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.

Slide 32

Slide 32 text

HERRAMIENTAS DE ADMINISTRACIÓN AMBARI • Facilita al administrador de sistema 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.

Slide 33

Slide 33 text

HERRAMIENTAS DE ADMINISTRACIÓN AMBARI

Slide 34

Slide 34 text

REFERENCIAS Y ENLACES DE INTERÉS

Slide 35

Slide 35 text

REFERENCIAS Y ENLACES DE INTERÉS http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/ClusterSetup.html http://www.bogotobogo.com/Hadoop/BigData_hadoop_Install_on_ubuntu_single_node_cluster.php http://tecadmin.net/setup-hadoop-2-4-single-node-cluster-on-linux/ http://www.highlyscalablesystems.com/3597/hadoop-installation-tutorial-hadoop-2-x http://cloudera.github.io/hue/docs-2.0.1/manual.html https://cwiki.apache.org/confluence/display/AMBARI/Installation+Guide+for+Ambari+1.7.0

Slide 36

Slide 36 text

Jornadas Técnicas Uex-CIEMAT // 10-12 Febrero 2015 Procesando grandes volúmenes de datos con HADOOP Jesús Santisteban Fernández [email protected] ¡Gracias ! ¿Alguna Pregunta?