Big Data Apache Architectures and Applications
Gestión y Almacenamiento
de Datos Masivos Tema3 - HDFS y Hadoop http://hadoop.apache.org/
@IsaacLera!
[email protected]! “¡Desbordante!”
Hadoop ❖
Hadoop es una aplicación que proporciona un sistema de almacenamiento escalable y confiable sobre HW commodity; Un sistema distribuido de almacenamiento.!
❖
Facilita la computación paralela siendo una implementación de MapReduce. ! ❖
Hadoop desplaza la ejecución de la aplicación cerca de los datos. !
❖
La organización de la aplicación se basa en la utilización secuencia de los datos!
❖
La ejecución paralela está garantizada aunque haya nodos que no respondan. Isaac Lera - Máster Universitario en Ingeniería Informática
2
Hadoop ecosystem
http://hadoop.apache.org/
Isaac Lera - Máster Universitario en Ingeniería Informática
3
❖
HDFS. Distributed, Reliable Storage. Sistema de ficheros. Es el mecanismo por el cual un volumen grande de datos puede distribuirse sobre el cluster; una sola escritura y múltiples lecturas.!
❖
MapReduce, es el principal framework de Hadoop; un modelo de programación paralelo y distribuido. Separa el proceso entre una fase de mapping y otra de reduce. !
❖
HBase. A column-oriented NoSQL database. Usado para rápidas lecturas/escrituras de VG de datos!
❖
Yarn, un framework para la planificación de trabajos, y gestión de los recursos del cluster.!
❖
Zookeper, es el servicio de coordinación, múltiples componentes de Hadoop dependen de él.
Isaac Lera - Máster Universitario en Ingeniería Informática
4
❖
Pig, es una abstracción para reducir la complejidad de programar en MapReduce. Incluye un entorno de ejecución y un lenguaje de scripting (Pig Latin). Su compilador transforma Pig Latin en un programa Map Reduce.!
❖
Hive, es un lenguaje de alto nivel para realizar consultas con sintaxis SQL sobre Hadoop. Transforma la consulta a sintaxis Hadoop. !
❖
Sqoop, es una herramienta de conectividad para el movimiento de datos entre bases de datos relacionales y otros sistemas de almacenamiento a Hadoop. Isaac Lera - Máster Universitario en Ingeniería Informática
5
Otros componentes ❖
Oozie, es usado para la coordinación de la ejecución de diferentes trabajos MapReduce. Su gestión puede basarse en tiempo y la presencia de datos. !
❖
Flume, es un servicio distribuido, confiable y altamente disponible para una eficiente colección, agregación y movimiento de datos entre máquinas individuales a Hadoop. (streaming)!
❖
Whirr, librerias para facilitar el movimiento entre Hadoop clusters e infraestructuras como Amazon EC2, Rackspace,…!
❖
Mahout, librerías de algoritmos populares de clustering, regresión y estadísticos.!
❖
BigTop, un entorno de trabajo para el packaging y testeo de interoperabilidad con subproyectos Hadoop!
❖
Ambari, un proyecto para simplificar la gestión de Hadoop: gestión, monitorización,… http://incubator.apache.org/projects/ Isaac Lera - Máster Universitario en Ingeniería Informática
6
Hadoop Distributions ❖
Compañías que integran diferentes componentes de Hadoop para simplificar y ayudar en su uso. Algunas crean nuevos proyectos Apache y otras, no.!
❖
Tanto Amazon y Microsoft tienen sus propias variantes en Amazon AWS y Azure para su compatibilidad con Amazon S3 y Windows Azure Storage. !
❖
Consideraciones: detalles técnicos, facilidad de despliegue y mantenimiento, coste, e integración con el sistema actual. Isaac Lera - Máster Universitario en Ingeniería Informática
8
Hadoop Distributions ❖
Cloudera: Hadoop2, HDFS, YARN, Hbase, MapReduce, Hive, Pig, Zookeeper, Oozie, Mahout, Hue, Impala,… FreeEdition: 50 clusters; …! http://www.cloudera.com/content/cloudera/en/products-and-services/cdh.html ! AMD, FICO, QualComm,… BT,
❖
Hortonworks Data Platform: …, Hue, Ambari, Tex, Stinger, Talend Open Studio for Big Data. http://hortonworks.com/ ebay, Spotify, Bloomberg, Western Digital, Kayak, … Isaac Lera - Máster Universitario en Ingeniería Informática
9
Hadoop Distributions ❖
MapR: Hadoop1, HDFS, Hbase, MapReduce, Hive, Oozie, Mahout, Pig, Zookeeper, Hue,… Ha implementado cada una de estas librerías en base al código apache.! https://www.mapr.com/ ! Cisco, Hp, Samsung, …
❖
IBM InfoSphere: …, Hue, Ambari, Tex, Stinger, Talend Open Studio for Big Data. http://hortonworks.com/ http://www-01.ibm.com/software/data/infosphere/ Isaac Lera - Máster Universitario en Ingeniería Informática
10
2010
http://hadoop.apache.org/
HDFS The Hadoop Distributed File System
The Hadoop Distributed File System ❖
HDFS is Hadoop’s implementation of a distributed file system. It is designed to hold a large amount of data, and provide access to this data to many clients distributed across a network.!
❖
Run on top of a native filesystem!
❖
Based on Google Filesystem!
❖
Fault Tolerant: disk or machine crashes,…!
❖
Designed for storing very large files with streaming data access patterns, running on clusters of commodity hardware.! ❖
❖
Streaming data access: write-once, read-many-times;.!
Not so good for:! ❖
low-latency reads (use: HBase); large amount of small files; single/multiples writers and arbitrary file modifications; random reads
Isaac Lera - Máster Universitario en Ingeniería Informática
12
HDFS es gestionado por 3 Daemons ❖
Namenode gestiona el namespace/metadata del sistema de ficheros. Mantiene en memoria el árbol de ficheros y los metadatos de todos los ficheros. Persistentemente almacena una imagen física del namespace y en el log de edición (fsimage); runs on 1 machine to n-machines.!
❖
en Hadoop v2.x: Alta Disponibilidad - Hay varios namenodes en standby!
❖
Datanodes almacenan y consulta los bloques, e informan al namenode la lista de bloques que almacenan; runs on many machines. !
❖
Seconday Namenode periódicamente lee los cambios del fs registrados en el log y actualiza la imagen del fsimage
Isaac Lera - Máster Universitario en Ingeniería Informática
13
HDFS Daemons
http://www.edureka.co/blog/wp-content/uploads/2014/09/Hadoop2.2.png
HDFS Blocks ❖
Cada fichero es dividido en bloques/blocks!
❖
HDFS es un gestor de ficheros basado en bloques de tamaño: 64MB (default) o 128 MB.!
❖
Los gestiona el namenode y los almacena el datanode.! ❖
Un fichero puede ser más grande que un disco!
❖
Un bloque fijo simplifica la gestión de su metainformación.!
❖
Cada bloque es replicado en diferentes máquinas (“3 por defecto”): access and fault-tolerance. Isaac Lera - Máster Universitario en Ingeniería Informática
15
HDFS Blocks ❖
HDFS es un gestor de ficheros basado en bloques de tamaño: 64Mb (default) o 128 Mb.!
❖
Se consigue reducir el tiempo de seek en comparación con el tiempo de transferencia! Tiempo Transferencia >> Tiempo Seek!
Isaac Lera - Máster Universitario en Ingeniería Informática
16
HDFS Blocks
¿Cuántos bloques son necesarios para almacenar 1PT?! Con 64MB o 128MB
Isaac Lera - Máster Universitario en Ingeniería Informática
17
HDFS Daemons
B1 B2
B1
B1 B2
B2
registro.log (68MB) = B1 y B2 hadoop-site.xml Isaac Lera - Máster Universitario en Ingeniería Informática
22
HDFS Federación ❖
HDFS Federation (introducido en 2.x series), permite a un cluster escalar el número de namenodes; cada namenodes se encarga de gestionar una parte del árbol de ficheros. !
❖
Estos espacios son independientes y los namenodes no se comunican entre sí. ! /user Master0
/log Master1 Isaac Lera - Máster Universitario en Ingeniería Informática
23
Actividad #1 ❖
Instalación de Hadoop 2.X http://hadoop.apache.org/releases.html#Download http://hadoop.apache.org/docs/r2.5.1/hadoop-project-dist/hadoop-common/ SingleCluster.html
http://localhost:50070 http://130.206.30.97:50070/ http://130.206.30.97:50070/jmx
Isaac Lera - Máster Universitario en Ingeniería Informática
24
Conf.I sudo apt-get install ssh! sudo apt-get install rsync! sudo add-apt-repository ppa:webupd8team/java! sudo apt-get update! sudo apt-get install oracle-java7-installer
(update-alternatives --config java)!
export JAVA_HOME=/usr/lib/jvm/java-7-oracle/ (/etc/environment)! wget http://ftp.cixug.es/apache/hadoop/common/hadoop-2.5.2/hadoop-2.5.2.tar.gz! sudo tar -xzf hadoop-2.5.2-src.tar.gz! sudo mv hadoop-2.5.2-src hadoop! sudo mkdir logs! sudo chmod 755 logs! sudo chown -R uib /usr/local/hadoop/ (uib = user)! export HADOOP_HOME=/usr/local/hadoop! export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
Isaac Lera - Máster Universitario en Ingeniería Informática
25
Conf. II etc/hadoop/hadoop-env.sh! # The java implementation to use.! export JAVA_HOME=/usr/lib/jvm/java-7-oracle/! etc/hadoop/core-site.xml:! etc/hadoop/hdfs-site.xml:!
! #Acesso ssh sin introducir password! ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa! cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys!
Isaac Lera - Máster Universitario en Ingeniería Informática
26
Works? $jps ! 18939 NameNode! 19377 Jps! 19065 DataNode! 19272 SecondaryNameNode!
Isaac Lera - Máster Universitario en Ingeniería Informática
27
Basic Command Line $ hdfs dfs -[comando] [-parametro]! Ejemplo:! $ hdfs dfs -ls! $ hadoop fs -ls #alternativa!
Isaac Lera - Máster Universitario en Ingeniería Informática
28
$hdfs dfs -mkdir ! -ls ! -du ! -put (copia a/multiples src file from local to HDFS) ! -get (copia a/multiples src file from HDFS to local)! -getmerge (Concadena files de un directorio src en un fichero destino! -distcp (Copia ficheros/directorios recursivamente)! -cat ! -touchz (Actualiza el timestamp de un file, o lo crea)!
-help http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/ CommandsManual.html Isaac Lera - Máster Universitario en Ingeniería Informática
29
Actividad ❖
Crear un directorio en HDFS!
❖
Listar el directorio!
❖
Crear un fichero en local!
❖
Copiarlo dentro del directorio remoto!
❖
Listar el directorio!
❖
y copiarlo de nuevo a un directorio local http://localhost:50070
Isaac Lera - Máster Universitario en Ingeniería Informática
30
MapReduce execution #Listado de programas MapReduce de ejemplos! hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar! !
#Running an example:! hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar wordcount /files/data.txt /files/output! #/usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.5.2.jar! !
#See resultados! http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/ MapReduceTutorial.html Isaac Lera - Máster Universitario en Ingeniería Informática
31
Yarn Configuration http://hadoop.apache.org/docs/r2.5.1/hadoop-project-dist/hadoop-common/ SingleCluster.html#YARN_on_Single_Node!
! $jps
21212 Jps
20987 NodeManager
18939 NameNode
20859 ResourceManager
19065 DataNode
19272 SecondaryNameNode http://localhost:8088/
Run a MapReduce job. Isaac Lera - Máster Universitario en Ingeniería Informática
32
HDFS Access ❖
❖
Direct:! ❖
Communicate with HDFS directly through native client!
❖
Java, C++ !
Proxy Server ! ❖
Access HDFS through a Proxy Server – middle man!
❖
REST, Thrift (interface definition language), and Avro Servers (data serialization mechanism) Isaac Lera - Máster Universitario en Ingeniería Informática
33
Práctica #2 : Creating a Cluster (multi-node) ❖
Instalación de Hadoop 2.X http://hadoop.apache.org/releases.html#Download http://www.elcct.com/installing-hadoop-2-3-0-on-ubuntu-13-10/
http://localhost:50070
Isaac Lera - Máster Universitario en Ingeniería Informática
34
Ambari
http://ambari.apache.org/
It is aimed at making Hadoop management simpler by developing software for provisioning, managing, and monitoring Apache Hadoop clusters. Ambari provides an intuitive, easy-to-use Hadoop management web UI backed by its RESTful APIs.! Ambari enables System Administrators to:! ❖
Provision a Hadoop Cluster, Ambari provides a step-by-step wizard for installing Hadoop services across any number of hosts., Ambari handles configuration of Hadoop services for the cluster.,Manage a Hadoop Cluster!
Ambari provides central management for starting, stopping, and reconfiguring Hadoop services across the entire cluster.! ❖
Monitor a Hadoop Cluster,Ambari provides a dashboard for monitoring health and status of the Hadoop cluster.!
❖
Ambari leverages Ganglia for metrics collection.,Ambari leverages Nagios for system alerting and will send emails when your attention is needed (e.g., a node goes down, remaining disk space is low, etc).!
Ambari enables Application Developers and System Integrators to:! ❖
Easily integrate Hadoop provisioning, management, and monitoring capabilities to their own applications with the Ambari REST APIs.
Isaac Lera - Máster Universitario en Ingeniería Informática
36