Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

CETA-Ciemat

February 12, 2015
Tweet

More Decks by CETA-Ciemat

Other Decks in Education

Transcript

  1. 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

    View full-size slide

  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.

    View full-size slide

  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

    View full-size slide

  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.

    View full-size slide

  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.

    View full-size slide

  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.

    View full-size slide

  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

    View full-size slide

  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.

    View full-size slide

  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.

    View full-size slide

  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

    View full-size slide

  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.

    View full-size slide

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

    View full-size slide

  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

    View full-size slide

  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.

    View full-size slide

  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.

    View full-size slide

  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.

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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"

    View full-size slide

  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

    View full-size slide

  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


    fs.defaultFS
    hdfs://hd-master:9000
    NameNode URI


    View full-size slide

  22. 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


    View full-size slide

  23. 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


    View full-size slide

  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

    View full-size slide

  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


    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

    View full-size slide

  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

    View full-size slide

  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/

    View full-size slide

  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

    View full-size slide

  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 ]

    View full-size slide

  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.

    View full-size slide

  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.

    View full-size slide

  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.

    View full-size slide

  33. HERRAMIENTAS DE ADMINISTRACIÓN
    AMBARI

    View full-size slide

  34. REFERENCIAS Y ENLACES DE INTERÉS

    View full-size slide

  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

    View full-size slide

  36. 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?

    View full-size slide