Para quien está llegando ahora o aún no ha tenido oportunidad de conocer las motivaciones y herramientas más comunes utilizadas en este mundo del Big Data, voy a intentar dar aquí una visión general. La verdad es que son tantas herramientas que incluso resulta difícil distinguirlas de los pokemons. ¡¡Es en serio!! Después de leer este material, haga la prueba Pokemon o Big Data.

Big Data es un término bastante utilizado en la actualidad y vinculado directamente al volumen de datos a ser procesado y analizado (algunas definiciones se pueden encontrar en este otro artículo: Qué es Big Data). Para el procesamiento y análisis de estos datos recurrimos a la ciencia de datos.

Data Science

Data Science (Ciencia de datos) es una práctica que involucra métodos científicos, procesos y sistemas para extraer conocimiento o insights tanto de datos estructurados como de los no estructurados. Es un concepto que unifica estadística, análisis de datos y métodos relacionados con la finalidad de entender y analizar fenómenos a través de sus datos. Este concepto emplea técnicas y teorías de diversas áreas de conocimiento de la matemática, estadística y ciencia de la computación (más específicamente de subdominios de aprendizaje de máquina, clasificación, clusterización, minería de datos y visualización).

Además de conocimientos matemáticos, data science también exige conocimientos en herramientas para análisis de datos y de programación. Entre las herramientas para realizar estos análisis están el famoso SPSS (adquirido por IBM en 2009), R/RStudio, Jupyter y Zeppelin, entre otras. En el campo de la programación, está el conocido lenguaje Java, Scala y Clojure, que utilizan la JVM para su ejecución. El lenguaje Python también es muy útil ya que es flexible y permite agilidad en el desenvolvimiento. Los lenguajes Java, Scala y Python pueden utilizarse con Spark, un framework para procesamiento de datos a gran escala. Muchas de las herramientas pueden emplearse gratuitamente, y se instalan con facilidad en sistemas operativos Linux.

Después del análisis es necesario demostrar resultados a través de informes, gráficos, dashboards y/o modelos generados.

Con estas simples explicaciones podemos percibir que Data Science requiere un cierto equipaje de conocimientos diversos.

Al tratar con Big Data ya surgen dos desafíos: capacidad de almacenamiento y velocidad de procesamiento. Ambos conducen a una limitación computacional en la que la velocidad de I/O (grabación y lectura) de discos no acompañó la evolución de los procesadores, e incluso al mejor procesador ya le resulta difícil el solo dar flujo a grandes cantidades de información. Estos dos desafíos pueden ser resueltos utilizando una arquitectura donde los datos estén distribuidos y próximos a unidades de procesamiento (la lectura de un gran archivo a partir de una máquina tarda mucho tiempo comparándose con la lectura de este mismo archivo en un entorno distribuido para ser leído por diversas máquinas).

La tecnología compatible con la arquitectura citada es el HDFS, que es un filesystem distribuido, inspirado en el GFS (Google File System) y ejecutado en nodos utilizando hardware commodity. No fue creado para ser transaccional, es decir, recibir muchas solicitudes peticiones o requisiciones de lectura y escritura, sino para realizar una sola grabación y varias lecturas. El objetivo es que los nodos con HDFS sean utilizados como RAIN (Redundante Array of Independent Nodes) para almacenar datos a ser procesados por diversos componentes del ecosistema HADOOP.

Hadoop

Hadoop es un proyecto open-source de Apache que permite el procesamiento distribuido de grandes volúmenes de datos a través de un conjunto de máquinas (cluster), usando modelos de programación simples. El proyecto está diseñado para ser escalable desde pocos servidores hasta miles de máquinas, donde cada una ofrece la posibilidad de procesar y almacenar datos. Este contiene los siguientes módulos:

  • Hadoop Common: componente base que soporta las demás herramientas.
  • HDFS (Hadoop Distributed File System): sistema de archivos distribuidos, escalable, tolerante a fallos y de bajo costo.
  • Hadoop YARN: framework para la programación de jobs y la administración de recursos en el cluster.
  • Hadoop MapReduce: sistema basado en YARN (Yet Another Resource Manager) para procesamiento paralelo.

Las distribuciones hadoop disponibles son Cloudera (que tiene el módulo de seguridad más maduro), Hortonworks y MapR, donde las herramientas más comunes del ecosistema están representadas en la  imagen siguiente:

Cada distribución tiene algunos módulos específicos como el Cloudera Manager, HUE, Impala y Sentry en la distribución Cloudera, y el Ambari, Tez, Knox y Ranger en la distribución Hortonworks.

El gráfico anterior representa la distribución Cloudera, con sus herramientas y finalidades, y en él podemos ver el YARN, que gestiona los recursos del cluster, recibiendo solicitudes y sometiéndolas a los recursos disponibles. Otra herramienta que actúa como base para los demás servicios es el Sentry, módulo de seguridad que funciona con Kerberos (base de seguridad en un cluster hadoop).                                

Entre los servicios de integración existen:

  • Sqoop: herramienta para transferencia (entrada y salida) de informaciones entre el hadoop y fuentes estructuradas, como bases de datos relacionales;
  • Flume: servicio distribuido, con arquitectura flexible basada en streaming, para recolección, agregación y movimiento de grandes cantidades de datos;
  • Kafka: plataforma distribuida de streamings, que funciona como un checkpoint de datos, para el montaje de pipelines entre sistemas o aplicaciones.

Cuando hablamos del almacenamiento de la información en el stack Cloudera, tenemos:

  • HDFS: el propio filesystem;
  • HBase: base de datos no relacional open source distribuida que funciona en conjunto con HDFS, basada en el Bigtable de Google y apropiada y que se indica para grandes volúmenes de información;
  • Kudu: base de datos relacional complementaria del HDFS y del HBase que permite un rápido acceso a los datos, reduciendo considerablemente la latencia de herramientas como el Spark e Impala.

Finalmente, para el procesamiento y análisis de datos, tenemos herramientas como:

  • Hive: herramienta con una capa de abstracción SQL que facilita la lectura, escritura y la gestión de datos en grandes datasets en HDFS;
  • MapReduce: framework que opera sobre pares (clave/valor) para procesar grandes cantidades de datos en grandes clusters, dividiendo los datos en partes que son procesadas paralelamente;
  • Impala: database analítica que consulta datos almacenados en HDFS y HBase, y emplea los mismos metadatos, sintaxis SQL y controlador ODBC utilizado para el Hive.
  • Solr: herramienta tolerante a fallas, escalable y confiable, que permite indexación de textos y búsquedas avanzadas, ofreciendo también APIs basadas en REST que permite integración con prácticamente cualquier lenguaje de programación;
  • Spark: framework para desarrollo de programas (en Scala o Python) para procesamiento paralelo distribuido a gran escala, que está formado por diversos módulos (Core, SQL, Streaming, MLlib, GraphX).

Todas estas técnicas, tecnologías y herramientas pueden ser ampliamente utilizadas en diversos mercados (financiero, telecom, seguros, gobierno, comercio y servicios) soportando diversos tipos de aplicaciones, como identificación de fraudes, clasificaciones de clientes, predicciones de consumo, búsquedas textuales y otros análisis.

Por: Marcos Takeshi, Ingeniero de Datos de Semantix