diff --git a/BigData-es001.html b/BigData-es001.html index dd9da3f..5c8926f 100644 --- a/BigData-es001.html +++ b/BigData-es001.html @@ -171,6 +171,7 @@
En el pasado solo las grandes organizaciones podían aprovecharse de Big Data.
+En el pasado solo las grandes organizaciones podían aprovecharse de Big Data:
Walmart, Google, agentes financieros especializados.
En el informe de 2024 el autor mueve el objetivo del landscape Big Data hacia la IA resaltando como tendencia la interacción de los datos no estructurados, utilizados en los modelos LLM, para entrenar los datos internos de las organizaciones como.
En el informe de 2024 el autor mueve el objetivo del landscape Big Data hacia la IA resaltando como tendencia la interacción de los datos no estructurados, utilizados en los modelos LLM, para entrenar los datos internos de las organizaciones.
En este sentido comenta el rápido crecimiento de las empresas OpenAI, Anthropic, Palantir, Midjourney y Perplexity AI, entre otras; y el aumento de la valoración de las 7 magníficas (Nvidia, Meta, Amazon, Microsoft, Alphabet, Apple and Tesla) en la bolsa de Nueva York (2023).
Por último, la lista de Inside Big Data IMPACT 50 LIST for Q1 2024 https://insidebigdata.com/2024/01/18/the-insidebigdata-impact-50-list-for-q1-2024/ muestra, listando a las empresas más importantes, cómo el mercado ha evolucionado hacia la IA. Ellas son: OpenAI, Microsoft AI, NVIDIA, Hugging Face (Pre-trained ML models), Google AI y DeepMind, Amazon Web Services, Snowflake, Databricks, Intel AI, e IBM, en este orden.
Por último, la lista de Inside Big Data IMPACT 50 LIST for Q1 2024 https://insidebigdata.com/2024/01/18/the-insidebigdata-impact-50-list-for-q1-2024/ muestra, listando a las empresas más importantes, cómo el mercado ha evolucionado hacia la IA. Ellas son: OpenAI, Microsoft AI, NVIDIA, Hugging Face (Pre-trained ML models), Google AI y DeepMind, Amazon Web Services, Snowflake, Databricks, Intel AI, e IBM, en este orden.
El gobierno de datos es una serie de principios, estándares y prácticas que se aplican de punta a punta en el ciclo de vida de los datos (recolección, almacenamiento, uso, protección, archivo y eliminación) para asegurar que los mismos sean confiables y consistentes.
Para ello establece estructuras organizacionales, confirma responsables de datos, Hace cumplir reglas y políticas, documenta procesos y registra métricas y términos de negocio comunes.
-Fuente: https://www.informatica.com/blogs/data-governance-vs-data-management-whats-the-difference.html.
-Para ello establece estructuras organizacionales, confirma responsables de datos, Hace cumplir reglas y políticas, documenta procesos y registra métricas y términos de negocio comunes.
Fuente: Informatica.com.
Mineria de datos (Data mining): Se utiliza para filtrar conjuntos de datos en busca de patrones y relaciones.
Minería de datos (Data mining): Se utiliza para filtrar conjuntos de datos en busca de patrones y relaciones.
¿Qué hay en los datos?
@@ -1021,7 +1023,7 @@Asociación.
Análisis exploratorio.
Segmentación.
Clustering (no supervisado): agrupar los datos en categorías basadas en alguna medida de similitud o distancia.
Clustering (no supervisado): agrupar los datos en categorías basadas en alguna medida de similitud o distancia.
Reducción de la dimensión: proceso de reducción del número de variables aleatorias que se tratan.
http://aws.amazon.com/datasets/
-La ASF (Apache Software Foundation) https://apache.org/ desarrolla, administra e incuba cientos de proyectos de código de fuente abierta (open source) de nivel empresarial utilizados mundialmente.
Actualmente administra más de 70 proyectos relacionados con Big Data https://projects.apache.org/projects.html?category#big-data.
Entre ellos, se pueden mencionar Hadoop para el procesamientos en lotes (batch processing) de grandes conjuntos de datos, Spark para procesamiento in-memory de datos y analítica, Kafka para la ingesta de datos en tiempo real y streaming; y Cassandra o HBase almacenamiento NoSQL escalable de datos.
El blog de la ASF se encuentra en https://news.apache.org/.
En cuanto a la frecuencia los datos se pueden procesar en tiempo real o por lotes.
En tiempo real, el procesamiento ocurre cuando los datos se reciben al mismo tiempo que se generan.
En tiempo real el procesamiento ocurre cuando los datos se reciben al mismo tiempo que se generan.
Los datos por lotes se almacenan mediante un proceso por lotes fijo en algún intervalo de tiempo y luego se trasladan al flujo del proceso de administración de datos.
Cuando existen numerosas fuentes de Big Data con diferentes formatos, el mayor desafío para el negocio es ingerir datos a una velocidad razonable y procesarlos de manera eficiente.
De esta manera los datos pueden priorizarse y en consecuencia mejorar la toma de decisiones de negocio.
Las fuentes de datos, las herramientas de ingestión de datos y las aplicaciones de consumo evolucionan permanentemente durante el proceso de ingestión de datos.
Los datos pueden modificar sus atributos sin previo aviso independientemente de la aplicación utilizada.
Detección y captura de datos modificados: esta tarea es difícil, no solo por la naturaleza semiestructurada o no estructurada de los datos.
También lo es por tratar con baja latencia (una red informática que está optimizada para procesar un volumen muy alto de mensajes de datos con un retraso mínimo).
Estas redes están diseñadas para admitir operaciones que requieren acceso casi en tiempo real a datos que cambian rápidamente.
Imagen: Ingesta de datos en tiempo real en Big Data. Autor: M.H.Fortino(2024).
Apache Spark es un motor de procesamiento rápido y general compatible con datos de Hadoop.
Puede ejecutarse en clústeres de Hadoop a través de YARN o de modo independiente.
Procesa datos en HDFS, HBase, Cassandra, Hive y cualquier formato de entrada de Hadoop.
Diseñado para realizar tanto procesamiento por lotes (similar a MapReduce) como nuevas cargas de trabajo como streaming, consultas interactivas y aprendizaje automático.
Extraído de las FAQs: https://spark.apache.org/faq.html.
Más información en la sección Motores de consultas de estos apuntes.
Apache Flume
-Un servicio distribuido, confiable y de alta disponibilidad que colecta, agrupa y mueve eficientemente grandes cantidades de logs y datos.
Extraído de: https://flume.apache.org/.
Es robusto y tolerante a fallas con mecanismos de confiabilidad ajustables.
Cuenta también con mecanismos de conmutación por error y recuperación.
Extraído de: https://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html.
Apache Nifi
-Es una de las mejores herramientas de data ingestion del mercado.
Proveee un sistema fácil de usar, poderoso y confiable para procesar y distribuir datos.
Extraído de: https://nifi.apache.org/.
Framework utilizado para el procesamiento de flujos distribuidos (distributed stream) que facilita resultados precisos, aún en el caso de datos que están desordenados o que llegan con retraso en la distribución.
Extraído de: https://flink.apache.org/.
Es una plataforma de transmisión de eventos distribuidos de código abierto utilizada por miles de empresas para canalizaciones de datos de alto rendimiento, análisis de streaming, integración de datos y aplicaciones de misión crítica.
Es también un sistema de mensajería escalable que permite a los usuarios publicar y consumir grandes cantidades de mensajes en tiempo real por suscripción.
Extraído de: https://kafka.apache.org/.
Documentación: https://nifi.apache.org/docs/nifi-docs/html/getting-started.html.
Caso de uso: Best practices and lessons learnt from Running Apache NiFi at Renault
-https://fr.slideshare.net/Hadoop_Summit/best-practices-and-lessons-learnt-from-running-apache-nifi-at-renault.
La transmisión de eventos es el equivalente digital del sistema nervioso central del cuerpo humano.
Es la base tecnológica para el mundo ‘siempre activo’ donde las empresas están cada vez más definidas por software y automatizadas, y donde el usuario de software es más software (Inteligencia Artificial).
Apache Flink
-Framework utilizado para el procesamiento de flujos distribuidos (distributed stream) que facilita resultados precisos, aún en el caso de datos que están desordenados o que llegan con retraso en la distribución.
Extraído de: https://flink.apache.org/.
Técnicamente hablando, la transmisión de eventos es la práctica de capturar datos en tiempo real de fuentes de eventos como bases de datos, sensores, dispositivos móviles, servicios en la nube y aplicaciones de software en forma de flujos de eventos; almacenar estos flujos de eventos de forma duradera para su posterior recuperación; manipular, procesar y reaccionar a los flujos de eventos en tiempo real y retrospectivamente; y enrutar los flujos de eventos a diferentes tecnologías de destino según sea necesario.
La version comercial de Apache Kafka es Confluent https://www.confluent.io/es-es/.
Otro broker de mensajería es RabbitMQ https://www.rabbitmq.com/.
Elastic Logstash
-Tubería (pipeline) de procesamiento de datos del lado del servidor de código abierto que ingiere datos de una multitud de fuentes, los transforma simultáneamente y luego los envía al reservatorio (stash), por ejemplo Elasticsearch.
Es el sistema de mensajería multi protocolo open source más popular del mercado.
Se conecta a clientes escritos en JavaScript, C, C++, Python, .Net, y más.
Integra aplicaciones multiplataforma utilizando el protocolo AMQP.
Intercambia mensajes mediante STOMP sobre websockets, gestiona dispositivos IoT con MQTT.
Soporta la infraestructura JMS (Java Message Service).
Fuente: https://activemq.apache.org/
Apache Pulsar es una plataforma de eventos distribuidos cloud similar a Kafka originalmente creada por Yahoo!
La versión comercial de sus creadores es StreamNative https://streamnative.io/.
Es un sistema de mensajería que combina la escalabilidad horizontal de Apache Kafka y Pulsar con funciones del middleware como colas y filtros de mensajes no entregados de Apache ActiveMQ y RabbitMQ.
Se complementa con Dataflow, que controla la anulación de mensajes duplicados, el procesamiento “solo una vez” y generación de marcas de agua a partir de eventos con marcas de tiempo.
Para usar Dataflow se escribe la canalización con el SDK de Apache Beam y luego se ejecuta.
Canalización (pipeline) de procesamiento de datos del lado del servidor de código abierto que ingiere datos de una multitud de fuentes, los transforma simultáneamente y luego los envía al reservatorio (stash), por ejemplo Elasticsearch.
Extraído de: https://www.elastic.co/es/logstash.
Es una de las mejores herramientas de data ingestion del mercado.
Proveee un sistema fácil de usar, poderoso y confiable para procesar y distribuir datos.
Extraído de: https://nifi.apache.org/, https://nifi.apache.org/documentation/v2/.
Apache Beam
-Documentación: https://nifi.apache.org/docs/nifi-docs/html/getting-started.html.
Caso de uso: Best practices and lessons learnt from Running Apache NiFi at Renault
+https://fr.slideshare.net/Hadoop_Summit/best-practices-and-lessons-learnt-from-running-apache-nifi-at-renault.
Es un modelo de programación unificado que permite implementar trabajos de procesamiento de datos por lotes y de streaming en cualquier motor de ejecución.
Lee los datos desde diversas fuentes, ejecuta la lógica del negocio para batch y streaming, y finalmente los deposita en las soluciones de almacenamiento disponibles.
Una canalización de Beam puede ejecutarse en los sistemas de procesamiento de datos distribuidos más populares, como Spark, Flink o Samza.
Fuente: https://beam.apache.org/.
Apache Samza
-Permite crear aplicaciones con estado que procesan datos en tiempo real desde múltiples fuentes, incluido Apache Kafka.
Admite opciones de implementación flexibles para ejecutarse en YARN o como una biblioteca independiente.
Tutorial: https://samza.apache.org/startup/hello-samza/1.6.0/.
Fuente: https://samza.apache.org/.
Apache Airflow
-Apache Airflow es una plataforma que permite crear, programar temporalmente, y monitorar flujos de trabajo utilizando Python como lenguaje.
Automatiza la ingestas de datos, acciones de mantenimiento periódicas y realiza tareas de administración.
Extraído de: https://airflow.apache.org/.
Un flujo de trabajo de ejemplo puede ser:
Mage AI
-Mage AI es una herramienta open source orientada a crear canalizaciones para transformar e integrar datos.
Fuente: https://www.mage.ai/.
Materialize es un almacén de datos útil para análisis en tiempo real que ofrece actualizaciones de vista incrementales.
+Mage AI es una herramienta open source orientada a crear canalizaciones para transformar e integrar datos.
Extraído de: https://materialize.com/.
Fivetran es una cloud-based platform para ETL.
Stitch Data Loader mueve más de 130 tipos de fuentes al data warehouse.
Apache Kafka
-Es una plataforma de transmisión de eventos distribuidos de código abierto utilizada por miles de empresas para canalizaciones de datos de alto rendimiento, análisis de streaming, integración de datos y aplicaciones de misión crítica.
Es también un sistema de mensajería escalable que permite a los usuarios publicar y consumir grandes cantidades de mensajes en tiempo real por suscripción.
Extraído de: https://kafka.apache.org/.
La transmisión de eventos es el equivalente digital del sistema nervioso central del cuerpo humano.
Es la base tecnológica para el mundo ‘siempre activo’ donde las empresas están cada vez más definidas por software y automatizadas, y donde el usuario de software es más software (Inteligencia Artificial).
Técnicamente hablando, la transmisión de eventos es la práctica de capturar datos en tiempo real de fuentes de eventos como bases de datos, sensores, dispositivos móviles, servicios en la nube y aplicaciones de software en forma de flujos de eventos; almacenar estos flujos de eventos de forma duradera para su posterior recuperación; manipular, procesar y reaccionar a los flujos de eventos en tiempo real y retrospectivamente; y enrutar los flujos de eventos a diferentes tecnologías de destino según sea necesario.
La version comercial de Apache Kafka es Confluent https://www.confluent.io/es-es/.
Otro broker de mensajería es RabbitMQ https://www.rabbitmq.com/.
Apache ActiveMQ
-Es el sistema de mensajería multi protocolo open source más popular del mercado.
Se conecta a clientes escritos en JavaScript, C, C++, Python, .Net, y más.
Integra aplicaciones multiplataforma utilizando el protocolo AMQP.
Intercambia mensajes mediante STOMP sobre websockets, gestiona dispositivos IoT con MQTT.
Soporta la infraestructura JMS (Java Message Service).
Fuente: https://activemq.apache.org/
Apache Pulsar
-Apache Pulsar es una plataforma de eventos distribuidos cloud similar a Kafka originalmente creada por Yahoo!
La versión comercial de sus creadores es StreamNative https://streamnative.io/.
Pub/Sub
+Materialize es un almacén de datos útil para análisis en tiempo real que ofrece actualizaciones de vista incrementales.
Es un sistema de mensajería que combina la escalabilidad horizontal de Apache Kafka y Pulsar con funciones del middleware como colas y filtros de mensajes no entregados de Apache ActiveMQ y RabbitMQ.
Se complementa con Dataflow, que controla la anulación de mensajes duplicados, el procesamiento “solo una vez” y generación de marcas de agua a partir de eventos con marcas de tiempo.
Para usar Dataflow se escribe la canalización con el SDK de Apache Beam y luego se ejecuta.
Extraído de: https://materialize.com/.
Cuando existen numerosas fuentes de Big Data con diferentes formatos, el mayor desafío para el negocio es ingerir datos a una velocidad razonable y procesarlos de manera eficiente.
De esta manera los datos pueden priorizarse y en consecuencia mejorar la toma de decisiones de negocio.
Las fuentes de datos, las herramientas de ingestión de datos y las aplicaciones de consumo evolucionan permanentemente durante el proceso de ingestión de datos.
Los datos pueden modificar sus atributos sin previo aviso independientemente de la aplicación utilizada.
Detección y captura de datos modificados: esta tarea es difícil, no solo por la naturaleza semiestructurada o no estructurada de los datos.
También lo es por tratar con baja latencia (una red informática que está optimizada para procesar un volumen muy alto de mensajes de datos con un retraso mínimo).
Estas redes están diseñadas para admitir operaciones que requieren acceso casi en tiempo real a datos que cambian rápidamente.
La persistencia políglota es la forma de compartir o dividir los datos en múltiples bases de datos y aprovechar su poder juntas.
Relacionales
No SQL
Gráficas
En memoria
BBDDs Relacionales.
BBDDs No SQL.
BBDDs de grafos.
BBDDs en memoria.
Polyglot Persistance tiene tiempos de respuesta más rápidos.
Polyglot Persistance tiene tiempos de respuesta más rápidos.
Las bases de datos NoSQL escalan bien cuando se modelan correctamente para los datos que se desean almacenar.
La experiencia de usuario es mejor cuando se aprovecha el poder de múltiples bases de datos al mismo tiempo.
Por ejemplo, si desea buscar productos en una aplicación de comercio electrónico, se utiliza ElasticSearch, que devuelve los resultados en función de la relevancia, lo que MongoDB no puede hacer fácilmente.
Por ejemplo, si desea buscar productos en una aplicación de comercio electrónico, se utiliza ElasticSearch, que devuelve los resultados en función de la relevancia, lo que MongoDB no puede hacer fácilmente.
Como contrapartida, tiene como desventaja la necesidad de contratar personal especializado para la integración de las bases de datos y una mayor cantidad de recursos de almacenamiento.
HDFS : Hadoop Distributed File System.
HDFS : Hadoop Distributed File System.
Ozone: Un object store para Hadoop, la próxima generación de HDFS.
GlusterFS: Sistema de archivos distribuido confiable.
Ceph: Proporciona almacenamiento de objetos, bloques y sistemas de archivos en un solo clúster.
MinIO: Un object store para la insfraestructura de datos de IA.
Cloud storage: Amazon S3 Storage Service, IBM Cloud Object Storage, Azure Blob Storage, Google Cloud Storage.
Cloud storage: Amazon S3 Storage Service, IBM Cloud Object Storage, Azure Blob Storage, Google Cloud Storage.
Fundada en 2013 por los creadores originales de Apache Spark, Delta Lake y MLflow, Databricks reúne ingeniería de datos, ciencia y análisis en una plataforma abierta y unificada para que los equipos de datos puedan colaborar e innovar más rápido.
Está alojada en Microsoft Azure.
+Nacido como almacén de datos Snowflake facilita el almacenamiento, procesamiento, y brinda soluciones analíticas flexibles y veloces de manera fácil con una escalabilidad casi infinita, habilitada automáticamente o sobre la marcha.
Está alojado en Amazon AWS.
Fuente: https://databricks.com/.
Fuente: https://www.snowflake.com/.
Permite acceder, integrar y analizar datos de manera fácil y segura con una escalabilidad casi infinita, habilitada automáticamente o sobre la marcha.
Está alojada en Amazon AWS.
+Fundada en 2013 por los creadores originales de Apache Spark, Delta Lake y MLflow, Databricks reúne ingeniería de datos, ciencia y análisis en una plataforma abierta y unificada para que los equipos de datos puedan colaborar e innovar más rápido.
Está alojado en Microsoft Azure.
Fuente: https://www.snowflake.com/.
Fuente: https://databricks.com/.
Fuente: https://hudi.apache.org/.
Comparativa entre Hudi, Delta Lake e Iceberg:
Apache XTable foca en la interoperabilidad entre los distintos formatos de tablas de lagos de datos como Apache Hudi, Delta Lake, y Apache Iceberg.
Actúa como capa intermedia que traduce los metadatos de los formatos de tablas de la fuente al destino sin necesidad de duplicar o reescribir los ficheros de datos.
Fuente: https://xtable.apache.org/.
Algunas de las herramientas de la Apache Software Foundation https://apache.org/ para Big Data:
Algunas de las herramientas de la ASF (Apache Software Foundation) https://apache.org/ para Big Data:
Una comparativa entre las tecnologías Apache mesos junto al gestor de contenedores Marathon https://mesosphere.github.io/marathon/ y Kubernetes:
+Una comparativa entre las tecnologías Apache Mesos junto al gestor de contenedores Marathon https://mesosphere.github.io/marathon/ y Kubernetes:
@@ -1265,10 +1304,23 @@Híbrida
Híbrida:
+La arquitectura sin servidor maestro y la baja latencia significan que Cassandra resistirá una interrupción completa del centro de datos sin pérdida de datos, en nubes públicas o privadas, o en las instalaciones.
Tolerante a fallos
Tolerante a fallos:
+El soporte de Cassandra para la replicación en varios centros de datos es el mejor de su clase, lo que proporciona una latencia más baja para sus usuarios y la tranquilidad de saber que puede sobrevivir a las interrupciones regionales.
Los nodos con fallas se pueden reemplazar sin tiempo de inactividad.
Centrada en la calidad
Centrada en la calidad:
+Para garantizar la confiabilidad y la estabilidad, Cassandra se prueba en clústeres de hasta 1,000 nodos y con cientos de casos de uso y esquemas del mundo real probados con pruebas de reproducción, fuzz, basadas en propiedades, inyección de fallas y de rendimiento.
Desempeño:
Distribuida
Distribuida:
+Cassandra es adecuada para aplicaciones que no pueden darse el lujo de perder datos, incluso cuando un centro de datos completo deja de funcionar.
No hay puntos únicos de falla. No hay cuellos de botella en la red. Todos los nodos del clúster son idénticos.
Opciones
Opciones:
+Se puede elegir entre replicación síncrona o asíncrona para cada actualización. Las operaciones asincrónicas de alta disponibilidad se optimizan con funciones como Hinted Handoff y Read Repair.
La función de registro de auditoría para operadores rastrea la actividad DML, DDL y DCL con un impacto mínimo en el rendimiento normal de la carga de trabajo, mientras que fqltool permite la captura y reproducción de cargas de trabajo de producción para su análisis.
Conmutación por error automática de Region Server
Conmutación por error automática de Region Server.
Integración de Hadoop/HDFS: HBase es compatible con HDFS de fábrica como su sistema de archivos distribuido.
MapReduce: HBase admite procesamiento en paralelo masivo a través de MapReduce para usar HBase como fuente y receptor.
En este apartado se verán las fases de análisis y consulta de datos, y visualización.
En este apartado se verán las fases de procesamiento, análisis y consulta de datos; y visualización.
Los motores de consultas SQL (SQL query engine) permiten realizar consultas a grandes cantidades de datos (terabytes o petabytes) en distintas fuentes simultáneamente.
Las consultas pueden localizar datos, actualizarlos, agregarlos, etc.
Entre las herramientas más populares de esta categoría se encuentran Spark, Impala, Hive, y Presto/Trino; entre otras.
Es un sistema distribuido open source para procesar datos en tiempo real durante la ingesta de datos.
Es escalable, tiene tolerancia a fallos, y es fácil de configurar y operar.
Facilita el procesamiento confiable de flujos ilimitados de datos, haciendo para el procesamiento en tiempo real lo que Hadoop hizo para el procesamiento por lotes.
-Extraído de: https://storm.apache.org/.
No existe ningún truco que convierta a Hadoop en un sistema en tiempo real.
El procesamiento de datos en tiempo real tiene un conjunto de requisitos fundamentalmente diferente al procesamiento por lotes.
Apache Storm agrega a Hadoop esta funcionalidad de manera sencilla.
Casos de uso:
-Análisis en tiempo real
Aprendizaje automático
Monitoreo continuo de operaciones
RPC distribuido, ETL, y más.
Situation |
-Spark |
-Storm |
-
---|---|---|
Stream processing |
-Batch processing |
-Micro-batch processing |
-
Latency |
-Latency of a few seconds |
-Latency of milliseconds |
-
Multi-language support |
-Lesser language support |
-Multiple language support |
-
Languages |
-Java – Scala |
-Java – Scala – Clojure |
-
Stream sources |
-HDFS |
-Spout |
-
Resource management |
-Yarn, Mesos |
-Yarn, Mesos |
-
Provisioning |
-Basic using Ganglia |
-Apache Ambari |
-
Messaging |
-Netty, Akka |
-ZeroMQ, Netty |
-
Apache Hive es una infraestructura de almacenamiento de datos construida sobre Apache Hadoop para proporcionar resúmenes de datos, consultas ad-hoc y análisis de grandes conjuntos de datos.
Apache Hive es una infraestructura de almacenamiento de datos (data warehouse) construida sobre Apache Hadoop para proporcionar resúmenes de datos, consultas ad-hoc y análisis de grandes conjuntos de datos.
Los analistas de datos usan Hive para consultar, resumir, explorar y analizar esos datos, y luego convertirlos en información empresarial procesable.
Fuente: https://hive.apache.org/.
Ofrece soporte de autenticación mediante kerberos y se integra con Apache Ranger y Apache Atlas para seguridad y observability.
Compactación de datos out-of-the-box y soporte para tablas de Apache Iceberg.
Incluye LLAP (Low Latency Analytical Processing), un planificador de consultas y costes utilizando Apache Calcite https://cwiki.apache.org/confluence/display/Hive/Cost-based+optimization+in+Hive y replicación.
Incluye LLAP (Low Latency Analytical Processing), un planificador de consultas y costes utilizando Apache Calcite https://calcite.apache.org/ y replicación: https://cwiki.apache.org/confluence/display/Hive/Cost-based+optimization+in+Hive.
Se puede descargar el libro Trino: The Definitive Guide, 2nd Edition (los autores son los creadores de Trino) registrándose en https://www.starburst.io/info/oreilly-trino-guide/.
Tecnología de gestión de clústeres en Hadoop de segunda generación.
La idea de YARN es dividir las funcionalidades de gestión de recursos y programación/supervisión de trabajos en servicios separados: un ResourceManager (RM) global y un ApplicationMaster (AM) por aplicación.
Una aplicación es un solo trabajo o un DAG de trabajos.
El ResourceManager y el NodeManager forman el framework de cálculo de datos.
El ResourceManager arbitra los recursos entre todas las aplicaciones del sistema.
El NodeManager es el agente del framework por máquina que es responsable de los contenedores, monitorea el uso de sus recursos (cpu, memoria, disco, red) e informa al ResourceManager/Scheduler.
Hue es un asistente open source de SQL para bases de datos y data warehouses.
Provee un editor de código SQL con componentes y autocompletado que permite conectarse a cualquier base de datos.
+Fuente: https://gethue.com/.
La aplicación ApplicationMaster es en efecto una biblioteca específica del framework y tiene la tarea de negociar recursos del ResourceManager y trabajar con el/los NodeManager(s) para ejecutar y monitorear las tareas.
Vertica es un almacén de datos (data warehouse) de análisis unificado.
Ha sido diseñado para ofrecer velocidad, escalabilidad y aprendizaje automático integrado para cargas de trabajo analíticamente intensivas.
-Extraído de https://www.vertica.com/landing-page/start-your-free-trial-today/.
Apache Doris es un moderno data warehouse open source para analíticas en tiempo real.
Puede ser utilizado para realizar informes de análisis, consultas ad-hoc, unificar almacenes de datos o acelerar consultas a lagos de datos.
Permite construir aplicaciones para análisis del comportamiento del usuario, A/B testing, log analysis, análisis de perfiles de usuario, o de pedidos de ventas.
Fuente: https://doris.apache.org/.
Hue es un asistente open source de SQL para bases de datos y data warehouses.
Provee un editor de código SQL con componentes y autocompletado que permite conectarse a cualquier base de datos.
+Apache Druid es una base de datos diseñada para análisis en tiempo real (consultas OLAP) en grandes conjuntos de datos.
Se especializa en casos de uso donde la ingesta de datos en tiempo real, un desempeño veloz en las consultas y una disponibulidad alta son importantes.
Fuente: https://druid.apache.org/.
Apache Kylin es un almacén de datos analíticos distribuido de código abierto para Big Data.
Diseñado para proporcionar capacidad OLAP (procesamiento analítico en línea) para Big Data.
Al renovar el cubo multidimensional y la tecnología de precálculo en Hadoop y Spark, Kylin puede lograr una velocidad de consulta casi constante independientemente del volumen de datos en constante crecimiento.
Al reducir la latencia de las consultas de minutos a menos de un segundo, Kylin devuelve la analítica en línea a los grandes datos.
Fuente: https://kylin.apache.org/.
Apache Pinot es una plataforma de código abierto de analítica en tiempo real ideal para obtener información ultrarrápida, escalabilidad sin esfuerzo y decisiones rentables basadas en datos.
Fuente: https://pinot.apache.org/.
Vertica es un almacén de datos (data warehouse) de análisis unificado.
Ha sido diseñado para ofrecer velocidad, escalabilidad y aprendizaje automático integrado para cargas de trabajo analíticamente intensivas.
Fuente: https://gethue.com/.
Extraído de https://www.vertica.com/landing-page/start-your-free-trial-today/.
La fase de visualización o presentación es donde los usuarios pueden sentir el VALOR de los DATOS.
La visualización de hallazgos ayuda a tomar mejores decisiones de negocios.
Fuente: https://www.elastic.co/logstash.
Cuenta además con herramientas para la línea de comandos:
elasticsearch-certgen
-elasticsearch-certutil
-elasticsearch-croneval
-elasticsearch-keystore
-elasticsearch-migrate
-
---------------------------------------------------------------------------
-NameError Traceback (most recent call last)
-Cell In [1], line 1
-----> 1 elasticsearch-certgen
- 2 elasticsearch-certutil
- 3 elasticsearch-croneval
-
-NameError: name 'elasticsearch' is not defined
-
elasticsearch-node
-elasticsearch-saml-metadata
-elasticsearch-setup-passwords
-elasticsearch-shard
-elasticsearch-syskeygen
-elasticsearch-users
-
Un documento en Kibana se compone de campos con valores:
# Un documento puede contener varios campos con valores
-{
- "name" : "Elastic",
- ...
- <field> : <value>
-}
-
Fuente: (assets.contentstack.io) [https://assets.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt56ad3f4e2c755f29/5d37c1602a506857d64eff48/es_commands.txt].
Otras herramientas de modelización y visualización de datos son las proporcionadas por Salesforce, Google y Microsoft.
Otras herramientas de modelización y visualización de datos son las proporcionadas por Salesforce, Amazon, Google y Microsoft.
Salesforce adquirió Tableau y google hizo lo mismo con Looker en 2019.
La reciente integración entre estos productos le permitirán al usuario modelar datos con LookML y usar Tableau, o Looker para explorar ese modelo.
Amazon ofrece Amazon QuickSight, una herramienta de inteligencia empresarial unificada a hiperescala.
Fuente: https://aws.amazon.com/es/quicksight/.## Apache Superset
Apache Superset es una moderna plataforma de exploración de datos y visualización.
Documentación: https://superset.apache.org/docs/intro.
Sus características principales son:
Más de 40+ visualizaciones pre-instaladas.
Soporte para drag-and-drop y consultas SQL.
Uso de cache para datos que acelera la carga de informes y gráficos.
Plantillas Jinja para crear dashboards interactivos.
Plantillas CSS para personalizar gráficos e informes.
Capa semántica de transformaciones con el lenguaje SQL.
Filtros avanzados para análisis de datos más profundos.
Acceso a nuevas funcionalidades mediante feature flags.
Fuente https://superset.apache.org/.## Apache Superset
Apache Superset es una moderna plataforma de exploración de datos y visualización.
Documentación: https://superset.apache.org/docs/intro.
Sus características principales son:
Más de 40+ visualizaciones pre-instaladas.
Soporte para drag-and-drop y consultas SQL.
Uso de cache para datos que acelera la carga de informes y gráficos.
Plantillas Jinja para crear dashboards interactivos.
Plantillas CSS para personalizar gráficos e informes.
Capa semántica de transformaciones con el lenguaje SQL.
Filtros avanzados para análisis de datos más profundos.
Acceso a nuevas funcionalidades mediante feature flags.
Fuente https://superset.apache.org/.## Apache Superset
Apache Superset es una moderna plataforma de exploración de datos y visualización.
Documentación: https://superset.apache.org/docs/intro.
Sus características principales son:
Más de 40+ visualizaciones pre-instaladas.
Soporte para drag-and-drop y consultas SQL.
Uso de cache para datos que acelera la carga de informes y gráficos.
Plantillas Jinja para crear dashboards interactivos.
Plantillas CSS para personalizar gráficos e informes.
Capa semántica de transformaciones con el lenguaje SQL.
Filtros avanzados para análisis de datos más profundos.
Acceso a nuevas funcionalidades mediante feature flags.
Fuente https://superset.apache.org/.## Apache Superset
Apache Superset es una moderna plataforma de exploración de datos y visualización.
Documentación: https://superset.apache.org/docs/intro.
Sus características principales son:
Más de 40+ visualizaciones pre-instaladas.
Soporte para drag-and-drop y consultas SQL.
Uso de cache para datos que acelera la carga de informes y gráficos.
Plantillas Jinja para crear dashboards interactivos.
Plantillas CSS para personalizar gráficos e informes.
Capa semántica de transformaciones con el lenguaje SQL.
Filtros avanzados para análisis de datos más profundos.
Acceso a nuevas funcionalidades mediante feature flags.
Fuente https://superset.apache.org/.## Apache Superset
Apache Superset es una moderna plataforma de exploración de datos y visualización.
Documentación: https://superset.apache.org/docs/intro.
Sus características principales son:
Más de 40+ visualizaciones pre-instaladas.
Soporte para drag-and-drop y consultas SQL.
Uso de cache para datos que acelera la carga de informes y gráficos.
Plantillas Jinja para crear dashboards interactivos.
Plantillas CSS para personalizar gráficos e informes.
Capa semántica de transformaciones con el lenguaje SQL.
Filtros avanzados para análisis de datos más profundos.
Acceso a nuevas funcionalidades mediante feature flags.
Fuente https://superset.apache.org/.## Apache Superset
Apache Superset es una moderna plataforma de exploración de datos y visualización.
Documentación: https://superset.apache.org/docs/intro.
Sus características principales son:
Más de 40+ visualizaciones pre-instaladas.
Soporte para drag-and-drop y consultas SQL.
Uso de cache para datos que acelera la carga de informes y gráficos.
Plantillas Jinja para crear dashboards interactivos.
Plantillas CSS para personalizar gráficos e informes.
Capa semántica de transformaciones con el lenguaje SQL.
Filtros avanzados para análisis de datos más profundos.
Acceso a nuevas funcionalidades mediante feature flags.
Fuente https://superset.apache.org/.## Apache Superset
Apache Superset es una moderna plataforma de exploración de datos y visualización.
Documentación: https://superset.apache.org/docs/intro.
Sus características principales son:
Más de 40+ visualizaciones pre-instaladas.
Soporte para drag-and-drop y consultas SQL.
Uso de cache para datos que acelera la carga de informes y gráficos.
Plantillas Jinja para crear dashboards interactivos.
Plantillas CSS para personalizar gráficos e informes.
Capa semántica de transformaciones con el lenguaje SQL.
Filtros avanzados para análisis de datos más profundos.
Acceso a nuevas funcionalidades mediante feature flags.
Fuente https://superset.apache.org/.
Google Looker conecta, analiza, y visualiza datos en ambientes multicloud.
Looker puede facilitar la creación de una plataforma de exploración de datos que facilite el acceso a datos de una manera significativa e intuitiva para la organización.
Looker puede facilitar la creación de una plataforma de exploración de datos que facilite el acceso a datos de una manera significativa e intuitiva para la organización.
+Fuente: https://looker.com/google-cloud.
Microsoft cuenta por su parte con PowerBI.
PowerBI se conecta a las fuentes de datos, los modela y presenta en paneles con facilidad.
Una vez conectada la base de datos, se utiliza la shell MongoSH localizada en la parte inferior de la pantalla para crear una base de datos:
use gettingStarted
-
Cell In [1], line 1
- use gettingStarted
- ^
-SyntaxError: invalid syntax
-
Inserir un documento en la base de datos:
db.people.insertOne({
- name: { first: 'Alan', last: 'Turing' },
- birth: new Date('Jun 23, 1912'),
- death: new Date('Jun 07, 1954'),
- contribs: [ 'Turing machine', 'Turing test', 'Turingery' ],
- views : Long(1250000)
-})
-
Verificar si está todo correcto:
db.people.find({ "name.last": "Turing" })
-
Crear una nueva base de datos llamada “inventario”:
use inventario
-
Ingresar datos en la base de datos:
db.inventario.insertMany([
- { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
- { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
- { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
- { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
- { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
-]);
-
Seleccionar todos los documentos en “inventario”:
db.inventario.find( {} )
-
Esta orden es similar a la utilizada en SQL: SELECT * FROM inventario
Seleccionar todos los documentos donde la clave “status” es igual a “D”:
db.inventario.find( { status: "D" } )
-
SELECT * FROM inventario WHERE status = "D"
-
Mostrar todos los documents de “inventario” donde “status” es igual a “A” o “D”:
db.inventario.find( { status: { $in: [ "A", "D" ] } } )
-
SELECT * FROM inventario WHERE status in ("A", "D")
-
Recuperar todos los documentos de “inventario” donde “status” es igual a “A” y “qty” es menor que ($lt) 30:
db.inventario.find( { status: "A", qty: { $lt: 30 } } )
-
SELECT * FROM inventario WHERE status = "A" AND qty < 30
-
Recuperar todos los documentos de “inventario” donde “status” es igual a “A” o “qty” es menor que ($lt) 30:
db.inventario.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } )
-
SELECT * FROM inventario WHERE status = "A" OR qty < 30
-
Recuperar todos los documentos de “inventario” donde “status” es igual a “A” y/o “qty” es menor que ($lt) 30, o item comienza con la letra p:
db.inventario.find( {
- status: "A",
- $or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]
-} )
-
SELECT * FROM inventario WHERE status = "A" AND ( qty < 30 OR item LIKE "p%")
-
Monitoramento del tránsito automotor utilizando IoT, Kafka y Spark Streaming.
https://www.infoq.com/articles/traffic-data-monitoring-iot-kafka-and-spark-streaming/.
Una vez instalado Apache Hadoop se deberán abrir los puertos del servidor para los distintos servicios web del framework.
sudo ufw allow 8042, 8088, 8188, 19888, 9780, 9868, 9864, 10002 proto tcp
-
Cell In [1], line 1
- sudo ufw allow 8042, 8088, 8188, 19888, 9780, 9868, 9864, 10002 proto tcp
- ^
-SyntaxError: invalid syntax
-
Mostrar el estado de los servicios
sudo /opt/bitnami/ctlscript.sh status
-
Iniciar un servicio
sudo /opt/bitnami/ctlscript.sh start
-
Reiniciar un servicio
sudo /opt/bitnami/ctlscript.sh restart apache
-
Detener todos los servicios
sudo /opt/bitnami/ctlscript.sh stop
-
hadoop jar /opt/bitnami/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 10 100
-
Ejecutar una tarea con mapreduce involucrando a HDFS
Este ejemplo cuenta la cantidad de palabras y letras c que aparecen en el texto
echo "A Cuesta le cuesta subir la cuesta y en medio de la cuesta va y se acuesta." | \
-hadoop fs -put - /tmp/hdfs-ejemplo-input
-
hadoop jar /opt/bitnami/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar \
-grep /tmp/hdfs-ejemplo-input /tmp/hdfs-ejemplo-output 'c*'
-
hadoop fs -cat /tmp/hdfs-ejemplo-output/part-r-00000
-
Para conectarse a Hive a través de un túnel SSH:
beeline -u jdbc:hive2://localhost:10000 -n hadoop
-
Acceder a la información básica
help
-
Crear una base de datos
show databases;
-show tables;
-
CREATE DATABASE basededatos; # También se puede usar la orden CREATE SCHEMA
-
También se puede utilizar JDBC para crear una base de datos.
El script se guarda en un fichero llamado HiveCreateDb.java con el siguiente código:
import java.sql.SQLException;
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.Statement;
-import java.sql.DriverManager;
-
-public class HiveCreateDb {
- private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
-
- public static void main(String[] args) throws SQLException {
- // Register driver and create driver instance
-
- Class.forName(driverName);
- // get connection
-
- Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/default", "", "");
- Statement stmt = con.createStatement();
-
- stmt.executeQuery("CREATE DATABASE basededatos");
- System.out.println(“Base de datos creada exitosamente.”);
-
- con.close();
- }
-}
-
Para compilar y ejecutar el programa:
javac HiveCreateDb.java
-java HiveCreateDb
-
Documentación: https://cwiki.apache.org/confluence/display/Hive/GettingStarted
Abrir el puerto 4040
sudo ufw allow 4040
-
Crear el fichero a analizar
vim entrada.txt
-
Entrar a la shell de spark
spark-shell
-
:help
-
Crear el RDD para el fichero entrada.txt
val inputfile = sc.textFile("entrada.txt")
-
Contar las palabras:
val counts = inputfile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_+_);
-
Mostrar para tareas de debugging el RDD
counts.toDebugString
-
Guardar en memoria
counts.cache()
-
Guardar la salida en un fichero
val outputfile = sc.textFile("salida.txt")
-
Almacenamiento no persistente de RDD
counts.unpersist()
-
Fuentes:
Una vez instalado Apache Kafka se deberán abrir los puertos del servidor para los distintos servicios del framework.
Puerto 9092 para Kafka y puerto 2181 para Zookeeper.
sudo ufw allow 9092
-
Cell In [1], line 1
- sudo ufw allow 9092
- ^
-SyntaxError: invalid syntax
-
sudo ufw allow 2081
-
Mostrar el estado de los servicios
sudo /opt/bitnami/ctlscript.sh status
-
Iniciar un servicio
sudo /opt/bitnami/ctlscript.sh start
-
Reiniciar un servicio
sudo /opt/bitnami/ctlscript.sh restart apache
-
Detener todos los servicios
sudo /opt/bitnami/ctlscript.sh stop
-
export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/bitnami/kafka/config/kafka_jaas.conf"
-
Crear un nuevo tópico con una única partición y una única réplica.
/opt/bitnami/kafka/bin/kafka-topics.sh --create --zookeeper \
-SERVER-IP:2181 --replication-factor 1 --partitions 1 --topic test
-
Crear un nuevo productor y generar el mensaje para el tópico.
/opt/bitnami/kafka/bin/kafka-console-producer.sh --broker-list \
-SERVER-IP:9092 --producer.config /opt/bitnami/kafka/config/producer.properties --topic test
-
Este es mi primer mensaje
- ... y este es el segundo
-
Recuperar y presentar los mensajes.
/opt/bitnami/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 \
---topic test --consumer.config /opt/bitnami/kafka/config/consumer.properties --from-beginning
-
Fuentes:
El proceso KDD (knowledge discovery in databases) o descubrimiento de conocimiento en bases de datos sirve para extraer conocimiento de los datos en el contexto de grandes bases de datos.
Es utilizado por los investigadores para aprendizaje automático, reconocimiento de patrones en bases de datos, estadísticas, inteligencia artificial, adquisición de conocimiento para sistemas expertos, y visualización de datos.
En este contexto, emplea métodos de minería de datos para extraer lo que se considera conocimiento mediante preprocesamiento, submuestreo y las transformaciones necesarias en los datos.
El proceso KDD puede envolver la repetición de los siguientes pasos:
Desarrollar el conocimiento del dominio de la aplicación, los conocimientos previos, y el objetivo del usuario final.
Establecer un conjunto de datos o un subconjunto de variables, o datos de ejemplo donde el descubrimiento va a ser realizado.
Limpiar outliers, gestionar campos vacíos, eliminar datos innecesarios, etc.
Utilizar métodos de reducción de dimensionalidad o transformación para reducir el número de variables o para encontrar representaciones invariantes de los datos.
Decidir la tarea de minería de daatos a realizar: clasificación, regresión, clustering, etc.
Seleccionar el algoritmo de minería de datos (modelos y parámetros, métodos).
Realizar la minería de datos buscando patrones de interés.
Interpretar los patrones obtenidos.
Consolidad el conocimiento adquirido.
La minería de datos (data mining) nació a finales de los años ‘90 cuando las grandes organizaciones ya contaban con una sustancial cantidad de datos.
También llamada exploración de datos (knowledge discovery in databases - KDD) es un campo de la estadística y las ciencias de la computación.
El objetivo de la minería de datos es descubrir patrones en grandes volúmenes de conjuntos de datos (big data).
El objetivo de la minería de datos es descubrir patrones en grandes volúmenes de conjuntos de datos (Big Data).
Se podría también definir data mining como la aplicación de algoritmos específicos para extraer patrones de los datos (NIST [CG19]. Pág.26.
La minería de datos no solamente necesita conocimientos de estadística y matemática sino además saber como los datos fueron producidos y de que manera se pueden utilizar.
El modelo SEMMA (Sample,Explore, Modify, Model, Assess) fue desarrollado por la empresa SAS para tareas de datamining y consta de cinco pasos:
Sample: identifica, combina, particiona, y obtiene muestras de conjuntos de datos, entre otras tareas.
Explore: Explora los conjuntos de datos de forma estadística y gráfica; graficando los datos, onteniendo estadísticas descriptivas, identificando variables importantes y realizando análisis de asociación.
Modify: Prepara los datos para el análisis; creando variables adicionales, transformando variables existentes, identificando outliers, reemplazando valores inexistentes, desempeñando cluster analysis, y analizando datos con SOMs (self-organizing maps) o redes Kohonen.
Model: Ajusta un modelo predictivo a una variable objetivo. Entre los modelos disponibles se encuentran los árboles de decisión, redes neuronales, least angle regressions, support vector machines, regresión lineal, y regresiones logísticas.
Assess: Compara los modelos predictivos que compiten entre sí y generan gráficos que representan el porcentaje de encuestados, el porcentaje de respondents captures, el aumento y las ganancias.