JUC - Diseño e instalación de un clúster Hadoop

C4187f9cd1f03aa1619b269218883910?s=47 CETA-Ciemat
February 12, 2015

JUC - Diseño e instalación de un clúster Hadoop

I Jornadas Técnicas UEx - CIEMAT. Procesando grandes volúmenes de datos con Hadoop

C4187f9cd1f03aa1619b269218883910?s=128

CETA-Ciemat

February 12, 2015
Tweet

Transcript

  1. Jornadas Técnicas Uex-CIEMAT // 10-12 Febrero 2015 Procesando grandes volúmenes

    de datos con HADOOP Jesús Santisteban Fernández jesus.santisteban@externos.ciemat.es Diseño e Instalación de un Cluster HADOOP
  2. Í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.
  3. 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
  4. 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.
  5. 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.
  6. 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.
  7. 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
  8. 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.
  9. 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.
  10. 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
  11. 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.
  12. DISEÑO DE UN CLUSTER HADOOP COMPONENTES DEL CLUSTER Slave Nodes

  13. 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
  14. 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.
  15. 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.
  16. 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.
  17. 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
  18. 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
  19. 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"
  20. 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
  21. 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 <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hd-master:9000</value> <description>NameNode URI</description> </property> </configuration>
  22. INSTALACIÓN BÁSICA DE UN CLUSTER HADOOP DISTRIBUIDO INSTALACIÓN Y CONFIGURACIÓN

    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.namenode.name.dir</name> <value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value> </property> </configuration> vi /usr/local/hadoop/etc/hadoop/mapred-site.xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> <description>Execution framework</description> </property> </configuration>
  23. INSTALACIÓN BÁSICA DE UN CLUSTER HADOOP DISTRIBUIDO INSTALACIÓN Y CONFIGURACIÓN

    vi /usr/local/hadoop/etc/hadoop/yarn-site.xml <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> <description>shuffle service for MapReduce</description> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>hd-master:8025</value> <description>ResourceManager for NodeManagers</description> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>hd-master:8030</value> <description>ResourceManager for ApplicationMasters</description> </property> <property> <name>yarn.resourcemanager.address</name> <value>hd-master:8050</value> <description>ResourceManager for clients to submit jobs</description> </property> </configuration>
  24. 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
  25. 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 <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
  26. 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
  27. 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/
  28. 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
  29. 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 ]
  30. 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.
  31. 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.
  32. 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.
  33. HERRAMIENTAS DE ADMINISTRACIÓN AMBARI

  34. REFERENCIAS Y ENLACES DE INTERÉS

  35. 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
  36. Jornadas Técnicas Uex-CIEMAT // 10-12 Febrero 2015 Procesando grandes volúmenes

    de datos con HADOOP Jesús Santisteban Fernández jesus.santisteban@externos.ciemat.es ¡Gracias ! ¿Alguna Pregunta?