PINOT
[email protected] – www.stratebi.com)
Stratebi Paper (2015 – info@
Pinot es la herramienta de análisis en tiempo real desarrollada por LinkedIn que la
es la herramienta de análisis en tiempo real desarrollada por LinkedIn que la
es la herramienta de análisis en tiempo real desarrollada por LinkedIn que la
compañía ha liberado su código bajo licencia Apache 2.0, habiendo sido albergado en
compañía ha liberado su código bajo licencia Apache 2.0, habiendo sido albergado en
compañía ha liberado su código bajo licencia Apache 2.0, habiendo sido albergado en
GitHub. Se trata de un datastore
GitHub. Se trata de un datastore OLAP en tiempo real distribuido, que se utiliza para
OLAP en tiempo real distribuido, que se utiliza para
ofrecer soluciones escalables de análisis en tiempo real con baja latencia. Se pueden
ofrecer soluciones escalables de análisis en tiempo real con baja latencia. Se pueden
ofrecer soluciones escalables de análisis en tiempo real con baja latencia. Se pueden
ingerir los datos de fuentes offline (como Hadoop o ficheros planos), así como las
ingerir los datos de fuentes offline (como Hadoop o ficheros planos), así como las
ingerir los datos de fuentes offline (como Hadoop o ficheros planos), así como las
fuentes online (Kafka).
Pinot es muy adecuado para los casos de analitica de datos sólo de agregacion
es muy adecuado para los casos de analitica de datos sólo de agregacion
es muy adecuado para los casos de analitica de datos sólo de agregacion
inmutables que requieren baja latencia entre un evento que se ingiere y que está
inmutables que requieren baja latencia entre un evento que se ingiere y que está
inmutables que requieren baja latencia entre un evento que se ingiere y que está
disponible para ser consultado. Entre sus características destaca:
disponible para ser consultado. Entre sus características destaca:
• La flexibilidad con varios
La flexibilidad con varios esquemas de compresión.
• La ingestión near real time desde Kafka complementado por la ingestión batch
La ingestión near real time desde Kafka complementado por la ingestión batch
La ingestión near real time desde Kafka complementado por la ingestión batch
desde herramientas como Hadoop.
desde herramientas como Hadoop.
• SQL como lenguaje para las consultas (seleccion, agregacion, filtrado, por
SQL como lenguaje para las consultas (seleccion, agregacion, filtrado, por
SQL como lenguaje para las consultas (seleccion, agregacion, filtrado, por
grupo, por orden...).
Soporte para campos multivalor.
• Horizontalmente escalable y tolerante a fallos
Horizontalmente escalable y tolerante a fallos
• Soporte para campos mul
Sólo para comparar el antes y el despues de Pinot, 'Jobs Analytics' es un producto
Sólo para comparar el antes y el despues de Pinot, 'Jobs Analytics
' es un producto
construido hace algunos años utilizando Oracle y una completa arquitectura compleja
construido hace algunos años utilizando Oracle y una completa arquitectura compleja
construido hace algunos años utilizando Oracle y una completa arquitectura compleja
y con limitaciones. La imagen de abajo muestra el contraste y la facilidad que Pinot
y con limitaciones. La imagen de abajo muestra el contraste y la facilidad que Pinot
y con limitaciones. La imagen de abajo muestra el contraste y la facilidad que Pinot
permitia a los empleados de Linkedin construir productos de análisis d
permitia a los empleados de Linkedin construir productos de análisis d
permitia a los empleados de Linkedin construir productos de análisis de datos sin
tener que preocuparse de los detalles complicados.
tener que preocuparse de los detalles complicados.
Antes
Antes
Después
Después
Near
Real-time
No es posible apoyarse en un flujo de
No es posible apoyarse en un flujo de
datos near real-time. Los datos tienen que
time. Los datos tienen que
ser procesados, comprimidos en Hadoop y
ser procesados, comprimidos en Hadoop y
luego reenviados a Oracle
luego reenviados a Oracle
Pinot soporta la ingestion de datos
soporta la ingestion de datos
desde Kafka para el near real
desde Kafka para el near real-time
además de la posibilidad de alimentarse
además de la posibilidad de alimentarse
de un flujo desde Hadoop
de un flujo desde Hadoop
Consultas
OLAP
Las RDBMS no es la mejor opción para
Las RDBMS no es la mejor opción para
cualquier consulta OLAP puesto que sus
cualquier consulta OLAP puesto que sus
caracteristicas y consistencia está
y consistencia está
limitado. El esquema era complejo y
limitado. El esquema era complejo y
modelar los datos en estas RDBMS no es lo
modelar los datos en estas RDBMS no es lo
idoneo pues que se tiene que reducir las
idoneo pues que se tiene que reducir las
dimensiones
El modelado de datos es lo primero que
El modelado de datos es lo primero que
un estilo OLAP necesita y puede
un estilo OLAP necesita y puede
soportar complejas dimensiones de
soportar complejas dimensiones desde
una datasets muy pesados
una datasets muy pesados
Retención
de datos
Para productos OLAP se necesita
Para productos OLAP se necesita
necesitamos una manera de eliminar datos
necesitamos una manera de eliminar datos
obsoletos. Para ello utilizamos jobs
obsoletos. Para ello utilizamos jobs
programados que eliminen los registros.
programados que eliminen los registros.
Los datos se almacenan en segmentos y
Los datos se almacenan en segmentos y
éstos están agupados por fecha por lo
agupados por fecha por lo
que la caducidad de los datos es
que la caducidad de los datos es
constante
Debido a las opciones de diseño para lograr estos objetivos, hay ciertas limitaciones
Debido a las opciones de diseño para lograr estos objetivos, hay ciertas limitaciones
Debido a las opciones de diseño para lograr estos objetivos, hay ciertas limitaciones
presentes en Pinot:
• Pinot no sustituye a una base de datos es decir, no se puede utilizar como
no sustituye a una base de datos es decir, no se puede utilizar como
no sustituye a una base de datos es decir, no se puede utilizar como
fuente de almacenamiento per se, no puede mutar los datos.
fuente de almacenamiento per se, no puede mutar los datos.
• Tampoco reemplaza a un motor de búsqueda, por ejemplo, para una
búsqueda de texto completo, la relevancia no está incluida.
• Las queries no pueden extenderse a lo largo de varias tablas.
Sin embargo, Pinot funciona muy bien para la consulta de datos de series de tiempo
con muchas Dimensiones y Métricas.
Pinot está compuesto por tres distintos componentes.
• Controlador Pinot: Administra los nodos del clúster. Responsabilidades:
o Maneja todas las operaciones de crear, actualizar, eliminar en
tablas y segmentos.
o Calcula la asignación de la tabla y sus segmentos para los servidores
Pinot.
• Pinot Servidor: Almacena uno o más segmentos físicos. Responsabilidades:
o Cuando se asigna un segmento precreado, se descargar y se cargar.
Si se asigna un topic de Kafka, comienza a consumir a partir de un
sub conjunto de particiones en Kafka.
o Ejecuta consultas y devuelve la respuesta al Pinot Broker.
• Pinot Broker : Acepta las consultas (queries) de los clientes y las enruta a
varios servidores (dependiendo de la estrategia de enrutamiento). Todas
las respuestas se combinan y se envían de nuevo a cliente.
Antes de comenzar la guia de instalación rápida que nos ofrecen desde Linkedin, hay
que definir qué es una tabla y un segmento
• Tabla: Una tabla es una abstracción lógica para referirse a un conjunto de
datos relacionados entre sí. Se compone de columnas y filas (documento).
La tabla de Schema define los nombres de las columnas y sus metadatos.
• Segmento: Una tabla lógica se divide en varias unidades físicas. A estas
unidades se le denominan segmentos.
Quickstart
1- Montamos e instalamos Pinot
git clone https://github.com/linkedin/pinot.git
cd pinot
mvn install package -DskipTests
cd pinot-distribution/target/pinot-0.016-pkg
chmod +x bin/*.sh
En este ejemplo utilizaremos las estadisticas que vienen adjuntas en el proyecto,
estadisticas de baseball desde 1878 hasta 2013, en total unos 100000 registros
divididos en 15 columnas.
Para la parte offline, usaremos el script quick-start-offline.sh incluido en la carpeta
bin/ el cual convertirá los datos en segmentos para volcarlos en Pinot. Además este
scripts arranca los componentes necesarios para hacer funcionar el ecosistema,
Zookeeper, el controlador, el broker y el servidor
bin/quick-start-offline.sh
Ahora podremos lanzar consultas sobre la base de datos a través de la misma
terminal:
O de la web habilitada para ello: http://<servidor>: 9000/query
2- Realtime quick start
Hay dos maneras para la ingesta de datos en Pinot, la primera batch, como hemos
visto y la segunda es real-time. En este caso utilizaremos Kafka para ver como se
envian los datos a Pinot.
Para hacerlo sencillo, utilizaremos el codigo de ejemplo que trae Pinot al descargar.
Este ejemplo nos subscribiremos al feed de invitaciones y nuevos eventos de
meetup.com gracias al uso de su API.
Al igual que en el ejemplo anterior, basta un unico comando bin/quick-start-
realtime.sh para inciar todo lo necesario, en este caso:
Inicio del broker de Kafka.
•
• Configurar el listener para los nuevos eventos y los publica en nuestro broker
local.
Inicio del servicio zookeeper, el controller, el broker y el server.
•
• Configuracion de la fuente de realtime.
bin/quick-start-realtime.sh
En este momento Pinot ya está recibiendo los nuevos eventos e invitaciones que se
producen en meetup.com
Por supuesto, podremos consultar los datos, por ejemplo, listar el pais más activo en
el momento de la consulta o los eventos más activos.
Esto ha sido un
Comentarios de: Pinot (0)
No hay comentarios