Big Data Fundamentals Carlos Roda & Bert Otte
Fundamentos Big Data & Ecosistema Hadoop Taller Semana 1
Big Data y La Transformación Digital de Empresas Transformación Digital de las Empresas
Variedad
Infraestructura Veracidad
Velocidad
BIG DATA
Cultura Roles (CDO?) Interno/Externo
Valor
Gestión Datos
Volumen
Toma Decisiones basada en Datos
Hadoop: HDFS + MapReduce H(adoop) D(istributed) F(ile) S(ystem)
1
Bloque 1
DATOS
MapReduce
Input (HDFS)
1 K1
Bloque 2
Name Node (Cliente)
Map
Name Node (Backup)
K1 K1
K2
Reduce
K1
Bloque 3 2 K1
“Latidos”
Datos Redundantes
Output (HDFS)
2 Map
K2 K2
K2
3
Reduce
K2
3 K1
Map K2
Data Node
Data Node
Data Node
1
2
3
Shuffle Uso de “Commodity Hardware”
Hadoop Job
Ejemplo MapReduce: Contar Palabras
Ecosistema (Zoológico) Hadoop
Pig
YARN (Core Hadoop)
HDFS (Core Hadoop) Workflow
Coordinación
Flume
Sqoop
Spark
Storm
Procesamiento
HBase
ZooKeeper
Oozie
MapReduce
Scripting
Impala
Hive
Gestión Recursos
Almacenamiento
Hoy tocaremos los siguientes componentes…
Pig
YARN (Core Hadoop)
HDFS (Core Hadoop) Workflow
Coordinación
Flume
Sqoop
Spark
Storm
Procesamiento
HBase
ZooKeeper
Oozie
MapReduce
Scripting
Impala
Hive
Gestión Recursos
Almacenamiento
NO PRESENTES Estos ejercicios son para las personas que NO pudieron atender al taller
Ejercicios
HUE – Hadoop User Experience Instalar una distribución de Hadoop para cada uno iba a ser excesivamente complejo. HUE es una aplicación web que permite acceder y usar Hadoop desde cualquier navegador. Permite explorar HDFS, los trabajos que están corriendo, lanzar consultas Hive, trabajos MapReduce, modificar Hive MetaStore, etc. Ofrece una Demo online que corre contra una distribución de Hadoop ya preinstalada en la nube, a la que podéis acceder si queréis para las preguntas que lo permitan.
Conexión a la plataforma Accesos: http://demo.gethue.com/ Usuario: demo Password: demo
Explora la interfaz -Echa un vistazo a los diferentes elementos que conforman los menús y elementos de la barra superior (desplegando aquellos que lo permitan) y anota los que conozcas y/o creas que vas a tener que utilizar durante la práctica.
Explora los ficheros de HDFS Pista: no confundir con “Mis Documentos” de HUE, que tiene el símbolo de una casa y se utiliza para guardar ficheros especiales que no están en la distribución HDFS subyacente. -Anota la ruta en la que estás situado/a justo al acceder al explorador de archivos. El último trozo de dicha ruta debería corresponderse con tu nombre de usuario. En cualquier momento puedes volver a esta carpeta pulsando el botón “Inicio” que aparece justo a la izquierda de la ruta (y que también tiene un símbolo de casa pero no confundir con el de “Mis Documentos). -Ve al directorio raíz (/) y anota las carpetas que veas
-Utiliza el buscador dentro de la carpeta /user para filtrar y mostrar solamente la carpeta “hive”. Anota la ruta en la que se encuentra, así como el nombre del usuario propietario de la misma y el grupo al que pertenece. Dentro de dicha carpeta deberías ver otra carpeta llamada “warehouse”, aquí es donde se guardan las tablas de datos que Hive gestiona.
Ficheros en HDFS En HDFS existen diferentes formatos para codificar los datos: • Text: comprensible para humanos, sin compresión, por ejemplo CSV • Avro: orientado a filas, buena compresión • Parquet: orientado a columnas, eficiente en disco al consultar columnas concretas • Otros… En /user/hive/warehouse accede a la carpeta “customers” -Selecciona el fichero que hay dentro y pega un “pantallazo” del resumen (summary) del mismo.
-Descarga el fichero a tu ordenador, ábrelo con un editor de texto (notepad++ o bloc de notas, por ejemplo). ¿Es completamente legible o aparecen caracteres raros? Anota los 4 primeros caracteres del fichero. ¿Qué significan? (En caso de duda, buscar en Internet…)
Listar tablas, descargar resultado Abre el panel Query Editors > Hive Ejecutando la consulta “show tables;” obtendrás un listado de todas las tablas existentes. En la pestaña de resultados podrás verlo en formato de tabla y justo a la izquierda verás varios símbolos, siendo el último de ellos para descargar dicho resultado. -Descarga el resultado de la consulta de listar tablas y cópialo aquí.
Obs: esta es una consulta muy sencilla y directa, por lo que no se genera ninguna traducción a un trabajo MapReduce. Si vas al Job Browser no debería aparecer ningún resultado (si estás en local) o de los que veas (si estás en la demo online) ninguno corresponderá a un “show tables;”
Consultar tabla Sigue en el panel Query Editors > Hive Vamos a trabajar ahora sobre la tabla customers. -Ejecuta la consulta “describe customers;”, que sirve para listar los campos de una tabla, y anota cuántos hay y cuál es el tipo de dato mayoritario (si lo hay).
-Ejecuta ahora la consulta “select * from customers;”, que nos devolverá el contenido completo de la tabla. -En la pestaña de resultados, pulsando el tercero de los botones de la izquierda aparece un panel que te permite filtrar por columnas. Selecciona únicamente las dos primeras (id y name). -El segundo de los botones de la izquierda permite representar un gráfico directamente sobre los resultados de una consulta. Elige el customers.name para el eje X y el customers.id para el eje Y y pega aquí un pantallazo del gráfico resultante.
Trabajo MapReduce asociado a una consulta I Sigue en el panel Query Editors > Hive -Ejecuta la consulta “select count(*) from customers;” y anota el resultado. En la demo online, como seguramente ya esté “en caché” la consulta, te devolverá el resultado inmediatamente (Si estás en “local” seguramente te toque esperar unos dos minutos hasta que finalice). En cualquier caso, ve al panel de Job Browser. Aquí están todos los trabajos (principalmente MapReduce, aunque en la demo online quizá veas algún otro como Spark) que se están ejecutando, se han ejecutado o se han intentado ejecutar. -Pega un pantallazo de la barra que aparece en la parte superior derecha con los 4 posibles estados de un trabajo y sus correspondientes colores asociados.
Trabajo MapReduce asociado a una consulta II Sigue en el panel Job Browser Si estás en local, deberías ver una única entrada en la tabla, es tu única elección. Si estás online elige una que sea SELECT (de tipo MAPREDUCE) y que haya finalizado con éxito. -Anota el ID del Job elegido Ahora pincha en dicho ID, que te llevará a una pantalla donde hay información detallada del Job. -Explora las diferentes pestañas y anota cuántas tareas asociadas tiene y de qué tipo son.
Pincha en una de las tareas. Verás que tiene, a su vez, intentos de ejecución (sólo aparece uno si ha funcionado a la primera). Pincha en uno de los intentos. -Pega un pantallazo del detalle del intento con las pestaña “Logs” seleccionada y, dentro de ella “syslog” seleccionada. (Arriba a la izquierda deberías ver los IDs de intento, tarea y job, y el estado). Ahí está el máximo detalle de todo lo que ha ido haciendo el sistema para llevar a cabo los trabajos y tareas que respondían a la consulta que se lanzó.
Impala Ve a Query Editors > Impala
-Ejecuta la consulta “select count(*) from web_logs;” y anota el resultado.
-Ve al Job Browser. ¿Echas en falta algo? (Pista: aunque estés en la versión online, se produciría el mismo efecto en el Job Browser esté o no cacheada la consulta)
-Comenta brevemente las principales diferencias entre Hive e Impala y para qué tipo de usos crees que es más idóneo uno u otro.
Extra*** Si te sobra tiempo, podemos intentar hacer un poco más de data mining sobre la tabla “web_logs” que acabamos de ver en el último ejercicio. Desde el editor de queries de Impala os propongo explorar los datos con las siguientes queries: • DESCRIBE web_logs; • SELECT * FROM web_logs LIMIT 10; Luego, trata de hacer las queries necesarias para contestar las siguientes preguntas: 1. ¿De cuantos países únicos (columna “country_name”) se han recogido datos en la tabla web_logs? Pista: proponemos usar “SELECT”, “DISTINCT”, “FROM” 2. ¿De que país hay más entradas en la tabla? ¿De cuantas entradas estamos hablando? Pista: proponemos usar “SELECT”, “count()”, “FROM”, “GROUP BY”, “ORDER BY” 3. ¿Finalmente, cuantos web_logs provienen de un sistema operativo de Linux? Pista: usa la columna “os family”; ademas, proponemos usar “SELECT”, count(), ”FROM”, “WHERE”