Big Data stacks y Machine Learning#
Big data stacks#
Teniendo en cuenta las numerosas opciones que existen en el mercado para implantar una solución de Big data en la organización, se enumeran a continuación tres arquitecturas que contemplan los procesos de ingestión de datos, almacenamiento, tratamiento y análisis de datos, y presentación.
Apache Hadoop Stack#
La biblioteca de software Apache Hadoop es un framework para el procesamiento distribuido de grandes conjuntos de datos en grupos de computadoras.
Fuente: https://hadoop.apache.org/.
Ingestión de datos: Apache Flume, Apache Nifi.
Mensajería: Apache Kafka.
Almacenamiento:
Gestión de recursos: Apache Hadoop YARN.
Sistema de ficheros: HDFS.
Datalakes/Datawarehouses: Apache Hudi, Apache Iceberg, Apache XTable.
Bases de datos: Apache Cassandra, Apache HBase.
Análisis y tratamiento de los datos: Apache Hadoop MapReduce, Apache Spark, Apache Flink.
SQL: Apache Hive, Apache Pig.
ML: Apache Mahout, Apache Spark MLLib.
Orquestación: Apache Zookeeper, Apache Airflow.
Presentación: Apache Superset, Kibana.
Gestión:
Seguridad: Apache Zookeeper.
Gobernanza: Apache Atlas.
BDAS - Berkeley Data Analytics Stack#
BDAS (Berkeley Data Analytics Stack) es un stack de software open source que integra componentes creados por el AMPLab para Big Data, entre ellos, el framework Apache Spark.
Ingestión de datos: Apache Flume, Apache Nifi.
Mensajería: Apache Kafka.
Almacenamiento:
Gestión de recursos: Apache Mesos, Apache Hadoop YARN.
Sistema de ficheros: HDFS.
Almacenamiento: Alluxio, S3, Ceph.
Bases de datos: Apache Cassandra, Apache HBase.
Análisis y tratamiento de los datos: Apache Spark.
ML: Apache Spark MLLib.
Orquestación: Apache Zookeeper, Apache Airflow.
Presentación: Google Looker, Microsoft Power BI, Tableau.
Gestión:
Seguridad: Apache Zookeeeper.
Gobernanza: Apache Atlas.
Big data stack alternativo#
Este es un ejemplo de un stack basado en un artículo de la empresa dbt.
Ingestión de datos: Fivetran, Stitch.
Almacenamiento:
Gestión de recursos: Kubernetes.
Sistema de ficheros: Compatible con Hadoop: Ceph, Minio.
Datalakes/Datawarehouses: Snowflake, Databricks, Bigquery, Redshift.
Análisis y tratamiento de los datos: dbt.
Presentación: Looker, Mode, Periscope.
Cloudera#
Cloudera es una empresa de software que provee una plataforma de Big Data para análisis de datos, ML e inteligencia artificial.
La plataforma CDP (Cloudera Data Platform) está basada en Apache Hadoop e integra las aplicaciones más populares de ese ecosistema en una única solución que se puede instalar on premises o en la nube (Amazon, Azure, Google Cloud).
Los fundadores de Cloudera fueron de los primeros desarrolladores de Hadoop que ofrecieron una solución comercial basada en este software.
Sitio web: https://www.cloudera.com/.
Tutoriales y documentación: https://www.cloudera.com/services-and-support/tutorials.html.
Big data cloud#
En esta comparación de productos para big data y análisis se presentan las soluciones que ofrecen los tres grandes actores del mundo de servicios cloud computing.
Ingestión de datos: Amazon Kinesis/Glue, Azure Synapse Analytics, Google Dataflow.
Almacenamiento:
AWS Simple Storage Service (S3), Azure Blob Storage, Google Cloud Storage.
Datalakes/Datawarehouses:
Amazon Redshift, Azure SQL Data Warehouse (SQL DW), Google BigQuery.
Bases de datos:
Amazon Relational Database Service, Azure SQL Database, Google Cloud SQL.
Análisis y tratamiento de los datos:
Amazon Kinesis, Azure Synapse Analytics, Google Cloud Smart Analytics Platform.
ML: Amazon SageMaker, Azure Machine Learning, Google Cloud Machine Learning Engine.
Presentación:
Amazon OpenSearch, Microsoft Power BI, Google Looker.
Amazon EMR es un servicio gestionado que permite procesar y analizar datos utilizando herramientas y frameworks como Apache Hadoop, Spark, HBase, y Presto.
Azure HDInsight es una solución completa de Apache Hadoop, Spark, R Server, HBase y Storm en la nube.
Google Dataproc es un servicio totalmente gestionado y escalable que permite ejecutar Apache Spark, Apache Flink, y más de 30 herramientas y frameworks de código abierto.
Enlaces:
Arquitectura Big data en Amazon
Modern Data Analytics Reference Architecture on AWS.
Ejemplo Azure
Análisis de un extremo a otro con Azure Synapse.
Ejemplo Google
How Renault solved scaling and cost challenges on its Industrial Data platform using BigQuery and Dataflow.
Infraestructura de prueba de Big Data (BDTI)#
La Infraestructura de prueba de Big Data (BDTI) es un stack analítico realizado con software libre y de fuente abierta gratuito listo para usar que se ofrece a todas las administraciones públicas europeas para experimentar con herramientas de código abierto y fomentar la reutilización de datos del sector público.
Ofrece además un curso también gratuito y recursos para poder aprender a implementar soluciones de Big Data en todas las administraciones europeas.
La oferta de servicios de BDTI está organizada en las siguientes categorías:
Bases de datos (PostgreSQL, MongoDB, Virtuoso).
Lago de datos (MinIO).
Entornos de desarrollo (JupyterLab, Rstudio, KNIME, H20).
Procesamiento avanzado (Apache Spark, Elasticsearch, Kibana).
Visualización (Apache Superset, Metabase).
Orquestación (Apache Airflow, MageAI).
Machine Learning#
Si bien se viene estudiando la forma de hacer que las máquinas puedan aprender por si solas desde 1970 aproximadamente, no fue hasta 1983 cuando se publicó Machine learning: The AI Apprioach, que la disciplina de Machine learning tomó el impulso luego sistematizado en el libro de T. Mitchell Machine Learning (1997).
Fuente: [Kub17]
TensorFlow#
El aprendizaje automático es la práctica de ayudar al software a realizar una tarea sin programación o reglas explícitas.
En la programación tradicional de computadoras, un programador especifica las reglas que debe usar la computadora.
Extraído de TensorFlow: https://www.tensorflow.org/about.
Sin embargo, ML requiere una mentalidad diferente.
El aprendizaje automático del mundo real se centra mucho más en el análisis de datos que en la codificación.
Los programadores proporcionan un conjunto de ejemplos y la computadora aprende patrones a partir de los datos.
Se puede entender el aprendizaje automático como “programación con datos”.
Pasos en ML#
Paso 1: recopilar datos.
Paso 2: Explorar los datos.
Paso 2.5: Eligir un modelo.
Paso 3: Preparar los datos.
Paso 4: construir, entrenar y evaluar el modelo.
Paso 5: Sintonizar los hiperparámetros.
Paso 6: Implementar el modelo.
Extraído de Maching Learning:
https://developers.google.com/machine-learning/guides/text-classification/.
Redes neuronales#
Es un tipo de modelo que se puede entrenar para reconocer patrones.
Está compuesto por capas, incluidas las de entrada y salida, y al menos una capa oculta.
Las neuronas de cada capa aprenden representaciones cada vez más abstractas de los datos.
Extraído de TensorFlow: https://www.tensorflow.org/about.
Entrenar una red neuronal#
Las redes neuronales se entrenan por descenso de gradiente.
Los pesos en cada capa comienzan con valores aleatorios, y estos se mejoran iterativamente con el tiempo para hacer que la red sea más precisa.
Se usa una función de pérdida para cuantificar qué tan imprecisa es la red, y se usa un procedimiento llamado retropropagación para determinar si se debe aumentar o disminuir cada peso para reducir la pérdida.
Apache MLlib#
MLlib es la biblioteca escalable de aprendizaje automático (ML) de Apache Spark.
Su objetivo es hacer que el aprendizaje automático práctico sea escalable y fácil.
Fuente: https://spark.apache.org/mllib/.
Las utilidades de flujo de trabajo de ML incluyen:
Algoritmos de ML: algoritmos de aprendizaje comunes como clasificación, regresión, agrupamiento y filtrado colaborativo.
Caracterización: extracción de características, transformación, reducción de dimensionalidad y selección.
Canalizaciones:
Incluye herramientas para construir, evaluar y ajustar canalizaciones de ML.
Persistencia:
Guarda y carga algoritmos, modelos y Pipelines.
Utilidades:
Disponibles para álgebra lineal, estadística, manejo de datos, etc.
Lenguajes soportados por MLlib#
MLlib utiliza las API de Spark e interactúa con NumPy en las bibliotecas de Python y R.
Puede usar cualquier fuente de datos de Hadoop (por ejemplo, HDFS, HBase o archivos locales), lo que facilita la conexión a los flujos de trabajo de Hadoop.
Desempeño de MLlib#
Algoritmos de alta calidad, 100 veces más rápidos que MapReduce.
Spark sobresale en el cálculo iterativo, lo que permite que MLlib se ejecute rápidamente.
MLlib contiene algoritmos de alta calidad que aprovechan la iteración y pueden generar mejores resultados que las aproximaciones de un solo paso que a veces se usan en MapReduce.
Se puede ejecutar Spark con su modo de clúster independiente, en EC2, en Hadoop YARN, en Mesos o en Kubernetes.
Acceso a datos en HDFS, Apache Cassandra, Apache HBase, Apache Hive y cientos de otras fuentes de datos.
Estadísticas en MLlib#
Correlación:
Los métodos admitidos actualmente son la correlación de Pearson y Spearman.
Prueba de hipótesis:
spark.ml actualmente es compatible con las pruebas de independencia chi-cuadrado (Chi-squared - χ2) de Pearson.
Resumidor (summarizer):
Proporciona estadísticas de resumen de columnas vectoriales para el dataframe a través de Summarizer.
Las métricas disponibles son el máximo, el mínimo, la media, la suma, la varianza, la desviación estándar y la cantidad de valores distintos de cero por columna, así como el recuento total.
Estadísticas: correlación#
La correlación calcula la matriz de correlación para el conjunto de datos de vectores de entrada utilizando el método especificado.
La salida será un dataframe que contiene la matriz de correlación de la columna de vectores.
# Ejemplo de correlación en Python
# Fuente:
# https://spark.apache.org/docs/latest/ml-statistics.html
from pyspark.ml.linalg import Vectors
from pyspark.ml.stat import Correlation
data = [(Vectors.sparse(4, [(0, 1.0), (3, -2.0)]),),
(Vectors.dense([4.0, 5.0, 0.0, 3.0]),),
(Vectors.dense([6.0, 7.0, 0.0, 8.0]),),
(Vectors.sparse(4, [(0, 9.0), (3, 1.0)]),)]
df = spark.createDataFrame(data, ["features"])
r1 = Correlation.corr(df, "features").head()
print("Pearson correlation matrix:\n" + str(r1[0]))
r2 = Correlation.corr(df, "features", "spearman").head()
print("Spearman correlation matrix:\n" + str(r2[0]))
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
Cell In [1], line 5
1 # Ejemplo de correlación en Python
2 # Fuente:
3 # https://spark.apache.org/docs/latest/ml-statistics.html
----> 5 from pyspark.ml.linalg import Vectors
6 from pyspark.ml.stat import Correlation
8 data = [(Vectors.sparse(4, [(0, 1.0), (3, -2.0)]),),
9 (Vectors.dense([4.0, 5.0, 0.0, 3.0]),),
10 (Vectors.dense([6.0, 7.0, 0.0, 8.0]),),
11 (Vectors.sparse(4, [(0, 9.0), (3, 1.0)]),)]
ModuleNotFoundError: No module named 'pyspark'
El código fuente del ejemplo completo se encuentra en examples/src/main/python/ml/correlation_example.py en el repositorio de Spark.
Tácticas adversarias en ML#
Adversarial Machine Learning Threat Matrix es un framework abierto centrado en la industria que ayuda a los analistas de seguridad a detectar, responder y remediar amenazas contra sistemas de ML.
Recientemente este framework se ha ampliado conviertiéndose en MITRE ATLAS, Adversarial Threat Landscape for Artificial-Intelligence Systems.
MITRE ATLAS, Adversarial Threat Landscape for Artificial-Intelligence Systems, es una base de conocimiento de tácticas adversarias, técnicas y estudios de casos para sistemas de aprendizaje automático (ML) basados en observaciones del mundo real, demostraciones de equipos rojos y grupos de seguridad de ML, y el estado de lo posible a partir de la investigación académica.
ATLAS sigue el modelo del marco MITRE ATT&CK® y sus tácticas y técnicas son complementarias a las de ATT&CK.
Extraído de: https://atlas.mitre.org/.
Estas tácticas adversarias pueden ser:
Hacer que el sistema ML aprenda algo incorrecto (envenenamiento de datos),
Hacer algo incorrecto (ataques de evasión), o
Revelar lo incorrecto (inversión del modelo).
Extraído de: SEI.
Repositorio Github:
Caldera + Atlas#
Caldera + Atlas es una solución que une varios proyectos y los plugins de MITRE ATLAS™ en la imagen de Docker MITRE CALDERA™.
Esta solución facilita la emulación de adversarios y red-teaming en sistemas de machine learning - ML.
Provee además muestras de servicios y ambientes de ML para testing.
Sus componentes son:
CALDERA: una plataforma de ciberseguridad diseñada para automatizar facilmente la emulación de adversarios, asistencia a red teams, manuales y automatización de respuesta a incidentes.
MITRE ATLAS (The Adversarial Threat Landscape for AI Systems): la base de datos de conocimiento sobre tácticas, técnicas y procedimientos del adversario dirigidos a sistemas de aprendizaje automático - ML.
ATLAS CALDERA Plugins:
Almanac: Agrega el ATLAS Navigator a CALDERA.
Arsenal: Implementa las técnicas de ATLAS en CALDERA y provee muestras de adversarios de CALDERA que apuntan a sistemas ML.
ML-Vulhub: Colección de scripts para instanciar servicios y modelar ambientes ML.
Fuente: mitre-atlas/caldera-atlas.