SlideShare una empresa de Scribd logo
Taller:
“Monta una infraestructura Big Data para
tu Empresa”
Urko Zurutuza
Dpto. Electrónica e Informática
Mondragon Goi Eskola Politeknikoa JMA
Mondragon Unibertsitatea
2
Enlaces
• http://bit.ly/big_data_sesion3
• http://bit.ly/ejercicios_bigdata
Agenda
• Día 1: Introducción al Big Data
• Día 2: Instalación de un cluster Cloudera
• Día 3: Ejercicios sobre Cloudera
Índice
1. Ejemplo de MapReduce
2. Creando y editando una base de datos HBase
3. Ingerir datos estructurados con Apache sqoop
4. Consultar datos estructurados con HIVE e Impala
5. El valor del Big Data: datos no estructurados
6. Análisis avanzado con Spark
7. Búsquedas en tiempo real con Solr
8. Creación de un panel de mandos
Consideraciones previas
• Cloudera Quick Start:
• http://www.cloudera.com/content/cloudera/en/documen
tation/core/latest/topics/cloudera_quickstart_vm.html
• Dirección Cloudera Manager:
http://ip_cloudera:7180
• Dirección Hue: http://ip_cloudera:8888
• Algunos links no son relativos (y erroneamente
llevarán a quickstart.cloudera)
Consideraciones previas
• Cuenta (con privilegios sudo):
• username: cloudera
• password: cloudera
• La contraseña de root de MySQL es la
misma, al igual que Hue y Cloudera
Manager
• Consideraciones previas
Ejercicio 1: MapReduce
Procesamiento en batch:
MapReduce
• Marco para escribir aplicaciones que procesan
enormes cantidades de datos de forma paralela
en grandes clusters formados por hardware
común.
• MapReduce job
• Divide el conjunto de datos de entrada en pedazos
(chunks) que son procesados por tareas “map” de
forma paralela.
• Ordena las salidas de los “maps”, que son entrada a
las tareas “reduce”.
• Opera sobre pares clave-valor.
• No necesariamente en Java.
Procesamiento en batch:
MapReduce
, 4
, 2
, 4
, 3
, 4
, 2
, 4
, 3
Split Map
Shuffle
&
Sort
Reduce
Master
assignsassigns
Procesamiento en batch:
MapReduce
• Ejemplo:
$ bin/hadoop dfs -cat /usr/joe/wordcount/input/file01
Hello World Bye World
$ bin/hadoop dfs -cat /usr/joe/wordcount/input/file02
Hello Hadoop Goodbye Hadoop
Procesamiento en batch:
MapReduce
• Mapper:
• procesa cada línea (cada línea un map)
• Divide en tokens separados por espacios (palabras)
• Emite un conjunto de claves-valor, en modo <palabra, 1>
• Map 1:
• < Hello, 1>
• < World, 1>
• < Bye, 1>
• < World, 1>
• Map 2:
• < Hello, 1>
• < Hadoop, 1>
• < Goodbye, 1>
• < Hadoop, 1>
Procesamiento en batch:
MapReduce
• Combiner:
• Cada map se ordena y genera agregados locales:
• Salida del primer Map:
• < Bye, 1>
• < Hello, 1>
• < World, 2>
• Salida del segundo Map:
• < Goodbye, 1>
• < Hadoop, 2>
• < Hello, 1>
Procesamiento en batch:
MapReduce
• Reducer:
• Suma los valores (ocurrencias de cada clave):
• < Bye, 1>
• < Goodbye, 1>
• < Hadoop, 2>
• < Hello, 2>
• < World, 2>
Ejercicio
• WordCount
• Documento ejercicios.doc
18
Ejercicio 1: Archivos de
entrada
19
Ejercicio 1: ejecución
MapReduce[cloudera@quickstart ~]$ hadoop jar wordcount.jar org.myorg.WordCount /user/cloudera/wordcount/input
/user/cloudera/wordcount/output
16/06/29 10:21:52 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
16/06/29 10:21:52 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
16/06/29 10:21:52 WARN mapreduce.JobResourceUploader: Hadoop command-line option parsing not performed. Implement the Tool
interface and execute your application with ToolRunner to remedy this.
16/06/29 10:21:52 INFO mapred.FileInputFormat: Total input paths to process : 2
16/06/29 10:21:53 INFO mapreduce.JobSubmitter: number of splits:3
16/06/29 10:21:53 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1467220526122_0001
16/06/29 10:21:53 INFO impl.YarnClientImpl: Submitted application application_1467220526122_0001
16/06/29 10:21:53 INFO mapreduce.Job: The url to track the job:
http://quickstart.cloudera:8088/proxy/application_1467220526122_0001/
16/06/29 10:21:53 INFO mapreduce.Job: Running job: job_1467220526122_0001
16/06/29 10:22:03 INFO mapreduce.Job: Job job_1467220526122_0001 running in uber mode : false
16/06/29 10:22:03 INFO mapreduce.Job: map 0% reduce 0%
16/06/29 10:22:17 INFO mapreduce.Job: map 33% reduce 0%
16/06/29 10:22:19 INFO mapreduce.Job: map 67% reduce 0%
16/06/29 10:22:20 INFO mapreduce.Job: map 100% reduce 0%
16/06/29 10:22:25 INFO mapreduce.Job: map 100% reduce 100%
16/06/29 10:22:25 INFO mapreduce.Job: Job job_1467220526122_0001 completed successfully
16/06/29 10:22:25 INFO mapreduce.Job: Counters: 49
File System Counters
FILE: Number of bytes read=79
FILE: Number of bytes written=455843
FILE: Number of read operations=0
FILE: Number of large read operations=0
FILE: Number of write operations=0
HDFS: Number of bytes read=410
HDFS: Number of bytes written=41
HDFS: Number of read operations=12
HDFS: Number of large read operations=0
HDFS: Number of write operations=2
20
Ejercicio 1: ejecución
MapReduceJob Counters
Launched map tasks=3
Launched reduce tasks=1
Data-local map tasks=3
Total time spent by all maps in occupied slots (ms)=36685
Total time spent by all reduces in occupied slots (ms)=5500
Total time spent by all map tasks (ms)=36685
Total time spent by all reduce tasks (ms)=5500
Total vcore-seconds taken by all map tasks=36685
Total vcore-seconds taken by all reduce tasks=5500
Total megabyte-seconds taken by all map tasks=37565440
Total megabyte-seconds taken by all reduce tasks=5632000
Map-Reduce Framework
Map input records=2
Map output records=8
Map output bytes=82
Map output materialized bytes=91
Input split bytes=357
Combine input records=8
Combine output records=6
Reduce input groups=5
Reduce shuffle bytes=91
Reduce input records=6
Reduce output records=5
Spilled Records=12
Shuffled Maps =3
Failed Shuffles=0
Merged Map outputs=3
GC time elapsed (ms)=445
CPU time spent (ms)=1970
Physical memory (bytes) snapshot=762191872
Virtual memory (bytes) snapshot=6006784000
Total committed heap usage (bytes)=557592576
21
Ejercicio 1: ejecución
MapReduce
Shuffle Errors
BAD_ID=0
CONNECTION=0
IO_ERROR=0
WRONG_LENGTH=0
WRONG_MAP=0
WRONG_REDUCE=0
File Input Format Counters
Bytes Read=53
File Output Format Counters
Bytes Written=41
22
Ejercicio 1: Archivos de salida
23
Ejercicio 1: resultado
[cloudera@quickstart ~]$ hadoop fs -cat /user/cloudera/wordcount/output/part-
00000
Bye 1
Goodbye 1
Hadoop 2
Hello 2
World 2
Ejemplo HBase
HBase
• Qué es Hbase?
• En Hbase los datos se almacenan en tablas, las cuales
tienen filas y columnas… pero mejor verlo como un
mapa u objeto multidimensional
• Una tabla de Hbase contiene multiples filas.
• Una fila de datos tiene una clave ordenable y un
número arbitrario de columnas. La tabla se almacena
de forma dispersa, de modo que las filas de una
misma tabla pueden tener columnas tan variadas
como se quiera.
HBase
• Map: filas de datos
{
"zzzzz" : "woot",
"xyz" : "hello",
"aaaab" : "world",
"1" : "x",
"aaaaa" : "y"
}
HBase
• Sorted Map: filas ordenadas por la clave
{
"1" : "x",
"aaaaa" : "y",
"aaaab" : "world",
"xyz" : "hello",
"zzzzz" : "woot"
}
HBase
• Multidimensional: familias de columnas por cada
fila{
"1" : {
"A" : "x",
"B" : "z"
},
"aaaaa" : {
"A" : "y",
"B" : "w"
},
"aaaab" : {
"A" : "world",
"B" : "ocean"
},
"xyz" : {
"A" : "hello",
"B" : "there"
},
"zzzzz" : {
"A" : "woot",
"B" : "1337"
}
}
HBase
• Multidimensional: una familia de columnas puede
tener varias columnas, identificadas por una
etiqueta o qualifier{
// ...
"aaaaa" : {
"A" : {
"foo" : "y",
"bar" : "d"
},
"B" : {
"" : "w"
}
},
"aaaab" : {
"A" : {
"foo" : "world",
"bar" : "domination"
},
"B" : {
"" : "ocean"
}
},
// ...
}
HBase
• Multidimensional: timestamp
{
// ...
"aaaaa" : {
"A" : {
"foo" : {
15 : "y",
4 : "m"
},
"bar" : {
15 : "d",
}
},
"B" : {
"" : {
6 : "w"
3 : "o"
1 : "w"
}
}
},
// ...
}
Ejemplo con HBase
Ejemplo con HBase
Conectarse a HUE: http://localhost:8888
32
Ejemplo con HBase
33
Ejemplo con HBase
34
Ejemplo con HBase
35
Ejemplo con HBase
36
Ejemplo con HBase
37
Ejemplo con HBase
38
Ejemplo con HBase
39
Ejemplo con HBase
40
Ejemplo con HBase
41
Ejemplo con HBase
42
Ejercicio 2: Ingerir datos estructurados
Un paseo por la potencia de
Big Data
• Imaginemos que somos el “Data Specialist”
de una corporación
• El análisis de los datos debe responder a
preguntas concretas
Definir una pregunta de
Negocio
• Sin una pregunta bien definida:
• No sabremos como modelar los datos
• Qué estructuras de datos aplicar
• Qué conjuntos de datos deberemos
obtener
• Qué herramientas necesitaremos
Ingerir datos estructurados
• Pregunta de Negocio: “Qué productos les gusta
comprar a nuestros clientes?”
• Esta información se guarda por lo general en una
base de datos Transaccional, la cual nos dirá qué
clientes compran y quienes no cada producto.
• Necesitamos ingerir los datos de una BBDD en
HDFS
sqoop
Ingerir datos estructurados
• Sqoop nos permite cargar los datos de MySQL
en HDFS, preservando la estructura de las tablas.
• Con unos parámetros extra, podremos cargarlos
en un formato (avro) que podrá luego ser utilizado
por Impala
Ingerir datos estructurados:
sqoop
tablas tablas
Ficheros
distribuidos
BBDD
Relacional
BBDD
RelacionalHDFS
Tratamiento
(Map-Reduce) (Map-Reduce)
(Map-Reduce)
Ejercicio 2: Ingerir datos estructurados: sqoop
• Pasos:
1. Importar todas las tablas desde MySQL a
HDFS.
2. Sqoop generará los esquemas de cada tabla.
Copiar estos esquemas a HDFS para que
HIVE los tenga disponibles.
3. Arrancamos Hive y definimos las tablas. Dos
opciones: (1) desde la línea de comandos y
(2) desde la interfaz web.
4. Mostramos las tablas
50
Ingerir datos estructurados
(Mirar Documento)
[root@quickstart.cloudera ~] sqoop import-all-tables 
-- num-mappers 1 
--connect jdbc:mysql://quickstart.cloudera:3306/retail_db 
--username=retail_dba 
--password=cloudera 
--compression-codec=snappy 
--as-avrodatafile 
--warehouse-dir=/user/hive/warehouse/userXX
Ejercicio 2: Ingerir datos estructurados: sqoop
52
Ejercicio 2: Ingerir datos estructurados: sqoop
53
Ejercicio 2: Definir las tablas: Hive
54
Ejercicio 2: Definir las tablas: Hive
55
Ejercicio 2: Definir las tablas: Hive
56
Ejercicio 2: Mostrar las tablas: Hive
57
Ingerir datos estructurados
Ejercicio 3: Consultar datos estructurados
Consultar datos estructurados
• Dos herramientas para hacer consultas SQL en
CDH:
• Hive
• Traduce las consultas SQL a trabajos MapReduce.
• Bueno para trabajos en lote grandes, aplicando
transformaciones de forma flexible.
• Impala
• Significativamente más rápido y preparado para tener
baja latencia para consultas interectivas y exploración
de datos.
• Ambos comparten los metadatos sobre las tablas
Consultar datos estructurados
• Ejemplo en HIVE:
[cloudera@quickstart ~]$ hive
CREATE EXTERNAL TABLE categories
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION 'hdfs:///user/hive/warehouse/categories'
TBLPROPERTIES ('avro.schema.url'='hdfs://quickstart.cloudera/user/urko/sqoop_import_categories.avsc');
categories, customers, departments, orders,
order_items, products
show tables;
exit;
Consultar datos estructurados
• Hemos transferido datos estructurados de una
base de datos relacional a HDFS
• Lo hemos transformado en formato Avro
• Hemos creado tablas HIVE, preparadas para ser
consultadas mediante Impala o consultas por
lotes de HIVE.
• Vamos a consultarlos!
Ejercicio 3: Consultar los
datos
63
Consultar datos estructurados
Ejercicio 3: Consultar los datos
Mostrar las categorias de producto más populares
select c.category_name, count(order_item_quantity) as count
from order_items oi
inner join products p on oi.order_item_product_id = p.product_id
inner join categories c on c.category_id = p.product_category_id
group by c.category_name
order by count desc limit 10;
65
Ejercicio 3: Consultar los
datos
66
Ejercicio 3: Consultar los
datos
67
Ejercicio 3: Consultar los
datos
68
Ejercicio 3: Consultar los datos
Mostrar los 10 productos más satisfactorios
select p.product_id, p.product_name, r.revenue
from products p inner join (select oi.order_item_product_id,
sum(cast(oi.order_item_subtotal as float)) as revenue from
order_items oi inner join orders o on oi.order_item_order_id =
o.order_id where o.order_status <> 'CANCELED' and o.order_status
<> 'SUSPECTED_FRAUD' group by order_item_product_id) r on
p.product_id = r.order_item_product_id order by r.revenue desc
limit 10;
69
Ejercicio 3: Consultar los
datos
70
Ejercicio 4: El valor del Big Data
El valor del Big Data
• Hasta ahora, el resultado no es nuevo: SQL!
• Pregunta de negocio: “son los productos más
vistos los más vendidos?”
• Devemos correlacionar datos estructurados con
otros no estructurados:
• Usando Web logs, podremos ver los productos más
vistos
• Para ingerir flujos de clicks: Flume
El valor del Big Data
• Flume: un framework de tiempo real y escalable
para encaminar, filtrar, agregar, y realizar
pequeñas operaciones sobre datos
• Para este ejercicio, ya tenemos recopilados un
conjunto de datos de acceso web en
/opt/examples/log_data/access.log.2
El valor del Big Data
Ejercicio 4: El valor del Big Data
• Cargar los datos de log a HDFS:
[cloudera@quickstart ~]$ hadoop fs -copyFromLocal /opt/examples/log_files/access.log.2
/user/hive/warehouse/original_access_logs
• Entrar en HIVE:
[cloudera@quickstart ~]$ hive
75
Ejercicio 4: El valor del Big Data
• Crear una tabla en Hive, y consultarla mediante Impala o Hive
CREATE EXTERNAL TABLE intermediate_access_logs (
ip STRING,
date STRING,
method STRING,
url STRING,
http_version STRING,
code1 STRING,
code2 STRING,
dash STRING,
user_agent STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "([^ ]*) - - [([^]]*)] "([^ ]*) ([^ ]*) ([^ ]*)" (d*) (d*) "([^"]*)" "([^"]*)"",
"output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s"
)
LOCATION '/user/hive/warehouse/original_access_logs';
76
Ejercicio 4: El valor del Big Data
• Crear una tabla en Hive, y consultarla mediante Impala o Hive
CREATE EXTERNAL TABLE tokenized_access_logs (
ip STRING,
date STRING,
method STRING,
url STRING,
http_version STRING,
code1 STRING,
code2 STRING,
dash STRING,
user_agent STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/user/hive/warehouse/tokenized_access_logs';
ADD JAR /usr/lib/hive/lib/hive-contrib.jar;
INSERT OVERWRITE TABLE tokenized_access_logs SELECT * FROM intermediate_access_logs;
Exit;
77
El valor del Big Data
El valor del Big Data
El valor del Big Data
El valor del Big Data
El valor del Big Data
Uno de los productos más
vistos no está entre los más
comprados!!
El valor del Big Data
• La correlación entre ambos datos permitió
detectar un error en el precio mostrado para el
producto “Adidas Kids’ RG III Mid Football Cleat”.
Una vez corregido, las ventas del producto
empezaron a crecer rápidamente ;)
Ejercicio 5: Advanced Analytics
Advanced Analytics
• Pregunta de negocio: ¿Qué productos se suelen
comprar de forma conjunta?
• La respuesta podría ayudar a:
• Optimizar campañas de marketing, posicionando
productos de forma conjunta
• Podrían utilizarlo para mejorar ventas de productos
menos vistos
• Una herramienta que permite realizar análisis
rápidos sobre relaciones de objetos es Apache
Spark
Ejercicio 5: Advanced Analytics
• Apache Spark
86
Ejercicio 5: Advanced Analytics
• Generamos un trabajo en Spark
[cloudera@quickstart ~]$ spark-shell --jars
/usr/lib/avro/avro-mapred.jar --conf
spark.serializer=org.apache.spark.serializer.KryoSerializer
87
Ejercicio 5: Advanced Analytics
88
Advanced Analytics
// First we're going to import the classes we need and open some of the files
// we imported from our relational database into Hadoop with Sqoop
import org.apache.avro.generic.GenericRecord
import org.apache.avro.mapred.{AvroInputFormat, AvroWrapper}
import org.apache.hadoop.io.NullWritable
val warehouse = "hdfs://quickstart.cloudera/user/hive/warehouse/"
val order_items_path = warehouse + "order_items"
val order_items = sc.hadoopFile[AvroWrapper[GenericRecord], NullWritable,
AvroInputFormat[GenericRecord]](order_items_path)
val products_path = warehouse + "products"
val products = sc.hadoopFile[AvroWrapper[GenericRecord], NullWritable,
AvroInputFormat[GenericRecord]](products_path)
Advanced Analytics
// Next, we extract the fields from order_items and products that we care about
// and get a list of every product, its name and quantity, grouped by order
val orders = order_items.map { x => (
x._1.datum.get("order_item_product_id"),
(x._1.datum.get("order_item_order_id"), x._1.datum.get("order_item_quantity")))
}.join(
products.map { x => (
x._1.datum.get("product_id"),
(x._1.datum.get("product_name")))
}
).map(x => (
scala.Int.unbox(x._2._1._1), // order_id
(
scala.Int.unbox(x._2._1._2), // quantity
x._2._2.toString // product_name
)
)).groupByKey()
Advanced Analytics
// Finally, we tally how many times each combination of products appears
// together in an order, and print the 10 most common combinations.
val cooccurrences = orders.map(order =>
(
order._1,
order._2.toList.combinations(2).map(order_pair =>
(
if (order_pair(0)._2 < order_pair(1)._2) (order_pair(0)._2, order_pair(1)._2) else (order_pair(1)._2,
order_pair(0)._2),
order_pair(0)._1 * order_pair(1)._1
)
)
)
)
val combos = cooccurrences.flatMap(x => x._2).reduceByKey((a, b) => a + b)
val mostCommon = combos.map(x => (x._2, x._1)).sortByKey(false).take(10)
println(mostCommon.deep.mkString("n"))
Advanced Analytics
Ejercicio 6: Buscando en un
mar de datos
buscando en un mar de datos
• Los logs pueden ser una fuente imprescindible de
información
• Vamos a ser capaces de explorar de forma
interactiva eventos de Log Web, indexando los
datos, y haciendo que puedan ser buscados
• Vamos a extender Apache Flume anterior, de
modo que ademas de ingerir logs, enviará los
eventos a Apache Solr para su indexación en
tiempo real
buscando en un mar de datos
• Flume
• Solr
• Organiza los datos de la misma manera que una BBDD SQL.
• Dada registro se llama “document”, y contiene campos definidos en un
esquema
• Un conjunto de documentos forman una colección.
• Es menos estricto en cuanto a la estructura:
• Campos opcionales
• Flexibilidad en las consultas de texto
Ingestión de Datos en streaming:
Apache Flume
• Servicio distribuido y fiable para recopilar, agregar
y mover grandes volúmenes de datos (de log) de
forma eficiente
• De muchas y variadas fuentes de logs a un lugar
centralizado de almacenamiento de datos (ej.
Hadoop)
• Cuando los datos se generan de forma continua
• No solo logs, también sirve para p.e. datos de
tráfico de red, datos generados por social media,
emails, …
Ingestión de Datos en streaming:
Apache Flume
• Una fuente externa envía eventos a un agente
Flume, en un formato que Flume pueda
reconocer.
• El evento se guarda en el canal, hasta que es
consumido por el embudo (Sink)
• El Sink quita el evento del canal y lo pone en un
repositorio externo o en otro origen de Flume
Ingestión de Datos en streaming:
Apache Flume
Ingestión de Datos en streaming:
Apache Flume
• Origenes Flume:
• Avro
• Thrift
• Exec (el resultado de la ejecución de un comando Unix)
• Un directorio a la espera de nuevos ficheros y sus contenidos
• Twitter
• NetCat
• Syslog
• HTTP
Ingestión de Datos en streaming:
Apache Flume
• Canales Flume:
• Memoria
• JDBC
• Fichero
• …
Ingestión de Datos en streaming:
Apache Flume
• Sinks Flume:
• HDFS
• Avro
• Thrift
• IRC
• Fichero
• Hbase
• …
Ingestión de Datos en streaming:
Apache Flume
• Miramos la configuracion de flume:
cd /opt/examples/flume
buscando en un mar de datos
• Crear el índice de búsqueda:
solrctl --zk quickstart.cloudera:2181/solr instancedir --generate solr_configs
• Generar los ficheros de configuración:
<fields>
<field name="_version_" type="long" indexed="true" stored="true" multiValued="false" />
<field name="id" type="string" indexed="true" stored="true" required="true"
multiValued="false" />
<field name="ip" type="text_general" indexed="true" stored="true"/>
<field name="request_date" type="date" indexed="true" stored="true"/>
<field name="request" type="text_general" indexed="true" stored="true"/>
<field name="department" type="string" indexed="true" stored="true"
multiValued="false"/>
<field name="category" type="string" indexed="true" stored="true"
multiValued="false"/>
<field name="product" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="action" type="string" indexed="true" stored="true" multiValued="false"/>
</fields>
Ejercicio 6: Buscando en un mar de datos
• Cargamos la configuración (y morplines.conf)
[cloudera@quickstart ~]$ cd /opt/examples/flume
[cloudera@quickstart ~]$ solrctl --zk
quickstart.cloudera:2181/solr instancedir --create live_logs
./solr_configs
• Creamos la colección
[cloudera@quickstart ~]$ solrctl --zk
quickstart.cloudera:2181/solr collection --create live_logs -s
1
• Arrancamos el agente flume
[cloudera@quickstart ~]$ start_logs
[cloudera@quickstart ~]$ flume-ng agent --conf /opt/examples/flume/conf --
conf-file /opt/examples/flume/conf/flume.conf --name agent1 -
Dflume.root.logger=DEBUG,INFO,console
104
buscando en un mar de datos
buscando en un mar de datos
buscando en un mar de datos
Ejercicio 6: Buscando en un mar de datos
108
buscando en un mar de datos
Ejercicio 7: Creando un panel de mandos
Creando un panel de mandos
• Las búsquedas son rápidas, pero aún es fácil
perdernos
• Vamos a crear un panel de mandos para analizar
el comportamiento de las visitas Web en tiempo
real.
Ejercicio 6: Creando un panel de mandos
112
Ejercicio 6: Creando un panel de mandos
Arrastrar a esta
zona gris
Seleccionar
request_date
113
Ejercicio 6: Creando un panel de mandos
114
Ejercicio 6: Creando un panel de mandos
Seleccionar un
intervalo de +10
minutos
115
Ejercicio 6: Creando un panel de mandos
1.- Seleccionar un layout
de 2 columnas
2.- Arrastrar un pie chart
116
Ejercicio 6: Creando un panel de mandos
3.- Seleccionar
department
117
Ejercicio 6: Creando un panel de mandos
1.- Arrastrar gráfico de
tipo facet a la columna
izquierda
2.- Seleccionar
product
118
Ejercicio 6: Creando un panel de mandos
119
Ejercicio 6: Creando un panel de mandos
Terminamos la
edición
Guardamos el
panel
30/06/2016 Iñaki Garitano - Taller Big Data 120
Acabando…
• Ideas?
• Es útil?
• Vas a por ello?
• ESKERRIK ASKO!!
Eskerrik asko
www.mondragon.edu
Urko Zurutuza
Mondragon Unibertsitatea
uzurutuza@mondragon.edu
https://es.linkedin.com/in/uzurutuz
a/
@urkovain

Más contenido relacionado

La actualidad más candente

Hadoop: MapReduce para procesar grandes cantidades de datos
Hadoop: MapReduce para procesar grandes cantidades de datosHadoop: MapReduce para procesar grandes cantidades de datos
Hadoop: MapReduce para procesar grandes cantidades de datosRaul Ochoa
 
Big data con Hadoop y SSIS 2016
Big data con Hadoop y SSIS 2016Big data con Hadoop y SSIS 2016
Big data con Hadoop y SSIS 2016Ángel Rayo
 
Herramientas y ejemplos de trabajos MapReduce con Apache Hadoop
Herramientas y ejemplos de trabajos MapReduce con Apache HadoopHerramientas y ejemplos de trabajos MapReduce con Apache Hadoop
Herramientas y ejemplos de trabajos MapReduce con Apache HadoopDavid Albela Pérez
 
Big Data, Almacenes de datos empresariales (EDW) y Windows Azure (SQL Databas...
Big Data, Almacenes de datos empresariales (EDW) y Windows Azure (SQL Databas...Big Data, Almacenes de datos empresariales (EDW) y Windows Azure (SQL Databas...
Big Data, Almacenes de datos empresariales (EDW) y Windows Azure (SQL Databas...Joseph Lopez
 
Bases de Datos Analiticas-Columnares
Bases de Datos Analiticas-ColumnaresBases de Datos Analiticas-Columnares
Bases de Datos Analiticas-ColumnaresStratebi
 
Como de grandes son tus datos
Como de grandes son tus datosComo de grandes son tus datos
Como de grandes son tus datosAntonio Rodriguez
 
Big data para desarrolladores utilizando hadoop y openstack
Big data para desarrolladores utilizando hadoop y openstack Big data para desarrolladores utilizando hadoop y openstack
Big data para desarrolladores utilizando hadoop y openstack Guillermo Alvarado Mejía
 
Que debe saber un DBA de SQL Server sobre Hadoop
Que debe saber un DBA de SQL Server sobre HadoopQue debe saber un DBA de SQL Server sobre Hadoop
Que debe saber un DBA de SQL Server sobre HadoopEduardo Castro
 

La actualidad más candente (20)

Hadoop: MapReduce para procesar grandes cantidades de datos
Hadoop: MapReduce para procesar grandes cantidades de datosHadoop: MapReduce para procesar grandes cantidades de datos
Hadoop: MapReduce para procesar grandes cantidades de datos
 
Big data con Hadoop y SSIS 2016
Big data con Hadoop y SSIS 2016Big data con Hadoop y SSIS 2016
Big data con Hadoop y SSIS 2016
 
Hadoop en accion
Hadoop en accionHadoop en accion
Hadoop en accion
 
Introducción a Hadoop
Introducción a HadoopIntroducción a Hadoop
Introducción a Hadoop
 
Herramientas y ejemplos de trabajos MapReduce con Apache Hadoop
Herramientas y ejemplos de trabajos MapReduce con Apache HadoopHerramientas y ejemplos de trabajos MapReduce con Apache Hadoop
Herramientas y ejemplos de trabajos MapReduce con Apache Hadoop
 
Open analytics. data analytics con hadoop
Open analytics. data analytics con hadoopOpen analytics. data analytics con hadoop
Open analytics. data analytics con hadoop
 
Introducción a hadoop
Introducción a hadoopIntroducción a hadoop
Introducción a hadoop
 
Panorama BigData (OpenExpo2017)
Panorama BigData (OpenExpo2017)Panorama BigData (OpenExpo2017)
Panorama BigData (OpenExpo2017)
 
Big Data, Almacenes de datos empresariales (EDW) y Windows Azure (SQL Databas...
Big Data, Almacenes de datos empresariales (EDW) y Windows Azure (SQL Databas...Big Data, Almacenes de datos empresariales (EDW) y Windows Azure (SQL Databas...
Big Data, Almacenes de datos empresariales (EDW) y Windows Azure (SQL Databas...
 
Aula virtual apache_hadoop_v3 1
Aula virtual apache_hadoop_v3 1Aula virtual apache_hadoop_v3 1
Aula virtual apache_hadoop_v3 1
 
Introducción a Apache HBase
Introducción a Apache HBaseIntroducción a Apache HBase
Introducción a Apache HBase
 
Bases de Datos Analiticas-Columnares
Bases de Datos Analiticas-ColumnaresBases de Datos Analiticas-Columnares
Bases de Datos Analiticas-Columnares
 
Como de grandes son tus datos
Como de grandes son tus datosComo de grandes son tus datos
Como de grandes son tus datos
 
Hadoop
HadoopHadoop
Hadoop
 
Hadoop: tecnologias relacionadas
Hadoop: tecnologias relacionadasHadoop: tecnologias relacionadas
Hadoop: tecnologias relacionadas
 
Big data para desarrolladores utilizando hadoop y openstack
Big data para desarrolladores utilizando hadoop y openstack Big data para desarrolladores utilizando hadoop y openstack
Big data para desarrolladores utilizando hadoop y openstack
 
Que debe saber un DBA de SQL Server sobre Hadoop
Que debe saber un DBA de SQL Server sobre HadoopQue debe saber un DBA de SQL Server sobre Hadoop
Que debe saber un DBA de SQL Server sobre Hadoop
 
Hadoop
HadoopHadoop
Hadoop
 
BigData y MapReduce
BigData y MapReduceBigData y MapReduce
BigData y MapReduce
 
Introducción a Hadoop
Introducción a HadoopIntroducción a Hadoop
Introducción a Hadoop
 

Destacado

Big data para principiantes
Big data para principiantesBig data para principiantes
Big data para principiantesCarlos Toxtli
 
Introducción al Big Data
Introducción al Big DataIntroducción al Big Data
Introducción al Big DataDavid Alayón
 
Curso de big data
Curso de big data Curso de big data
Curso de big data Luis Joyanes
 
Cursos de Big Data y Machine Learning
Cursos de Big Data y Machine LearningCursos de Big Data y Machine Learning
Cursos de Big Data y Machine LearningStratebi
 
69 claves para conocer Big Data
69 claves para conocer Big Data69 claves para conocer Big Data
69 claves para conocer Big DataStratebi
 
Big Data para Dummies
Big Data para DummiesBig Data para Dummies
Big Data para DummiesStratebi
 
Cómo implementar una solución Big Data
Cómo implementar una solución Big DataCómo implementar una solución Big Data
Cómo implementar una solución Big DataAMETIC
 
Big Data - Infraestrucutra de BI para soluciones de BI
Big Data - Infraestrucutra de BI para soluciones de BIBig Data - Infraestrucutra de BI para soluciones de BI
Big Data - Infraestrucutra de BI para soluciones de BIDatalytics
 
Cómo empezar a implementar proyectos Big Data en tu organización
Cómo empezar a implementar proyectos Big Data en tu organizaciónCómo empezar a implementar proyectos Big Data en tu organización
Cómo empezar a implementar proyectos Big Data en tu organizaciónBEEVA_es
 
MONITORIZACIÓN Y ANÁLISIS DE TRÁFICO DE RED CON APACHE HADOOP
MONITORIZACIÓN Y ANÁLISIS DE TRÁFICO DE RED CON APACHE HADOOPMONITORIZACIÓN Y ANÁLISIS DE TRÁFICO DE RED CON APACHE HADOOP
MONITORIZACIÓN Y ANÁLISIS DE TRÁFICO DE RED CON APACHE HADOOPJorge E. López de Vergara Méndez
 
TECNOLOGIA DETRAS DE LAS REDES SOCIALES(FACEBOOK) - LENGUAJE DE PROGRAMACION II
TECNOLOGIA DETRAS DE LAS REDES SOCIALES(FACEBOOK) - LENGUAJE DE PROGRAMACION IITECNOLOGIA DETRAS DE LAS REDES SOCIALES(FACEBOOK) - LENGUAJE DE PROGRAMACION II
TECNOLOGIA DETRAS DE LAS REDES SOCIALES(FACEBOOK) - LENGUAJE DE PROGRAMACION IIChristian Garcia Gamio
 
G te c sesion3b- mapreduce
G te c sesion3b- mapreduceG te c sesion3b- mapreduce
G te c sesion3b- mapreduceVictoria López
 
Comparacion Entre Rmi Y Api De Sockets
Comparacion Entre Rmi Y Api De SocketsComparacion Entre Rmi Y Api De Sockets
Comparacion Entre Rmi Y Api De Socketsmallita
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetosNanda Moran
 
Log -Analytics with Apache-Flume Elasticsearch HDFS Kibana
Log -Analytics with Apache-Flume  Elasticsearch HDFS KibanaLog -Analytics with Apache-Flume  Elasticsearch HDFS Kibana
Log -Analytics with Apache-Flume Elasticsearch HDFS KibanaFelix Rodriguez
 
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...Socialmetrix
 
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Socialmetrix
 
Webinar Dic 2016 BOC Cloud_v1
Webinar Dic 2016 BOC Cloud_v1Webinar Dic 2016 BOC Cloud_v1
Webinar Dic 2016 BOC Cloud_v1Ricardo Sada
 

Destacado (20)

Big data para principiantes
Big data para principiantesBig data para principiantes
Big data para principiantes
 
Introducción al Big Data
Introducción al Big DataIntroducción al Big Data
Introducción al Big Data
 
Curso de big data
Curso de big data Curso de big data
Curso de big data
 
Cursos de Big Data y Machine Learning
Cursos de Big Data y Machine LearningCursos de Big Data y Machine Learning
Cursos de Big Data y Machine Learning
 
69 claves para conocer Big Data
69 claves para conocer Big Data69 claves para conocer Big Data
69 claves para conocer Big Data
 
"Casos de uso del Big Data" por Wolfram Rozas
"Casos de uso del Big Data" por Wolfram Rozas"Casos de uso del Big Data" por Wolfram Rozas
"Casos de uso del Big Data" por Wolfram Rozas
 
Big Data para Dummies
Big Data para DummiesBig Data para Dummies
Big Data para Dummies
 
Cómo implementar una solución Big Data
Cómo implementar una solución Big DataCómo implementar una solución Big Data
Cómo implementar una solución Big Data
 
Big Data - Infraestrucutra de BI para soluciones de BI
Big Data - Infraestrucutra de BI para soluciones de BIBig Data - Infraestrucutra de BI para soluciones de BI
Big Data - Infraestrucutra de BI para soluciones de BI
 
Cómo empezar a implementar proyectos Big Data en tu organización
Cómo empezar a implementar proyectos Big Data en tu organizaciónCómo empezar a implementar proyectos Big Data en tu organización
Cómo empezar a implementar proyectos Big Data en tu organización
 
MONITORIZACIÓN Y ANÁLISIS DE TRÁFICO DE RED CON APACHE HADOOP
MONITORIZACIÓN Y ANÁLISIS DE TRÁFICO DE RED CON APACHE HADOOPMONITORIZACIÓN Y ANÁLISIS DE TRÁFICO DE RED CON APACHE HADOOP
MONITORIZACIÓN Y ANÁLISIS DE TRÁFICO DE RED CON APACHE HADOOP
 
TECNOLOGIA DETRAS DE LAS REDES SOCIALES(FACEBOOK) - LENGUAJE DE PROGRAMACION II
TECNOLOGIA DETRAS DE LAS REDES SOCIALES(FACEBOOK) - LENGUAJE DE PROGRAMACION IITECNOLOGIA DETRAS DE LAS REDES SOCIALES(FACEBOOK) - LENGUAJE DE PROGRAMACION II
TECNOLOGIA DETRAS DE LAS REDES SOCIALES(FACEBOOK) - LENGUAJE DE PROGRAMACION II
 
G te c sesion3b- mapreduce
G te c sesion3b- mapreduceG te c sesion3b- mapreduce
G te c sesion3b- mapreduce
 
Comparacion Entre Rmi Y Api De Sockets
Comparacion Entre Rmi Y Api De SocketsComparacion Entre Rmi Y Api De Sockets
Comparacion Entre Rmi Y Api De Sockets
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Log -Analytics with Apache-Flume Elasticsearch HDFS Kibana
Log -Analytics with Apache-Flume  Elasticsearch HDFS KibanaLog -Analytics with Apache-Flume  Elasticsearch HDFS Kibana
Log -Analytics with Apache-Flume Elasticsearch HDFS Kibana
 
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
 
Big data, Hadoop, HDInsight
Big data, Hadoop, HDInsightBig data, Hadoop, HDInsight
Big data, Hadoop, HDInsight
 
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
 
Webinar Dic 2016 BOC Cloud_v1
Webinar Dic 2016 BOC Cloud_v1Webinar Dic 2016 BOC Cloud_v1
Webinar Dic 2016 BOC Cloud_v1
 

Similar a Monta una Infraestructura para Big Data en tu Empresa

Introducción a Microsoft Azure SQL Data Warehouse
Introducción a Microsoft Azure SQL Data WarehouseIntroducción a Microsoft Azure SQL Data Warehouse
Introducción a Microsoft Azure SQL Data WarehouseJoseph Lopez
 
Polybase
PolybasePolybase
PolybaseSolidQ
 
Introducción a Big Data. HDInsight - Webcast Technet SolidQ
Introducción a Big Data. HDInsight - Webcast Technet SolidQIntroducción a Big Data. HDInsight - Webcast Technet SolidQ
Introducción a Big Data. HDInsight - Webcast Technet SolidQSolidQ
 
Big Data Mining with Mahout
Big Data Mining with MahoutBig Data Mining with Mahout
Big Data Mining with MahoutSolidQ
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAlberto Gimeno
 
Redis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valorRedis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valorAlberto Gimeno
 
Datawarehouse como servicio en azure (sqldw)
Datawarehouse como servicio en azure (sqldw)Datawarehouse como servicio en azure (sqldw)
Datawarehouse como servicio en azure (sqldw)Enrique Catala Bañuls
 
Datawarehouse como servicio en Azure (sqldw)
Datawarehouse como servicio en Azure (sqldw)Datawarehouse como servicio en Azure (sqldw)
Datawarehouse como servicio en Azure (sqldw)SolidQ
 
Introducción a polybase en SQL Server
Introducción a polybase en SQL ServerIntroducción a polybase en SQL Server
Introducción a polybase en SQL ServerEduardo Castro
 
Azure SQL Data Warehouse desde cada_angulo
Azure SQL Data Warehouse desde cada_anguloAzure SQL Data Warehouse desde cada_angulo
Azure SQL Data Warehouse desde cada_anguloAdrian Miranda
 
01 Introduccion a Big Data y Hadoop.pdf
01 Introduccion a Big Data y Hadoop.pdf01 Introduccion a Big Data y Hadoop.pdf
01 Introduccion a Big Data y Hadoop.pdfAntonioSotoRodriguez1
 
1 tutorial de mongo db
1 tutorial de mongo db1 tutorial de mongo db
1 tutorial de mongo db.. ..
 
Pablo Doval | Plain Concepts | Open Data
Pablo Doval | Plain Concepts | Open DataPablo Doval | Plain Concepts | Open Data
Pablo Doval | Plain Concepts | Open DataSmash Tech
 
M04 09 20_v02_sistemas bd batch
M04 09 20_v02_sistemas bd batchM04 09 20_v02_sistemas bd batch
M04 09 20_v02_sistemas bd batchrussellmrr
 
Apache Spark - Introduccion a RDDs
Apache Spark - Introduccion a RDDsApache Spark - Introduccion a RDDs
Apache Spark - Introduccion a RDDsDavid Przybilla
 
SolidQ Business Analytics Day | Como de grandes son tus datos
SolidQ Business Analytics Day | Como de grandes son tus datosSolidQ Business Analytics Day | Como de grandes son tus datos
SolidQ Business Analytics Day | Como de grandes son tus datosSolidQ
 

Similar a Monta una Infraestructura para Big Data en tu Empresa (20)

Introducción a Microsoft Azure SQL Data Warehouse
Introducción a Microsoft Azure SQL Data WarehouseIntroducción a Microsoft Azure SQL Data Warehouse
Introducción a Microsoft Azure SQL Data Warehouse
 
Polybase
PolybasePolybase
Polybase
 
Introducción a Big Data. HDInsight - Webcast Technet SolidQ
Introducción a Big Data. HDInsight - Webcast Technet SolidQIntroducción a Big Data. HDInsight - Webcast Technet SolidQ
Introducción a Big Data. HDInsight - Webcast Technet SolidQ
 
Big Data Mining with Mahout
Big Data Mining with MahoutBig Data Mining with Mahout
Big Data Mining with Mahout
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
 
Redis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valorRedis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valor
 
3. Hadoop
3.  Hadoop3.  Hadoop
3. Hadoop
 
Datawarehouse como servicio en azure (sqldw)
Datawarehouse como servicio en azure (sqldw)Datawarehouse como servicio en azure (sqldw)
Datawarehouse como servicio en azure (sqldw)
 
Datawarehouse como servicio en Azure (sqldw)
Datawarehouse como servicio en Azure (sqldw)Datawarehouse como servicio en Azure (sqldw)
Datawarehouse como servicio en Azure (sqldw)
 
Introducción a polybase en SQL Server
Introducción a polybase en SQL ServerIntroducción a polybase en SQL Server
Introducción a polybase en SQL Server
 
Azure SQL Data Warehouse desde cada_angulo
Azure SQL Data Warehouse desde cada_anguloAzure SQL Data Warehouse desde cada_angulo
Azure SQL Data Warehouse desde cada_angulo
 
Clase Hadoop
Clase HadoopClase Hadoop
Clase Hadoop
 
Optimiza tus queries desde abajo
Optimiza tus queries desde abajoOptimiza tus queries desde abajo
Optimiza tus queries desde abajo
 
01 Introduccion a Big Data y Hadoop.pdf
01 Introduccion a Big Data y Hadoop.pdf01 Introduccion a Big Data y Hadoop.pdf
01 Introduccion a Big Data y Hadoop.pdf
 
1 tutorial de mongo db
1 tutorial de mongo db1 tutorial de mongo db
1 tutorial de mongo db
 
Pablo Doval | Plain Concepts | Open Data
Pablo Doval | Plain Concepts | Open DataPablo Doval | Plain Concepts | Open Data
Pablo Doval | Plain Concepts | Open Data
 
M04 09 20_v02_sistemas bd batch
M04 09 20_v02_sistemas bd batchM04 09 20_v02_sistemas bd batch
M04 09 20_v02_sistemas bd batch
 
Data crunching con Spark
Data crunching con SparkData crunching con Spark
Data crunching con Spark
 
Apache Spark - Introduccion a RDDs
Apache Spark - Introduccion a RDDsApache Spark - Introduccion a RDDs
Apache Spark - Introduccion a RDDs
 
SolidQ Business Analytics Day | Como de grandes son tus datos
SolidQ Business Analytics Day | Como de grandes son tus datosSolidQ Business Analytics Day | Como de grandes son tus datos
SolidQ Business Analytics Day | Como de grandes son tus datos
 

Más de Urko Zurutuza

2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioa
2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioa2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioa
2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioaUrko Zurutuza
 
2017-01-26 Internet Arriskuak: Andramendi Ikastola, haurren sesioa
2017-01-26 Internet Arriskuak: Andramendi Ikastola, haurren sesioa2017-01-26 Internet Arriskuak: Andramendi Ikastola, haurren sesioa
2017-01-26 Internet Arriskuak: Andramendi Ikastola, haurren sesioaUrko Zurutuza
 
2013 10-22 internet-arriskuak_andramendi_es
2013 10-22 internet-arriskuak_andramendi_es2013 10-22 internet-arriskuak_andramendi_es
2013 10-22 internet-arriskuak_andramendi_esUrko Zurutuza
 
2013 10-22 internet-arriskuak_andramendi_eu
2013 10-22 internet-arriskuak_andramendi_eu2013 10-22 internet-arriskuak_andramendi_eu
2013 10-22 internet-arriskuak_andramendi_euUrko Zurutuza
 
¿Cómo encuentro al profesional especializado que necesito?
¿Cómo encuentro al profesional especializado que necesito?¿Cómo encuentro al profesional especializado que necesito?
¿Cómo encuentro al profesional especializado que necesito?Urko Zurutuza
 
Tolosaldea Garatzen - Semana de las TIC - Estrategias Basicas Pagina Web - te...
Tolosaldea Garatzen - Semana de las TIC - Estrategias Basicas Pagina Web - te...Tolosaldea Garatzen - Semana de las TIC - Estrategias Basicas Pagina Web - te...
Tolosaldea Garatzen - Semana de las TIC - Estrategias Basicas Pagina Web - te...Urko Zurutuza
 
Tolosaldea Garatzen - TIC Astea - Estrategias Básicas Pagina Web - practica
Tolosaldea Garatzen - TIC Astea - Estrategias Básicas Pagina Web - practicaTolosaldea Garatzen - TIC Astea - Estrategias Básicas Pagina Web - practica
Tolosaldea Garatzen - TIC Astea - Estrategias Básicas Pagina Web - practicaUrko Zurutuza
 
Internet-en, ze irudi ari naiz ematen?
Internet-en, ze irudi ari naiz ematen?Internet-en, ze irudi ari naiz ematen?
Internet-en, ze irudi ari naiz ematen?Urko Zurutuza
 
4.3. gestion de reputación online
4.3. gestion de reputación online4.3. gestion de reputación online
4.3. gestion de reputación onlineUrko Zurutuza
 
4.1. herramientas colaborativas-red
4.1. herramientas colaborativas-red4.1. herramientas colaborativas-red
4.1. herramientas colaborativas-redUrko Zurutuza
 
01.BCulinary_infor_TICs
01.BCulinary_infor_TICs01.BCulinary_infor_TICs
01.BCulinary_infor_TICsUrko Zurutuza
 
BCulinary Informatica: presentacion
BCulinary Informatica: presentacionBCulinary Informatica: presentacion
BCulinary Informatica: presentacionUrko Zurutuza
 
Internet arriskuak bidegoian_2011-09-22
Internet arriskuak bidegoian_2011-09-22Internet arriskuak bidegoian_2011-09-22
Internet arriskuak bidegoian_2011-09-22Urko Zurutuza
 

Más de Urko Zurutuza (13)

2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioa
2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioa2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioa
2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioa
 
2017-01-26 Internet Arriskuak: Andramendi Ikastola, haurren sesioa
2017-01-26 Internet Arriskuak: Andramendi Ikastola, haurren sesioa2017-01-26 Internet Arriskuak: Andramendi Ikastola, haurren sesioa
2017-01-26 Internet Arriskuak: Andramendi Ikastola, haurren sesioa
 
2013 10-22 internet-arriskuak_andramendi_es
2013 10-22 internet-arriskuak_andramendi_es2013 10-22 internet-arriskuak_andramendi_es
2013 10-22 internet-arriskuak_andramendi_es
 
2013 10-22 internet-arriskuak_andramendi_eu
2013 10-22 internet-arriskuak_andramendi_eu2013 10-22 internet-arriskuak_andramendi_eu
2013 10-22 internet-arriskuak_andramendi_eu
 
¿Cómo encuentro al profesional especializado que necesito?
¿Cómo encuentro al profesional especializado que necesito?¿Cómo encuentro al profesional especializado que necesito?
¿Cómo encuentro al profesional especializado que necesito?
 
Tolosaldea Garatzen - Semana de las TIC - Estrategias Basicas Pagina Web - te...
Tolosaldea Garatzen - Semana de las TIC - Estrategias Basicas Pagina Web - te...Tolosaldea Garatzen - Semana de las TIC - Estrategias Basicas Pagina Web - te...
Tolosaldea Garatzen - Semana de las TIC - Estrategias Basicas Pagina Web - te...
 
Tolosaldea Garatzen - TIC Astea - Estrategias Básicas Pagina Web - practica
Tolosaldea Garatzen - TIC Astea - Estrategias Básicas Pagina Web - practicaTolosaldea Garatzen - TIC Astea - Estrategias Básicas Pagina Web - practica
Tolosaldea Garatzen - TIC Astea - Estrategias Básicas Pagina Web - practica
 
Internet-en, ze irudi ari naiz ematen?
Internet-en, ze irudi ari naiz ematen?Internet-en, ze irudi ari naiz ematen?
Internet-en, ze irudi ari naiz ematen?
 
4.3. gestion de reputación online
4.3. gestion de reputación online4.3. gestion de reputación online
4.3. gestion de reputación online
 
4.1. herramientas colaborativas-red
4.1. herramientas colaborativas-red4.1. herramientas colaborativas-red
4.1. herramientas colaborativas-red
 
01.BCulinary_infor_TICs
01.BCulinary_infor_TICs01.BCulinary_infor_TICs
01.BCulinary_infor_TICs
 
BCulinary Informatica: presentacion
BCulinary Informatica: presentacionBCulinary Informatica: presentacion
BCulinary Informatica: presentacion
 
Internet arriskuak bidegoian_2011-09-22
Internet arriskuak bidegoian_2011-09-22Internet arriskuak bidegoian_2011-09-22
Internet arriskuak bidegoian_2011-09-22
 

Último

Bloque 1 _ Lectura base - Sistemas Distribuidos
Bloque 1 _ Lectura base - Sistemas DistribuidosBloque 1 _ Lectura base - Sistemas Distribuidos
Bloque 1 _ Lectura base - Sistemas DistribuidosLuisAntonioLopezGome
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareAndres Avila
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxencinasm992
 
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdfPons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdffrank0071
 
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptxNIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptxjarniel1
 
Gestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerGestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerRobertoCarrancioFern
 
taller de tablas en word para estudiantes de secundaria
taller de tablas en word para estudiantes de secundariataller de tablas en word para estudiantes de secundaria
taller de tablas en word para estudiantes de secundariaandresingsiseo
 
Uso de las TIC en la vida cotidiana .
Uso de las TIC en la vida cotidiana       .Uso de las TIC en la vida cotidiana       .
Uso de las TIC en la vida cotidiana .itzyrivera61103
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometriasofiasonder
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Luis Fernando Uribe Villamil
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialEducática
 
Unidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfUnidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfMarianneBAyn
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.saravalentinat22
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadaspqeilyn0827
 
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALJORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALGuadalinfoHuscarGuad
 
manual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdfmanual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdfprofmartinsuarez
 
Introducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptxIntroducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptxJohanna4222
 
proyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptualesproyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptualesssuserbe0d1c
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...Kevin Serna
 
¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf7adelosriosarangojua
 

Último (20)

Bloque 1 _ Lectura base - Sistemas Distribuidos
Bloque 1 _ Lectura base - Sistemas DistribuidosBloque 1 _ Lectura base - Sistemas Distribuidos
Bloque 1 _ Lectura base - Sistemas Distribuidos
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de Software
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
 
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdfPons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
 
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptxNIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
 
Gestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerGestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL Server
 
taller de tablas en word para estudiantes de secundaria
taller de tablas en word para estudiantes de secundariataller de tablas en word para estudiantes de secundaria
taller de tablas en word para estudiantes de secundaria
 
Uso de las TIC en la vida cotidiana .
Uso de las TIC en la vida cotidiana       .Uso de las TIC en la vida cotidiana       .
Uso de las TIC en la vida cotidiana .
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometria
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicial
 
Unidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfUnidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdf
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadas
 
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALJORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
 
manual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdfmanual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdf
 
Introducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptxIntroducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptx
 
proyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptualesproyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptuales
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
 
¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf
 

Monta una Infraestructura para Big Data en tu Empresa

  • 1. Taller: “Monta una infraestructura Big Data para tu Empresa” Urko Zurutuza Dpto. Electrónica e Informática Mondragon Goi Eskola Politeknikoa JMA Mondragon Unibertsitatea
  • 3. Agenda • Día 1: Introducción al Big Data • Día 2: Instalación de un cluster Cloudera • Día 3: Ejercicios sobre Cloudera
  • 4. Índice 1. Ejemplo de MapReduce 2. Creando y editando una base de datos HBase 3. Ingerir datos estructurados con Apache sqoop 4. Consultar datos estructurados con HIVE e Impala 5. El valor del Big Data: datos no estructurados 6. Análisis avanzado con Spark 7. Búsquedas en tiempo real con Solr 8. Creación de un panel de mandos
  • 5. Consideraciones previas • Cloudera Quick Start: • http://www.cloudera.com/content/cloudera/en/documen tation/core/latest/topics/cloudera_quickstart_vm.html • Dirección Cloudera Manager: http://ip_cloudera:7180 • Dirección Hue: http://ip_cloudera:8888 • Algunos links no son relativos (y erroneamente llevarán a quickstart.cloudera)
  • 6. Consideraciones previas • Cuenta (con privilegios sudo): • username: cloudera • password: cloudera • La contraseña de root de MySQL es la misma, al igual que Hue y Cloudera Manager
  • 9. Procesamiento en batch: MapReduce • Marco para escribir aplicaciones que procesan enormes cantidades de datos de forma paralela en grandes clusters formados por hardware común. • MapReduce job • Divide el conjunto de datos de entrada en pedazos (chunks) que son procesados por tareas “map” de forma paralela. • Ordena las salidas de los “maps”, que son entrada a las tareas “reduce”. • Opera sobre pares clave-valor. • No necesariamente en Java.
  • 10. Procesamiento en batch: MapReduce , 4 , 2 , 4 , 3 , 4 , 2 , 4 , 3 Split Map Shuffle & Sort Reduce Master assignsassigns
  • 11. Procesamiento en batch: MapReduce • Ejemplo: $ bin/hadoop dfs -cat /usr/joe/wordcount/input/file01 Hello World Bye World $ bin/hadoop dfs -cat /usr/joe/wordcount/input/file02 Hello Hadoop Goodbye Hadoop
  • 12. Procesamiento en batch: MapReduce • Mapper: • procesa cada línea (cada línea un map) • Divide en tokens separados por espacios (palabras) • Emite un conjunto de claves-valor, en modo <palabra, 1> • Map 1: • < Hello, 1> • < World, 1> • < Bye, 1> • < World, 1> • Map 2: • < Hello, 1> • < Hadoop, 1> • < Goodbye, 1> • < Hadoop, 1>
  • 13. Procesamiento en batch: MapReduce • Combiner: • Cada map se ordena y genera agregados locales: • Salida del primer Map: • < Bye, 1> • < Hello, 1> • < World, 2> • Salida del segundo Map: • < Goodbye, 1> • < Hadoop, 2> • < Hello, 1>
  • 14. Procesamiento en batch: MapReduce • Reducer: • Suma los valores (ocurrencias de cada clave): • < Bye, 1> • < Goodbye, 1> • < Hadoop, 2> • < Hello, 2> • < World, 2>
  • 17. 19 Ejercicio 1: ejecución MapReduce[cloudera@quickstart ~]$ hadoop jar wordcount.jar org.myorg.WordCount /user/cloudera/wordcount/input /user/cloudera/wordcount/output 16/06/29 10:21:52 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032 16/06/29 10:21:52 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032 16/06/29 10:21:52 WARN mapreduce.JobResourceUploader: Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this. 16/06/29 10:21:52 INFO mapred.FileInputFormat: Total input paths to process : 2 16/06/29 10:21:53 INFO mapreduce.JobSubmitter: number of splits:3 16/06/29 10:21:53 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1467220526122_0001 16/06/29 10:21:53 INFO impl.YarnClientImpl: Submitted application application_1467220526122_0001 16/06/29 10:21:53 INFO mapreduce.Job: The url to track the job: http://quickstart.cloudera:8088/proxy/application_1467220526122_0001/ 16/06/29 10:21:53 INFO mapreduce.Job: Running job: job_1467220526122_0001 16/06/29 10:22:03 INFO mapreduce.Job: Job job_1467220526122_0001 running in uber mode : false 16/06/29 10:22:03 INFO mapreduce.Job: map 0% reduce 0% 16/06/29 10:22:17 INFO mapreduce.Job: map 33% reduce 0% 16/06/29 10:22:19 INFO mapreduce.Job: map 67% reduce 0% 16/06/29 10:22:20 INFO mapreduce.Job: map 100% reduce 0% 16/06/29 10:22:25 INFO mapreduce.Job: map 100% reduce 100% 16/06/29 10:22:25 INFO mapreduce.Job: Job job_1467220526122_0001 completed successfully 16/06/29 10:22:25 INFO mapreduce.Job: Counters: 49 File System Counters FILE: Number of bytes read=79 FILE: Number of bytes written=455843 FILE: Number of read operations=0 FILE: Number of large read operations=0 FILE: Number of write operations=0 HDFS: Number of bytes read=410 HDFS: Number of bytes written=41 HDFS: Number of read operations=12 HDFS: Number of large read operations=0 HDFS: Number of write operations=2
  • 18. 20 Ejercicio 1: ejecución MapReduceJob Counters Launched map tasks=3 Launched reduce tasks=1 Data-local map tasks=3 Total time spent by all maps in occupied slots (ms)=36685 Total time spent by all reduces in occupied slots (ms)=5500 Total time spent by all map tasks (ms)=36685 Total time spent by all reduce tasks (ms)=5500 Total vcore-seconds taken by all map tasks=36685 Total vcore-seconds taken by all reduce tasks=5500 Total megabyte-seconds taken by all map tasks=37565440 Total megabyte-seconds taken by all reduce tasks=5632000 Map-Reduce Framework Map input records=2 Map output records=8 Map output bytes=82 Map output materialized bytes=91 Input split bytes=357 Combine input records=8 Combine output records=6 Reduce input groups=5 Reduce shuffle bytes=91 Reduce input records=6 Reduce output records=5 Spilled Records=12 Shuffled Maps =3 Failed Shuffles=0 Merged Map outputs=3 GC time elapsed (ms)=445 CPU time spent (ms)=1970 Physical memory (bytes) snapshot=762191872 Virtual memory (bytes) snapshot=6006784000 Total committed heap usage (bytes)=557592576
  • 19. 21 Ejercicio 1: ejecución MapReduce Shuffle Errors BAD_ID=0 CONNECTION=0 IO_ERROR=0 WRONG_LENGTH=0 WRONG_MAP=0 WRONG_REDUCE=0 File Input Format Counters Bytes Read=53 File Output Format Counters Bytes Written=41
  • 21. 23 Ejercicio 1: resultado [cloudera@quickstart ~]$ hadoop fs -cat /user/cloudera/wordcount/output/part- 00000 Bye 1 Goodbye 1 Hadoop 2 Hello 2 World 2
  • 23. HBase • Qué es Hbase? • En Hbase los datos se almacenan en tablas, las cuales tienen filas y columnas… pero mejor verlo como un mapa u objeto multidimensional • Una tabla de Hbase contiene multiples filas. • Una fila de datos tiene una clave ordenable y un número arbitrario de columnas. La tabla se almacena de forma dispersa, de modo que las filas de una misma tabla pueden tener columnas tan variadas como se quiera.
  • 24. HBase • Map: filas de datos { "zzzzz" : "woot", "xyz" : "hello", "aaaab" : "world", "1" : "x", "aaaaa" : "y" }
  • 25. HBase • Sorted Map: filas ordenadas por la clave { "1" : "x", "aaaaa" : "y", "aaaab" : "world", "xyz" : "hello", "zzzzz" : "woot" }
  • 26. HBase • Multidimensional: familias de columnas por cada fila{ "1" : { "A" : "x", "B" : "z" }, "aaaaa" : { "A" : "y", "B" : "w" }, "aaaab" : { "A" : "world", "B" : "ocean" }, "xyz" : { "A" : "hello", "B" : "there" }, "zzzzz" : { "A" : "woot", "B" : "1337" } }
  • 27. HBase • Multidimensional: una familia de columnas puede tener varias columnas, identificadas por una etiqueta o qualifier{ // ... "aaaaa" : { "A" : { "foo" : "y", "bar" : "d" }, "B" : { "" : "w" } }, "aaaab" : { "A" : { "foo" : "world", "bar" : "domination" }, "B" : { "" : "ocean" } }, // ... }
  • 28. HBase • Multidimensional: timestamp { // ... "aaaaa" : { "A" : { "foo" : { 15 : "y", 4 : "m" }, "bar" : { 15 : "d", } }, "B" : { "" : { 6 : "w" 3 : "o" 1 : "w" } } }, // ... }
  • 30. Ejemplo con HBase Conectarse a HUE: http://localhost:8888 32
  • 41. Ejercicio 2: Ingerir datos estructurados
  • 42. Un paseo por la potencia de Big Data • Imaginemos que somos el “Data Specialist” de una corporación • El análisis de los datos debe responder a preguntas concretas
  • 43. Definir una pregunta de Negocio • Sin una pregunta bien definida: • No sabremos como modelar los datos • Qué estructuras de datos aplicar • Qué conjuntos de datos deberemos obtener • Qué herramientas necesitaremos
  • 44. Ingerir datos estructurados • Pregunta de Negocio: “Qué productos les gusta comprar a nuestros clientes?” • Esta información se guarda por lo general en una base de datos Transaccional, la cual nos dirá qué clientes compran y quienes no cada producto. • Necesitamos ingerir los datos de una BBDD en HDFS
  • 45. sqoop
  • 46. Ingerir datos estructurados • Sqoop nos permite cargar los datos de MySQL en HDFS, preservando la estructura de las tablas. • Con unos parámetros extra, podremos cargarlos en un formato (avro) que podrá luego ser utilizado por Impala
  • 47. Ingerir datos estructurados: sqoop tablas tablas Ficheros distribuidos BBDD Relacional BBDD RelacionalHDFS Tratamiento (Map-Reduce) (Map-Reduce) (Map-Reduce)
  • 48. Ejercicio 2: Ingerir datos estructurados: sqoop • Pasos: 1. Importar todas las tablas desde MySQL a HDFS. 2. Sqoop generará los esquemas de cada tabla. Copiar estos esquemas a HDFS para que HIVE los tenga disponibles. 3. Arrancamos Hive y definimos las tablas. Dos opciones: (1) desde la línea de comandos y (2) desde la interfaz web. 4. Mostramos las tablas 50
  • 49. Ingerir datos estructurados (Mirar Documento) [root@quickstart.cloudera ~] sqoop import-all-tables -- num-mappers 1 --connect jdbc:mysql://quickstart.cloudera:3306/retail_db --username=retail_dba --password=cloudera --compression-codec=snappy --as-avrodatafile --warehouse-dir=/user/hive/warehouse/userXX
  • 50. Ejercicio 2: Ingerir datos estructurados: sqoop 52
  • 51. Ejercicio 2: Ingerir datos estructurados: sqoop 53
  • 52. Ejercicio 2: Definir las tablas: Hive 54
  • 53. Ejercicio 2: Definir las tablas: Hive 55
  • 54. Ejercicio 2: Definir las tablas: Hive 56
  • 55. Ejercicio 2: Mostrar las tablas: Hive 57
  • 57. Ejercicio 3: Consultar datos estructurados
  • 58. Consultar datos estructurados • Dos herramientas para hacer consultas SQL en CDH: • Hive • Traduce las consultas SQL a trabajos MapReduce. • Bueno para trabajos en lote grandes, aplicando transformaciones de forma flexible. • Impala • Significativamente más rápido y preparado para tener baja latencia para consultas interectivas y exploración de datos. • Ambos comparten los metadatos sobre las tablas
  • 59. Consultar datos estructurados • Ejemplo en HIVE: [cloudera@quickstart ~]$ hive CREATE EXTERNAL TABLE categories ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' LOCATION 'hdfs:///user/hive/warehouse/categories' TBLPROPERTIES ('avro.schema.url'='hdfs://quickstart.cloudera/user/urko/sqoop_import_categories.avsc'); categories, customers, departments, orders, order_items, products show tables; exit;
  • 60. Consultar datos estructurados • Hemos transferido datos estructurados de una base de datos relacional a HDFS • Lo hemos transformado en formato Avro • Hemos creado tablas HIVE, preparadas para ser consultadas mediante Impala o consultas por lotes de HIVE. • Vamos a consultarlos!
  • 61. Ejercicio 3: Consultar los datos 63
  • 63. Ejercicio 3: Consultar los datos Mostrar las categorias de producto más populares select c.category_name, count(order_item_quantity) as count from order_items oi inner join products p on oi.order_item_product_id = p.product_id inner join categories c on c.category_id = p.product_category_id group by c.category_name order by count desc limit 10; 65
  • 64. Ejercicio 3: Consultar los datos 66
  • 65. Ejercicio 3: Consultar los datos 67
  • 66. Ejercicio 3: Consultar los datos 68
  • 67. Ejercicio 3: Consultar los datos Mostrar los 10 productos más satisfactorios select p.product_id, p.product_name, r.revenue from products p inner join (select oi.order_item_product_id, sum(cast(oi.order_item_subtotal as float)) as revenue from order_items oi inner join orders o on oi.order_item_order_id = o.order_id where o.order_status <> 'CANCELED' and o.order_status <> 'SUSPECTED_FRAUD' group by order_item_product_id) r on p.product_id = r.order_item_product_id order by r.revenue desc limit 10; 69
  • 68. Ejercicio 3: Consultar los datos 70
  • 69. Ejercicio 4: El valor del Big Data
  • 70. El valor del Big Data • Hasta ahora, el resultado no es nuevo: SQL! • Pregunta de negocio: “son los productos más vistos los más vendidos?” • Devemos correlacionar datos estructurados con otros no estructurados: • Usando Web logs, podremos ver los productos más vistos • Para ingerir flujos de clicks: Flume
  • 71. El valor del Big Data • Flume: un framework de tiempo real y escalable para encaminar, filtrar, agregar, y realizar pequeñas operaciones sobre datos • Para este ejercicio, ya tenemos recopilados un conjunto de datos de acceso web en /opt/examples/log_data/access.log.2
  • 72. El valor del Big Data
  • 73. Ejercicio 4: El valor del Big Data • Cargar los datos de log a HDFS: [cloudera@quickstart ~]$ hadoop fs -copyFromLocal /opt/examples/log_files/access.log.2 /user/hive/warehouse/original_access_logs • Entrar en HIVE: [cloudera@quickstart ~]$ hive 75
  • 74. Ejercicio 4: El valor del Big Data • Crear una tabla en Hive, y consultarla mediante Impala o Hive CREATE EXTERNAL TABLE intermediate_access_logs ( ip STRING, date STRING, method STRING, url STRING, http_version STRING, code1 STRING, code2 STRING, dash STRING, user_agent STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH SERDEPROPERTIES ( "input.regex" = "([^ ]*) - - [([^]]*)] "([^ ]*) ([^ ]*) ([^ ]*)" (d*) (d*) "([^"]*)" "([^"]*)"", "output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s" ) LOCATION '/user/hive/warehouse/original_access_logs'; 76
  • 75. Ejercicio 4: El valor del Big Data • Crear una tabla en Hive, y consultarla mediante Impala o Hive CREATE EXTERNAL TABLE tokenized_access_logs ( ip STRING, date STRING, method STRING, url STRING, http_version STRING, code1 STRING, code2 STRING, dash STRING, user_agent STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/user/hive/warehouse/tokenized_access_logs'; ADD JAR /usr/lib/hive/lib/hive-contrib.jar; INSERT OVERWRITE TABLE tokenized_access_logs SELECT * FROM intermediate_access_logs; Exit; 77
  • 76. El valor del Big Data
  • 77. El valor del Big Data
  • 78. El valor del Big Data
  • 79. El valor del Big Data
  • 80. El valor del Big Data Uno de los productos más vistos no está entre los más comprados!!
  • 81. El valor del Big Data • La correlación entre ambos datos permitió detectar un error en el precio mostrado para el producto “Adidas Kids’ RG III Mid Football Cleat”. Una vez corregido, las ventas del producto empezaron a crecer rápidamente ;)
  • 83. Advanced Analytics • Pregunta de negocio: ¿Qué productos se suelen comprar de forma conjunta? • La respuesta podría ayudar a: • Optimizar campañas de marketing, posicionando productos de forma conjunta • Podrían utilizarlo para mejorar ventas de productos menos vistos • Una herramienta que permite realizar análisis rápidos sobre relaciones de objetos es Apache Spark
  • 84. Ejercicio 5: Advanced Analytics • Apache Spark 86
  • 85. Ejercicio 5: Advanced Analytics • Generamos un trabajo en Spark [cloudera@quickstart ~]$ spark-shell --jars /usr/lib/avro/avro-mapred.jar --conf spark.serializer=org.apache.spark.serializer.KryoSerializer 87
  • 86. Ejercicio 5: Advanced Analytics 88
  • 87. Advanced Analytics // First we're going to import the classes we need and open some of the files // we imported from our relational database into Hadoop with Sqoop import org.apache.avro.generic.GenericRecord import org.apache.avro.mapred.{AvroInputFormat, AvroWrapper} import org.apache.hadoop.io.NullWritable val warehouse = "hdfs://quickstart.cloudera/user/hive/warehouse/" val order_items_path = warehouse + "order_items" val order_items = sc.hadoopFile[AvroWrapper[GenericRecord], NullWritable, AvroInputFormat[GenericRecord]](order_items_path) val products_path = warehouse + "products" val products = sc.hadoopFile[AvroWrapper[GenericRecord], NullWritable, AvroInputFormat[GenericRecord]](products_path)
  • 88. Advanced Analytics // Next, we extract the fields from order_items and products that we care about // and get a list of every product, its name and quantity, grouped by order val orders = order_items.map { x => ( x._1.datum.get("order_item_product_id"), (x._1.datum.get("order_item_order_id"), x._1.datum.get("order_item_quantity"))) }.join( products.map { x => ( x._1.datum.get("product_id"), (x._1.datum.get("product_name"))) } ).map(x => ( scala.Int.unbox(x._2._1._1), // order_id ( scala.Int.unbox(x._2._1._2), // quantity x._2._2.toString // product_name ) )).groupByKey()
  • 89. Advanced Analytics // Finally, we tally how many times each combination of products appears // together in an order, and print the 10 most common combinations. val cooccurrences = orders.map(order => ( order._1, order._2.toList.combinations(2).map(order_pair => ( if (order_pair(0)._2 < order_pair(1)._2) (order_pair(0)._2, order_pair(1)._2) else (order_pair(1)._2, order_pair(0)._2), order_pair(0)._1 * order_pair(1)._1 ) ) ) ) val combos = cooccurrences.flatMap(x => x._2).reduceByKey((a, b) => a + b) val mostCommon = combos.map(x => (x._2, x._1)).sortByKey(false).take(10) println(mostCommon.deep.mkString("n"))
  • 91. Ejercicio 6: Buscando en un mar de datos
  • 92. buscando en un mar de datos • Los logs pueden ser una fuente imprescindible de información • Vamos a ser capaces de explorar de forma interactiva eventos de Log Web, indexando los datos, y haciendo que puedan ser buscados • Vamos a extender Apache Flume anterior, de modo que ademas de ingerir logs, enviará los eventos a Apache Solr para su indexación en tiempo real
  • 93. buscando en un mar de datos • Flume • Solr • Organiza los datos de la misma manera que una BBDD SQL. • Dada registro se llama “document”, y contiene campos definidos en un esquema • Un conjunto de documentos forman una colección. • Es menos estricto en cuanto a la estructura: • Campos opcionales • Flexibilidad en las consultas de texto
  • 94. Ingestión de Datos en streaming: Apache Flume • Servicio distribuido y fiable para recopilar, agregar y mover grandes volúmenes de datos (de log) de forma eficiente • De muchas y variadas fuentes de logs a un lugar centralizado de almacenamiento de datos (ej. Hadoop) • Cuando los datos se generan de forma continua • No solo logs, también sirve para p.e. datos de tráfico de red, datos generados por social media, emails, …
  • 95. Ingestión de Datos en streaming: Apache Flume • Una fuente externa envía eventos a un agente Flume, en un formato que Flume pueda reconocer. • El evento se guarda en el canal, hasta que es consumido por el embudo (Sink) • El Sink quita el evento del canal y lo pone en un repositorio externo o en otro origen de Flume
  • 96. Ingestión de Datos en streaming: Apache Flume
  • 97. Ingestión de Datos en streaming: Apache Flume • Origenes Flume: • Avro • Thrift • Exec (el resultado de la ejecución de un comando Unix) • Un directorio a la espera de nuevos ficheros y sus contenidos • Twitter • NetCat • Syslog • HTTP
  • 98. Ingestión de Datos en streaming: Apache Flume • Canales Flume: • Memoria • JDBC • Fichero • …
  • 99. Ingestión de Datos en streaming: Apache Flume • Sinks Flume: • HDFS • Avro • Thrift • IRC • Fichero • Hbase • …
  • 100. Ingestión de Datos en streaming: Apache Flume • Miramos la configuracion de flume: cd /opt/examples/flume
  • 101. buscando en un mar de datos • Crear el índice de búsqueda: solrctl --zk quickstart.cloudera:2181/solr instancedir --generate solr_configs • Generar los ficheros de configuración: <fields> <field name="_version_" type="long" indexed="true" stored="true" multiValued="false" /> <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <field name="ip" type="text_general" indexed="true" stored="true"/> <field name="request_date" type="date" indexed="true" stored="true"/> <field name="request" type="text_general" indexed="true" stored="true"/> <field name="department" type="string" indexed="true" stored="true" multiValued="false"/> <field name="category" type="string" indexed="true" stored="true" multiValued="false"/> <field name="product" type="string" indexed="true" stored="true" multiValued="false"/> <field name="action" type="string" indexed="true" stored="true" multiValued="false"/> </fields>
  • 102. Ejercicio 6: Buscando en un mar de datos • Cargamos la configuración (y morplines.conf) [cloudera@quickstart ~]$ cd /opt/examples/flume [cloudera@quickstart ~]$ solrctl --zk quickstart.cloudera:2181/solr instancedir --create live_logs ./solr_configs • Creamos la colección [cloudera@quickstart ~]$ solrctl --zk quickstart.cloudera:2181/solr collection --create live_logs -s 1 • Arrancamos el agente flume [cloudera@quickstart ~]$ start_logs [cloudera@quickstart ~]$ flume-ng agent --conf /opt/examples/flume/conf -- conf-file /opt/examples/flume/conf/flume.conf --name agent1 - Dflume.root.logger=DEBUG,INFO,console 104
  • 103. buscando en un mar de datos
  • 104. buscando en un mar de datos
  • 105. buscando en un mar de datos
  • 106. Ejercicio 6: Buscando en un mar de datos 108
  • 107. buscando en un mar de datos
  • 108. Ejercicio 7: Creando un panel de mandos
  • 109. Creando un panel de mandos • Las búsquedas son rápidas, pero aún es fácil perdernos • Vamos a crear un panel de mandos para analizar el comportamiento de las visitas Web en tiempo real.
  • 110. Ejercicio 6: Creando un panel de mandos 112
  • 111. Ejercicio 6: Creando un panel de mandos Arrastrar a esta zona gris Seleccionar request_date 113
  • 112. Ejercicio 6: Creando un panel de mandos 114
  • 113. Ejercicio 6: Creando un panel de mandos Seleccionar un intervalo de +10 minutos 115
  • 114. Ejercicio 6: Creando un panel de mandos 1.- Seleccionar un layout de 2 columnas 2.- Arrastrar un pie chart 116
  • 115. Ejercicio 6: Creando un panel de mandos 3.- Seleccionar department 117
  • 116. Ejercicio 6: Creando un panel de mandos 1.- Arrastrar gráfico de tipo facet a la columna izquierda 2.- Seleccionar product 118
  • 117. Ejercicio 6: Creando un panel de mandos 119
  • 118. Ejercicio 6: Creando un panel de mandos Terminamos la edición Guardamos el panel 30/06/2016 Iñaki Garitano - Taller Big Data 120
  • 119. Acabando… • Ideas? • Es útil? • Vas a por ello? • ESKERRIK ASKO!!
  • 120. Eskerrik asko www.mondragon.edu Urko Zurutuza Mondragon Unibertsitatea uzurutuza@mondragon.edu https://es.linkedin.com/in/uzurutuz a/ @urkovain

Notas del editor

  1. http://www.ibmbigdatahub.com/blog/6-steps-start-your-big-data-journey
  2. [root@quickstart.cloudera ~] sqoop import-all-tables \ -m 1 \ --connect jdbc:mysql://quickstart.cloudera:3306/retail_db \ --username=retail_dba \ --password=cloudera \ --compression-codec=snappy \ --as-avrodatafile \ --warehouse-dir=/user/hive/warehouse/user00
  3. Los esquemas solo se aplican cuando se consultan los datos (squema on read). Es decir, si necesitamos cruzar tablas con SQL, entonces acudimos al esquema para ver por qué claves cruzar. Pero al estar los ficheros sueltos, así se pueden ingerir or otros sistemas.
  4. La serialización (o marshalling en inglés) consiste en un proceso de codificación de un objeto en un medio de almacenamiento (como puede ser un archivo, o un buffer de memoria) con el fin de transmitirlo a través de una conexión en red como una serie de bytes o en un formato humanamente más legible como XML o JSON, entre otros.
  5. he most common area that you would be interested in is the <fields></fields> section. From this area you can define the fields that are present and searchable in your index.