Introducción a Hadoop



Documentos relacionados
APACHE HADOOP. Daniel Portela Paz Javier Villarreal García Luis Barroso Vázquez Álvaro Guzmán López

CURSOS DE VERANO 2014

CURSO: DESARROLLADOR PARA APACHE HADOOP

Hadoop. Cómo vender un cluster Hadoop?

Alessandro Chacón Ernesto Level Ricardo Santana

The H Hour: Hadoop The awakening of the BigData. Antonio Soto SolidQ COO

Big Data con nombres propios

Índice. Presentación Stratebi Introducción Qué es? Características Principales Instalación & Configuración Comandos

Big data A través de una implementación

Proyecto Fin de Carrera OpenNebula y Hadoop: Cloud Computing con herramientas Open Source

CURSO PRESENCIAL: DESARROLLADOR BIG DATA

Big Data. Analisís de grandes cantidades de datos. Sergio Marchena Quirós

Instalación Hadoop. Guía para Debian y derivados

FaceFinder MÓDULO DE BÚSQUEDA DE PERSONAS DENTRO DE UNA BASE DE DATOS DE ROSTROS

Conectores Pentaho Big Data Community VS Enterprise

CURSO: DESARROLLADOR PARA APACHE HADOOP

MÁSTER: MÁSTER EXPERTO BIG DATA

BIG DATA. Jorge Mercado. Software Quality Engineer

PINOT. La ingestión near real time desde Kafka complementado por la ingestión batch desde herramientas como Hadoop.

ÍNDICE. Introducción... Capítulo 1. Conceptos de Big Data... 1

CURSO: APACHE SPARK CAPÍTULO 2: INTRODUCCIÓN A APACHE SPARK.

Curso de verano. Biología Computacional: Análisis masivo de datos ómicos

Uso básico de la terminal

Big Data y Supercómputo. Dr. Jesús Antonio González (jagonzalez@inaoep.mx) Instituto Nacional de Astrofísica, Óptica y Electrónica (INAOE)

PROGRAMA FORMATIVO Administrador Big Data Cloudera Apache Hadoop

Práctica 2: Instalación de un gestor de bases de datos relacionales y desarrollo de una aplicación Web con persistencia de datos

INTRODUCCIÓN A APACHE SPARK CON PYTHON

XII Encuentro Danysoft en Microsoft Abril Business Intelligence y Big Data XII Encuentro Danysoft en Microsoft Directos al código

Comprender un poco más de los que es Apache Pig y Hadoop. El tutorial de cerdo muestra cómo ejecutar dos scripts de cerdo en modo local y el

General Parallel File System

Big Data y BAM con WSO2

Qué significa Hadoop en el mundo del Big Data?

Big Data en la nube. Use los datos. Obtenga información. La pregunta clave es: Qué puede hacer Doopex por mi negocio?

PROGRAMA FORMATIVO Desarrollador Big Data Cloudera Apache Hadoop

Guía Rápida de Puesta en Marcha de MailStore

PROGRAMA FORMATIVO Analista de Datos Big Data Cloudera Apache Hadoop

Servidor FTP en Ubuntu Juan Antonio Fañas

Capítulo 5. Cliente-Servidor.

CURSO PRESENCIAL: ADMINISTRADOR HADOOP

Yersinio Jiménez Campos Analista de datos Banco Nacional de Costa Rica

JAVA EE 5. Arquitectura, conceptos y ejemplos.

HDInsight. Big Data, al estilo Microsoft

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

Arquitectura de sistema de alta disponibilidad

Manual de instalación y configuración de hadoop en linux

Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación

PREVIEW BIDOOP 2.0. Big Data Brunch

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

Introducción a la extensión de scripting en gvsig 2.0

BIG DATA & SEGURIDAD UN MATRIMONIO DE FUTURO

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web.

Cocinando con Big Data

Práctica de introducción a

Studium, Campus Virtual de la Universidad de Salamanca.

Libertya, el ERP libre

Software Libre para Aplicaciones de Big Data

Autenticación Centralizada

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

Modelo de Gobierno de Datos con SPARK

App para realizar consultas al Sistema de Información Estadística de Castilla y León

Informática 4º ESO Tema 1: Sistemas Informáticos. Sistemas Operativos (Parte 2)

Roberto Díaz Morales MLG 24/06/2013

Big Data: retos a nivel de desarrollo. Ing. Jorge Camargo, MSc, PhD (c) jcamargo@bigdatasolubons.co

MANUAL DE USUARIO. Webservice simple para la exportación rápida de información proveniente de una base de datos. Versión 0,1,1

MANUAL DE INSTALACIÓN BONITA BPM 6.3 EN CANAIMA 4.0

Comandos HDF Breve manual

MÁSTER: MÁSTER DESARROLLADOR BIG DATA

CONFIGURACIONES DE ALTA DISPONIBILIDAD

Práctica 1: Herramientas básicas:

GUÍA TÉCNICA. Desarrollo de Sistemas de Información la plataforma Business Intellingence Pentaho

Presentación del Curso Virtual PROGRAMACIÓN WEB PHP CON MYSQL BÁSICO

BIG BIG DATA DATA Centro de Alta Capacitación en Tecnologías de la Información

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx

Servidor FTP. # rpm ivh vsftpd. Configuración

Animalandia. Manual de instalación. (Actualizado: Sept-2015) Fernando Lisón Martín

TEMA: PROTOCOLOS TCP/IP

Curso Online de Microsoft

Arquitectura. 1.- Aplicaciones Web. Definición. Arquitectura clásica. Contenidos. 1.- Aplicaciones Web

PVFS (Parallel Virtual File System)

a la distancia de unclic

Instituto Tecnológico de Las América. Materia Sistemas operativos III. Temas. Facilitador José Doñe. Sustentante Robín Bienvenido Disla Ramirez

LABORATORIO DE RC: PRÁCTICA 4: IMPLEMENTACIÓN DE UN CLIENTE DE CORREO

Proceso Unificado de Rational PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes:

Arquitectura de Aplicaciones

Módulos: Módulo 1. Hardware & Arquitectura de sistemas - 20 Horas

Windows Server 2012: Infraestructura de Escritorio Virtual

[4 ]Instalación y configuración básica de drupal.

Diplomado en Big Data

Abstracción. Arquitectura y diseño. Base de datos. Autana Consultores de Tecnología ACT Centro de Utilidades

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

CAPÍTULO 3 DISEÑO DE LA ARQUITECTURA


INSTALACION MANUAL DE ECLIPSE EN UBUNTU

Microsoft SQL Server 2005

GlusterFS. Una visión rápida a uno de los más innovadores sistema de archivos distribuido

Introducción a las redes de computadores

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT

Shell de Unix ProgPLN

Transcripción:

Introducción a Hadoop Patrocinado por Bahía Software Tomás Fernández Pena Centro Singular de Investigación en Tecnoloxías da Información Universidade de Santiago de Compostela citius.usc.es

Qué es MapReduce? Modelo de programación data-parallel diseñado para escalabilidad y tolerancia a fallos en grandes sistemas de commodity hardware Basado en la combinación de operaciones Map y Reduce Diseñado originalmente por Google (2004) Usado en múltiples operaciones Manejo de varios petabytes diarios Popularizado por la implementación open source Apache Hadoop Usado por múltiples organizaciones como Facebook, Twitter, Tuenti, Last.fm, ebay, LinkedIn, Rackspace, Yahoo!, AWS, etc. 1/46

Hadoop Implementación open-source de MapReduce Procesamiento de enormes cantidades de datos en grandes clusters de hardware barato (commodity clusters) Escala: petabytes de datos en miles de nodos 2/46

Características de Hadoop Incluye Almacenamiento: HDFS Procesamiento: MapReduce Ventajas Bajo coste: clusters baratos o cloud Facilidad de uso Tolerancia a fallos 3/46

Instalación Instalación relativamente simple: aplicación Java (múltiples opciones de optimización) Paquete fuente: http://hadoop.apache.org/releases.html Sistemas preconfigurados proporcionados por empresas como Cloudera (www.cloudera.com), MapR (www.mapr.com) o Hortonworks (hortonworks.com) Modos de funcionamiento: Standalone: todo en un nodo, para pruebas Pseudodistribuido: funciona como una instalación completa, pero en un solo nodo Totalmente distribuido, en un cluster 4/46

Arquitectura Cluster de prueba (instalado en AWS): 6 máquinas en AWS: 1 máster, 4 workers y 1 máster secundario 5/46

YARN Este esquema se ha modificado en Hadoop 2.0 con YARN (Yet Another Resource Negociator) separa las dos funcionalidades del Jobtracker (gestión de recursos y job-scheduling/monitorización) en demonios separados permite que diferentes tipos de aplicaciones (no solo MapReduce) se ejecuten en el cluster 6/46

Ecosistema Hadoop (I) Diversas tecnologías relacionadas: Pig: lenguaje data-flow de alto nivel para facilitar la programación MapReduce Hive: infraestructura de data-warehouse construida sobre Hadoop Avro: sistema de serialización de datos (alternativa a los Writables) Oozie, Cascading, Azkaban, Hamake: planificadores de workflows para gestionar trabajos Hadoop Whirr: herramientas para iniciar clusters Hadoop y otros servicios en diferentes proveedores cloud Ambari: herramienta basada en web para provisionar, gestionar y monitorizar clusters Hadoop Hue: interfaz web para simplificar el uso de Hadoop 7/46

Ecosistema Hadoop (II) HBase: base de datos distribuida no-relacional (NoSQL) que corre sobre HDFS (inspirado en Google BigTable) Sqoop: transferencia eficiente de datos eficiente entre Hadoop y bases de datos relacionales ZooKeeper: servicio centralizado de configuración, nombrado, sincronización distribuida y servicios de grupos para grandes sistemas distribuidos HCatalog: capa de abstracción de diferentes formatos de datos en Hadoop (texto, CSV, RCFiles o Sequence Files) WebHCat: API REST-like para HCatalog y componentes Hadoop relacionados (antes Templeton) 8/46

Ecosistema Hadoop (III) S4, Storm: procesamiento de flujos de datos (stream processing) Hama: framework de computación Bulk Synchronous Parallel sobre HDFS Flume: obtención, agregación y movimiento de grandes ficheros de log a HDFS Twister: aplicaciones MapReduce iterativas Mahout: algoritmos escalables de machine learning y minería de datos sobre Hadoop Chukwa: sistema de recogida de datos para monitorizar grandes sistemas distribuidos Más ejemplos en bigdata-hadoop.pragsis.com/pages/2/glosario_big_data 9/46

El libro 10/46

HDFS: Hadoop Distributed File System Hadoop puede acceder a diferentes tipos de filesystems (local, HDFS, KFS, S3,... ) Se recomienda HDFS: Hadoop Distributed File System HDFS: Ventajas Diseñado para almacenar ficheros muy grandes en commodity hardware Elevado ancho de banda Fiabilidad mediante replicacion HDFS: Inconvenientes Elevada latencia Poco eficiente con muchos ficheros pequeños 11/46

Conceptos de HDFS Bloques Por defecto 64 MB Namenode Mantiene la información (metadatos) de los ficheros que residen en el HDFS Datanodes Mantienen los datos Secondary namenodes Mantienen checkpoints del Namenode 12/46

Interfaz con HDFS Tres interfaces: 1. Interfaz en línea de comandos: comando hadoop fs 2. Interfaz Web 3. API de programación Interfaz en línea de comandos: Permite cargar, descargar y acceder a los ficheros HDFS desde línea de comandos Ayuda: hadoop fs -help Interfaz Web: Puerto 50070 del namenode 13/46

Interfaz en línea de comandos HDFS Algunos comandos Comando hadoop fs -ls <path> hadoop fs -cp <src> <dst> hadoop fs -mv <src> <dst> hadoop fs -rm <path> hadoop fs -rmr <path> hadoop fs -cat <path> hadoop fs -mkdir <path> hadoop fs -chmod... hadoop fs -chown... hadoop fs -put <local> <dst> hadoop fs -get <src> <local> Significado Lista ficheros Copia ficheros HDFS a HDFS Mueve ficheros HDFS a HDFS Borra ficheros en HDFS Borra recursivamente Muestra fichero en HDFS Crea directorio en HDFS Cambia permisos de fichero Cambia propietario/grupo de fichero Copia de local a HDFS Copia de HDFS a local 14/46

Hands-on 15/46

Hans-on HDFS 1. Abrir sesión (usando NX) en la máquina de trabajo (54.229.71.134) 2. Abrir un terminal y copiar los datos que usaremos a vuestro home en HDFS hadoop fs -put /opt/bdds/datos-hdp/datos. 3. Comprobar que se han copiado con hadoop fs -ls hadoop fs -ls hadoop fs -ls datos hadoop fs -ls datos/all 4. Abrir un navegador y conectarse al namenode, puerto 50070 http://10.0.0.10:50070 En Browse filesystem acceder a nuestro home en HDFS (/user/usern_usuario) Comprobar que los ficheros grandes se encuentran divididos en varios bloques y cada bloque replicado 3 veces 16/46

Modelo de programación Entrada y salida: listas de pares clave/valor El programador especifica las funciones map y reduce Función Map: genera claves/valores intermedios map(k 1, V 1 ) list(k 2, V 2 ) Para cada K 1 y V 1 se obtiene una lista intermedia (K 2, V 2 ) es un par clave/valor intermedio Funcion Reduce: combina los valores intermedios para cada clave particular reduce(k 2, list(v 2 )) (K 3, list(v 3 )) Para cada clave de salida K 3 se genera una lista de valores - list(v 3 ) suele tener un único valor - A menudo, K 3 = K 2 17/46

Automatización del proceso Sistema de ficheros distribuido Entradas: (K i 1,V i 1) Entradas: (K j 1,V j 1) Entradas: (K k 1,V k 1) map map map (K i 2,V i 2) (K i 2,V i 2) (K i 2,V i 2) (K i 2,V i 2) (K i 2,V i 2) (K i 2,V i 2) (K i 2,V i 2) (K i 2,V i 2) (K i 2,V i 2) Barajado y ordenación por valores de claves (K a 2,list(V a 2)) (K b 2,list(V b 2)) (K c 2,list(V c 2)) (K d 2,list(V d 2)) reduce reduce (K a 3,V a 3) (K b 3,V b 3) (K c 3,V c 3) (K d 3,V d 3) 18/46

Hands-on 19/46

1 Ejemplos basados en los del libro Hadoop in Action, C. Lam, Manning, 2011 20/46 Introducción a MapReduce Hadoop HDFS MapReduce MapReduce en Java Alternativas a Java Hands-on MapReduce Copiar los ficheros de ejemplo a nuestro $HOME 1 cp -r /opt/bdds/hadooptaller/ $HOME Probaremos cuatro formas de usar MapReduce Programando con Java Usando Hadoop Streaming (Python) Languaje de alto nivel: Pig Lenguage de consultas tipo SQL: Hive Datos de entrada Fichero de citas de patentes (cite75_99.txt) - Formato: patente,patente_a_la_que_cita Fichero de descripción de patentes (apat63_99.txt)

Hands-on MapReduce Java Directorio taller-hadoop_java Cinco ejemplos sencillos 1. CitingPatents: ejemplo de mapreduce simple 2. CitationNumberByPatent_chained: encadenamiento Map Reduce Map 3. CitationNumberByPatent_workflow: encadenamiento con Oozie 4. CitationNumberByPatent_1step: ejemplo anterior en un sólo paso 5. SimpleReduceSideJoin: ejemplo de un inner join Acceder al directorio y crear los paquetes usando Maven cd $HOME/HadoopTaller/taller-hadoop_java mvn package 21/46

Ejemplo 1: CitingPatents Objetivo: para cada patente, obtener la lista de las que la citan Formato salida: patente patente1,patente2... Mapper: 3858245,3755824 3755824 3858245 Reducer: 3755824 {3858245 3858247... } 3755824 3858245,3858247... Combiner: función de agregación local para las claves repetidas de cada map Se ejecuta en el mismo nodo que el map Habitualmente, misma función que el reducer Es opcional (en programa debe funcionar igual con o sin Combiner) 22/46

Ejemplo 1: CitingPatents ejecución Acceder al directorio cd $HOME/HadoopTaller/taller-hadoop_java/CitingPatents Ejecución en local (para depurado) hadoop jar target/citingpatents-0.0.1.jar -fs file:/// -jt local /opt/bdds/datos-hdp/datos/mini/cite75_99.txt salida/cp Salida en el fichero salida/cp/part-r-00000 Un fichero part por cada proceso reducer Ejecución en el cluster hadoop jar target/citingpatents-0.0.1.jar datos/all/cite75_99.txt salida/cp Salida en HDFS Información sobre ejecución: http://10.0.0.10:50070 23/46

Ejemplo 2: CitationNumberByPatent_chained Objetivo: para cada patente, obtener el número de las que la citan Encadena CitingPatents con un mapper que cuenta el número de patentes que citan Mapper2: 3755824 3858245,3858247... 3755824 9 Utiliza ChainMapper y ChainReducer Ejecuta una cadena de mappers en un único mapper y un reducer seguido de una cadena de mappers en un único reducer (M+RM*) Sólo disponibles en la API antigua 24/46

Ejemplo 2: CitationNumberByPatent_chained ejecución Ejecución en el cluster hadoop jar target/citationnumberbypatent_chained-0.0.1.jar datos/all/cite75_99.txt salida/cnbp_c 25/46

Ejemplo 3: CitationNumberByPatent_workflow Lo mismo que el ejemplo 2, pero usando Oozie Apache Oozie: Ejecución de workflows de trabajos dependientes Workflows compuestos de diferentes tipos de trabajos Hadoop (MapReduce, Pig, Hive, etc.) Permite la ejecución en un cluster de miles de workflows compuestos por decenas de trabajos y implifica la re-ejecución de workflows fallidos Definición del workflow escrita en XML usando HPDL (Hadoop Process Definition Language) 26/46

Ejemplo 3: CitationNumberByPatent_workflow ejecución 1. Copiar el.jar del CitationNumberByPatent_chained al directorio lib de CitationNumberByPatent_workflow 2. Copiar todo el directorio CitationNumberByPatent_workflow al HDFS hadoop fs -put CitationNumberByPatent_workflow. 3. Lanzar el workflow con oozie oozie job -config CitationNumberByPatent_workflow/job.properties -run 4. Controlar la ejecución oozie job -info código_del_job Interfaz web: http://10.0.0.10:11000 27/46

Ejemplo 4: CitationNumberByPatent_1step Objetivo: lo mismo que en el ejemplo 2, pero con un único MapReduce Mapper: 3858245,3755824 3755824 1 Reducer: 3755824 {1 1... } 3755824 9 Combiner: Misma función que el reducer 28/46

Ejemplo 4: CitationNumberByPatent_1step ejecución Ejecución en el cluster hadoop jar target/citationnumberbypatent_1step-0.0.1.jar datos/all/cite75_99.txt salida/cnbp_1s 29/46

Ejemplo 5: SimpleReduceSideJoin Objetivo: unir datos de dos entradas (a) Salida de CitingPatents (ejemplo 1) (b) Fichero con información de las patentes (apat63_99.txt) Salida: patente, país, n_citas Un mapper diferente para cada entrada (a) Mapper-a (CNBPTaggedMapper) 3755824 3858245,3858247... 3755824 ''cite'', 9 (b) Mapper-b (PBCMapper) 3755824,1973,4995,1971,''US'',''NY''... 3755824 ''country'', US Reducer: hace un join de los dos mappers por patente 3755824 ''cite'', 9 3755824 ''country'', US 3755824 US, 9 30/46

Ejemplo 5: SimpleReduceSideJoin ejecución Ejecución en el cluster hadoop jar target/simplereducesidejoin-0.0.1.jar salida/cp datos/all/apat63_99.txt salida/srsj 31/46

Alternativas a Java Ventajas de Java Eficiencia Flexibilidad Inconvenientes Dificultad de programación Alternativas a Java Hadoop Pipes: interfaz C++ a Hadoop MapReduce Hadoop Streaming - Permite usar cualquier lenguaje que pueda leer/escribir en la entrada/salida estándard - Ejemplos: Python, Ruby, Perl, bash,... - Desarrollo rápido de códigos - Menor eficiencia y flexibilidad Alternativas de alto nivel: Pig y Hive 32/46

Hands-on MapReduce Streaming Directorio $HOME/HadoopTaller/taller-hadoop_python Dos ejemplos sencillos escritos en Python (fichero apat63_99.txt) 6. CountryClaims: Obtiene la media de reivindicaciones ( claims ) de las patentes por países 7. CuentaAtributosUsandoAggregate: Suma las ocurrencias de un campo determinado 33/46

Ejemplo 6: CountryClaims Mapper lee las líneas del fichero y produce el país (campo 4) y el nº de claims (campo 8) Reducer lee la salida del mapper (ordenadas por países) para cada país acumula los claims para obtener la media debe detectar el cambio de país en los datos de entrada 34/46

Ejemplo 6: CountryClaims ejecución Ejecución en el cluster hadoop jar /opt/hadoop/contrib/streaming/hadoop-streaming*.jar -input datos/all/apat63_99.txt -output salida/cc -mapper CountryClaimsMapper.py -reducer CountryClaimsReducer.py -file CountryClaimsMapper.py -file CountryClaimsReducer.py -numreducetasks 1 35/46

Ejemplo 7: CuentaAtributosUsandoAggregate Suma las ocurrencias de un campo dado en un fichero CSV Mapper Para el campo seleccionado emite el valor del campo (clave) y un 1 (valor) Reducer Utiliza la opción LongValueSum del paquete Aggregator Otras opciones del paquete Aggregator son: DoubleValueSum (String/Long)Value(Max/Min) UniqValueCount ValueHistogram suma una secuencia de doubles obtiene el máximo/minimo para cada clave, obtiene el número de valores únicos para cada clave, obtiene el número de valores únicos, y el mínimo, mediana, máximo, media y desviación estándar de las ocurrencias de cada valor 36/46

Ejemplo 7: CuentaAtributosUsandoAggregate ejecución Ejecución en el cluster hadoop jar /opt/hadoop/contrib/streaming/hadoop-streaming*.jar -input datos/all/apat63_99.txt -output salida/caua -mapper 'CuentaAtributosUsandoAggregate.py 1' -reducer aggregate -file CuentaAtributosUsandoAggregate.py -numreducetasks 1 37/46

Pig Iniciado en Yahoo! Research Eleva el nivel de abstracción para procesar grandes conjuntos de datos Facilita centrarse en el qué en vez de en el cómo Expresa secuencias de trabajos MapReduce Modelo de datos: bags anidadas de items Pig bag : colección de tuplas Proporciona operadores relacionales (JOIN, GROUP BY, etc.) Fácil definir y usar funciones definidas por el usuario (UDFs) escritas en Java 38/46

Pig Dos elementos principales: Un lenguaje propio: Pig Latin Un entorno de ejecución: local o Hadoop Programas ejecutados como: Scripts en Pig Latin Grunt: shell interactivo para ejecutar comandos Pig Comandos Pig ejecutados desde Java PigPen: entorno de desarrollo para Eclipse 39/46

Hands-on Pig Directorio $HOME/HadoopTaller/taller-hadoop_pig Dos ejemplos sencillos 8. CitationNumberByPatent.pig: hace lo mismo que los ejemplos 2, 3 o 4 9. SimpleJoin.pig: hace lo mismo que el ejemplo 5 40/46

Ejemplo 8: CitationNumberByPatent.pig ejecución Ejecutarlo en el cluster en modo interactivo Ejecutar el comando pig Con pig -x local lo ejecutaríamos en local En el prompt de grunt ir ejecutando una a una las instrucciones del script Cambiar $input por datos/all/cite75_99.txt y $output por salida/cnbp_pig Después de una asignación se puede usar el comando ILLUSTRATE para ver una muestra del resultado, por ejemplo grunt> ILLUSTRATE citas El comando STORE lanza la ejecución del MapReduce 41/46

Ejemplo 9: SimpleJoin.pig ejecución Ejecutarlo en el cluster en modo script pig -param citas=datos/all/cite75_99.txt -param info=datos/all/apat63_99.txt -param output=salida/sj_pig SimpleJoin.pig 42/46

Hive Desarrollado en Facebook Infraestructura de data warehouse y lenguaje declarativo tipo SQL para el análisis de grandes datasets en filesystems compatibles con Hadoop (HDFS, S3,...) HiveQL: dialecto de SQL Peticiones HiveQL se convierten en un grafo dirigido acíclico de trabajos MapReduce Organiza los datos del filesystem en tablas Listas de metadatos (p.e. esquemas de tablas) almacenados en una base de datos (por defecto, Apache Derby) Soporta particionado de tablas, clustering, tipos de datos complejos, etc. Puede llamar a scripts de Hadoop Streaming desde HiveQL 43/46

Hands-on hive Directorio $HOME/HadoopTaller/taller-hadoop_hive Un ejemplos sencillos 10. SimpleJoin.hive: hace el mismo join que los ejemplos 5 y 10 44/46

Ejemplo 10: SimpleJoin.hive ejecución Ejecutarlo en el cluster en modo interactivo Ejecutar el comando hive Con hive -f script.hive ejecutaríamos el script completo Con hive -e 'comando_hive' se puede ejecutar una orden simple En el prompt de hive ir ejecutando una a una las instrucciones del script 45/46

Ejemplo 10: SimpleJoin.hive ejecución Algunas características Usando Derby (por defecto), la metainformación (metastore) se guarda en el directorio local Alternativa: usar otra base de datos como MySQL para la metastore La operación LOAD mueve el fichero al directorio de Hive Es una simple operación de ficheros Los ficheros no se parsean ni se modifican Si no se quiere mover los ficheros (p.e. para seguir usando Hadoop o Pig) hay que crear la tabla EXTERNAL Alternativa: usar HCatalog - Permite que Hadoop o Pig usen la metastore de Hive 46/46

Preguntas? tf.pena@usc.es