30
Introducción a Apache Hive 1

Webinar de Introducción a Hive y Zeppelin

Embed Size (px)

Citation preview

Page 1: Webinar de Introducción a Hive y Zeppelin

Introducción a Apache Hive

1

Page 2: Webinar de Introducción a Hive y Zeppelin

Agenda

2

• Introducción a Hadoop• Introducción a Hive• DDL• DML• Ejemplos

Page 3: Webinar de Introducción a Hive y Zeppelin

whoami

3

Page 4: Webinar de Introducción a Hive y Zeppelin

Introducción a Hadoop

4

Page 5: Webinar de Introducción a Hive y Zeppelin

¿ Qué es Hadoop ?

5

• Framework de procesamiento distribuido• Sistema de archivos distribuido• Provee un modelo sencillo de programación• Arquitectura share-nothing• Escalable• Tolerante a fallos• Corre sobre hardware no especializado

• Componentes :• HDFS (Sistema de archivos)• YARN (Framework de asignación de recursos de procesamiento)

• MapReduce : Framework de procesamiento distribuido

Page 6: Webinar de Introducción a Hive y Zeppelin

HDFS

6

Page 7: Webinar de Introducción a Hive y Zeppelin

Características

7

• Data organizada en bloques– Se distribuyen en varios nodos– El tamaño es configurable, usualmente entre 64 y 256 MB

• Los datos están replicados– Generalmente se usan 3 replicas por bloque

• Usa lecturas secuenciales– Generalmente sobre archivos N bloques en tamaño

• Optimizado para lecturas– No es buen filesystem para acceso aleatorio

• Es un sistema de archivos “Append only”

Page 8: Webinar de Introducción a Hive y Zeppelin

Arquitectura (con HA)NameNode (Active)

NameSpace

Block ManagementBlock Map

DataNode DataNode DataNode

NameSpace MetaData Image (Checkpoint) And Edit Journal Log

…8

BL1 BL6 BL1 BL3 BL1 BL7

BL2 BL7 BL6 BL2 BL8 BL9

NameNode (StandBy)

NameSpace

Block ManagementBlock Map

Page 9: Webinar de Introducción a Hive y Zeppelin

YARN

9

Page 10: Webinar de Introducción a Hive y Zeppelin

Resource Manager

10

• Un cluster tiene un solo Resource Manager o dos en modo de HA.

• Provee administración de recursos (CPU y Memoria)– Controla los NodeManagers de cada nodo– Envia tareas a nodos con recursos disponibles

• Controla el ciclo de un trabajo– Solicitud de ejecución de un trabajo– Ejecución de las tareas– Recuperación de errores de las tareas– Controlar la ejecución hasta su finalización

Page 11: Webinar de Introducción a Hive y Zeppelin

NodeManager

11

• Se ejecutan en los nodos junto con el Datanode

• Manejan las tareas en el nodo• Se comunican con el ResourceManager– Recibir nuevas tareas– Enviar actualizaciones de su estado

• Reciben los programas a ejecutar• Sus recursos se agrupan en contenedores, que son una RAM y CPU disponibles para los procesos.

Page 12: Webinar de Introducción a Hive y Zeppelin

El ciclo de un job

Client

NodeManager

NodeManager

NodeManager

NodeManager

1. Client gets metadata

3. Resourcemanager informNodeManagers

4. NodeManagers update

2. Client submits job

job status

Resourcemanager

NameNode

12

Page 13: Webinar de Introducción a Hive y Zeppelin

Resource Manager

Node Manager

Task

Task

Task

Node Manager

DataNodeDataNode

Task

Task

Task

Procesamiento y almacenamiento en Hadoop

NameNode

Client Job

Node Manager

Task

Task

Task

DataNode

El procesamiento tiene lugar donde están los datos

Server Server

13

Page 14: Webinar de Introducción a Hive y Zeppelin

HiveQuery

• Interfaz SQL para acceder a datos en HDFS

• Convierte sentencias SQL a MapReduce.

• Se puede ejecutar desde distintos clientes

• Desarrollado por Facebook– Sus BD relacionales no podían manejar los volúmenes de datos

14

Query(Hive)

Scripting(Pig)

Metadata Management(HCatalog)

Distributed Processing(MapReduce, TEZ, Spark)

YARN

HDFS Storage

Page 15: Webinar de Introducción a Hive y Zeppelin

Algunos conceptos iniciales• Componente para datawarehousing sobre Hadoop• NO es una base de datos para OLTP• Permite consultar y manejar datos estructurados y semiestructurados– Usa alguno de los motores de ejecución sobre YARN– Usa HDFS (o HBase) como almacenamiento

• Consiste en :– Metastore

• Almacenar información de metadatos• Provee la información de estructura de tabla a los datos almacenados

– Hive engine• Procesamiento, compilación, optimización y ejecución de queries

MapReduce/TEZ/Spark

HDFS

MetastoreHive

Engine

15

Page 16: Webinar de Introducción a Hive y Zeppelin

HiveQL• Lenguaje SQL de Hive– Utiliza los conceptos de bases de datos relacionales como tablas, columnas, vistas, etc.

• Diseño para manejar datos estructurados– Tiene algunas variaciones respecto al SQL de una base relacional

• Traduce las sentencias SQL en programas ejecutables en YARN.

• Soporta casos de uso como:– Querys Ad-hoc– Agregaciones, sumarizaciones, UDF, etc.– Es la herramienta más usada para Data Analysis en Hadoop

16

Page 17: Webinar de Introducción a Hive y Zeppelin

Arquitectura

MapReduce/TEZ/Spark

HDFS

MetastoreHive

Engine

Hive

Interacciones a través de clientes

17

Page 18: Webinar de Introducción a Hive y Zeppelin

HCATALOG

18

Servicio que permite guardar metadatos para que distintas aplicaciones de Hadoop puedan usarla.

Es un proyecto que nació en forma independiente, luego se hizo merge con HIVE.

En Hive se utiliza el término Metastore.

Page 19: Webinar de Introducción a Hive y Zeppelin

Jerarquía de entidades

19

• Base de datos : Espacio de nombre para evitar conflictos de nombre de tablas y permite también asignar permisos a nivel usuario.

• Tablas : Unidades de datos homogéneas formadas por filas y columnas con la misma metadata.

• Particiones : Unidad de almacenamiento dentro de una tabla que permite agrupar registros que comparten algún criterio.

• Buckets : Agrupación de registros de acuerdo al valor de un campo dentro de una partición.

Page 20: Webinar de Introducción a Hive y Zeppelin

¿ Qué es una tabla en Hive ?

20

• Consiste de :– Datos – Usualmente uno o más archivos en HDFS

– Schema – en la forma de metadatos guardados en algún repositorio donde Hive tiene acceso.

• Esto implica :– Schema y datos están separados

• Se puede definir un schema para datos existentes

• Los datos pueden agregar o procesarse independientemente

• Hive puede “apuntar” a datos que ya existían en cualquier lugar en HDFS (tablas externas)

– Se debe definir la metadata para acceder a datos que se encuentran en HDFS o para datos que serán insertados usando Hive.

Page 21: Webinar de Introducción a Hive y Zeppelin

Operaciones con tablas

21

• Crear una tabla:– CREATE TABLE mytable (name chararray, age int)

ROW FORMAT DELIMITEDFIELDS TERMINATED BY ',' STORED AS TEXTFILE;

• ROW FORMAT son comandos de HIVE que indican que los datos de una tabla están delimitados

• Junto a CREATE TABLE se puede especificar particiones y buckets– CREATE TABLE mytable– PARTITIONED BY (name STRING, age INT)– CLUSTERED BY (name) INTO N BUCKETS

• Otras operaciones :– SHOW TABLE– CREATE TABLE– ALTER TABLE– DROP TABLE

Page 22: Webinar de Introducción a Hive y Zeppelin

Particiones

22

HIVE hace full scans sobre una tabla cada vez que se ejecuta un query sobre ella

Las particiones en Hive permiten que solo se procesen las particiones afectadas en un query

La partición es un concepto lógico pero tiene una consecuencia en el almacenamiento físico de los datos.

Las particiones pueden estar dentro del directorio donde está definida la tabla (internas) o en cualquier ubicación (externas).

Las columnas de partición no son parte de los datos almacenados

Page 23: Webinar de Introducción a Hive y Zeppelin

Buckets

23

Otro método de segregar los datos de una tabla además de particiones

La idea es generar un archivo que contiene todos los registros que comparten el mismo valor de una columna

CREATE TABLE weblog (user_id INT, url STRING, source_ip STRING) PARTITIONED BY (dt STRING) CLUSTERED BY (user_id) INTO 96 BUCKETS

Es responsabilidad del programador insertar los datos correctamente (en la partición y la cantidad de buckets definidos)

SET hive.enforce.bucketing = trueoSET mapreduce.job.reduces = 96

Page 24: Webinar de Introducción a Hive y Zeppelin

Optimización

24

1) Usar EXPLAIN para analizar tu query2) Para probar tu SQL usar TABLESAMPLE3) GROUP BY mejor a DISTINCT4) Utilizar formatos optimizados como ORC o

Parquet5) Reordenar los JOINS poniendo las tablas más

grandes al final.6) Cambiar JOINS por subquerys.7) Evitar excesiva cantidad de particiones o

anidación profunda de particiones8) Usar Hive con Tez o Spark si están

disponibles.9) Usar vectorización

Page 25: Webinar de Introducción a Hive y Zeppelin

Ejecuciones periódicas de MapReduce o Spark

HDFS

input data no estructurada desde orígenes externos

Metastore (Schema

Information)

SQLQuerys

Caso de uso clásico de Hive

Output data optimizada para Hive

Hive

25

Page 26: Webinar de Introducción a Hive y Zeppelin

Hive con HBase• Hive tiene integrado nativamente con HDFS

• Hive incluye “storage handlers” para HBase

• A través de estos, Hive puede leer y escribir en HBaseStorage

Handler Interface

HBase Handler

HBase Tables

Hive HBaseHBase

26

API

HDFS

Metastore

Page 27: Webinar de Introducción a Hive y Zeppelin

Comparación

Map Reduce / Spark Pig Hive

Tipos de datos Estructurado/Semi/No Estructurado

Estructurado/Semi Estructurado/Semi

Casos de uso Procesos muy customizados / Procesamiento complejo (Data mining, etc)

ETL Acceso simple via SQL

Tiempo de desarrollo Largo Corto/Medio Corto

Performance comparada Alta Media/Baja Baja

Page 28: Webinar de Introducción a Hive y Zeppelin

Apache Zeppelin

28

Interfaz web para análisis de datos

Permite hacer ingestión de datos, análisis exploratorio, analítica y visualización

Los “notebooks” se pueden compartir y hacer un desarrollo colaborativo

Page 29: Webinar de Introducción a Hive y Zeppelin

Intérpretes de Zeppelin

29

Page 30: Webinar de Introducción a Hive y Zeppelin

Algo para leer

30

http://hive.apache.orghttp://hortonworks.com/apache/hive/http://maprdocs.mapr.com/home/Hive/Hive.htmlhttps://github.com/Prokopp/the-free-hive-book