Infraestructura para Big Data
C. SOCIALES / EMPRESAS Y NEGOCIOS.
![]()
El término Big Data se empleó por primera vez en 1997 en un artículo de los investigadores de la NASA Michael Cox y David Ellsworth y se define como: “La gestión y análisis de enormes volúmenes de datos que no pueden ser tratados de manera convencional, ya que éstos superan los límites y capacidades de las herramientas de software comúnmente utilizadas para su captura, gestión y procesamiento”. De hecho involucra el uso de infraestructuras, tecnologías y servicios especiales que han sido creados para dar solución especifica al procesamiento de estos enormes conjuntos de datos provenientes de múltiples fuentes tales como archivos, redes, sensores, micrófonos, cámaras, escáneres, imágenes, videos, entre otros.
El objetivo de Big Data, al igual que los sistemas analíticos convencionales, es convertir los datos en información útil que facilite la toma de decisiones. Esto inclusive en tiempo real, para brindar más oportunidades de negocio. El poder de éste sistema radica en que permite descubrir nueva información sobre las cadenas de valor de las instituciones o empresas para abordar problemas antes irresolubles.
Algunas empresas están utilizando Big Data para entender el perfil, las necesidades y el sentir de sus clientes respecto a los productos y/o servicios que ofrecen. Esto les permite adecuar la forma en que interactúan con sus clientes y como prestan sus servicios. No obstante las predicciones son aplicables a todas las ramas del quehacer humano.
La evolución de la tecnología y los menores costos de almacenamiento han hecho posible que las aplicaciones de Big Data estén aumentando. Sin embargo, definir la infraestructura para un proyecto no es una tarea sencilla, recordemos que una plataforma tecnológica para esta actividad debe facilitar muy rápidamente la recopilación, el almacenamiento y el análisis de grandes volúmenes de datos, los cuales además pueden estar en diferentes formatos ó inclusive generándose en tiempo real, y que a diferencia de los “sistemas tradicionales” -por razones de eficiencia- la forma de tratar y analizar la información debe ser trasladada directamente a los datos sin precargarlos en memoria. Razón por la que deben considerarse sistemas distribuidos1 o basados en clústeres 2 tanto para el procesamiento como el almacenamiento de la información (Ver fig 1).

Logo tomado de: http://www.datascience.ae/Data Science Technologies JLT / Abril 11, 2016Logo tomado de: http://www.datascience.ae/Data Science Technologies JLT / Abril 11, 2016 En lo referente al software requerido para administrar los recursos de una plataforma de Big Data, debido a que estamos hablando de trabajar con arreglos de computadoras (servidores) y clústeres de almacenamiento -que deben operarse en conjunto como un solo sistema– resulta evidente que se requiere de un entorno de trabajo “Framework 3”, capaz de administrar, distribuir, controlar y procesar rápidamente los datos dentro de los arreglos de sistemas computacionales y de almacenamiento.
Hoy en día el principal framework utilizado para Big Data, es Hadoop4 cuyo desarrollo pertenece a: The Apache Software Foundation, misma que otorga el permiso para utilizar sus programas sin costo.

Figura 1. Ejemplo de Sistema Distribuido/Clúster de Datos. Piso de servidores del Google Data Center Lenoir NC USA. Fuente: https://www.youtube.com/watch?v=avP5d16wEp0&feature=youtu.be El proyecto original de Apache Hadoop incluye los siguientes módulos funcionales:
- Hadoop Distributed File System (HDFS™): Sistema distribuido y creado para trabajar con archivos de gran tamaño escrito en Java con un muy alto desempeño. Véase: http://www.happyminds.es/apache-hadoop-introduccion-a-hdfs/#sthash.2M4rIyxS.dpbs.
- Hadoop MapReduce: Sistema para escribir aplicaciones de procesamiento en paralelo para grandes cantidades de datos en sistemas de procesamiento distribuido o clústeres. Véase: http://www.tutorialspoint.com/es/hadoop/hadoop_mapreduce.htm.
- Hadoop YARN: (Yet Another Resource Negotiator). Plataforma de trabajo que permite la programación de las tareas y la gestión de los recursos de clústeres. (Es básicamente una nueva generación del software de MapReduce MRv2 para la administración de clústeres). Véase: http://searchdatacenter.techtarget.com/es/definicion/Apache-Hadoop-YARN-Yet-Another-Resource-Negotiator https://unpocodejava.wordpress.com/2013/07/25/que-es-yarn/.
- Hadoop Common: Utilerías necesarias para soportar al resto de los módulos de Hadoop. Estas proporcionan acceso a los sistemas de archivos soportados. De hecho contiene los archivos en Java (“.jar”) y los scripts necesarios para hacerlo correr. Véase: https://es.wikipedia.org/wiki/Hadoop.
Otros proyectos de la Fundación de Software Apache relacionados con Hadoop son los siguientes:
- Ambari™: Herramienta con una interfaz web que permite la administración, aprovisionamiento y monitoreo de clústeres bajo Apache Hadoop. Véase: https://unpocodejava.wordpress.com/2013/09/16/apache-ambari-haciendo-facil-operar-con-hadoop/.
- Avro™: Sistema de serialización de datos. Serializa los datos en un formato binario compacto por medio del formato JSON que facilita la comunicación entre los nodos de Hadoop. Avro permite almacenar datos y acceder a ellos fácilmente desde varios lenguajes de programación. Está diseñado para minimizar el espacio que nuestros datos ocuparán en disco. Véase http://www.datasalt.es/2011/06/avro-hadoop/.
- Cassandra™: Base de Datos NO SQL, distribuida y basada en un modelo de almacenamiento de Clave-Valor, escrita en Java. Véase https://www.adictosaltrabajo.com/tutoriales/cassandra/.
- Chukwa™: Sistema de recolección de datos para la gestión de grandes sistemas distribuidos. Permite recolectar logs (bitácoras) de grandes sistemas para su control, análisis y visualización. Véase: https://unpocodejava.wordpress.com/2012/07/17/hadoop-chuwka-procesamiento-de-logs-de-grandes-sistemas-en-hadoop/.
- HBase™: Base de datos distribuida y escalable para el almacenamiento de tablas muy grandes de información de miles de millones de filas por millones de columnas que se encuentran alojadas en sistemas distribuidos o clústeres de almacenamiento. Véase: http://www.franciscojavierpulido.com/2013/09/bigdata-hadoop-iv-hbase_17.html.
- Hive™: Apache Hive es un sistema de almacenamiento de datos “Data Warehouse”, de código abierto para la consulta y el análisis de grandes conjuntos de datos que se encuentran en los archivos de Hadoop. Este básicamente realiza tres funciones: La consulta, sumarización y análisis de los datos. Véase: http://searchdatamanagement.techtarget.com/definition/Apache-Hive.
- Mahout™: Es una librería escalable para minería de datos y aprendizaje automatizado (aprendizaje de máquinas), escrita en Java y optimizada para funcionar sobre Hadoop HDFS y MapReduce. Dispone de un gran número de algoritmos implementados para trabajar con técnicas de filtrado colaborativo (Collaborative filtering), Agrupación (Clustering) y Clasificación (Classification). Véase: https://unpocodejava.wordpress.com/2012/10/29/mahout-machine-learning-en-hadoop/.
- Pig™: Apache Pig es una plataforma para el análisis de grandes conjuntos de datos. Consta de un lenguaje de alto nivel para la expresión de programas junto con la infraestructura necesaria para la evaluación de los programas. Véase: https://pig.apache.org/ y http://www.ibm.com/developerworks/ssa/data/library/bigdata-apachepig/.
- Spark™: Es un motor para el procesamiento de datos a gran escala. Permite escribir rápidamente aplicaciones en los lenguajes de programación Java, Scala, Pyton y R. Ejecuta los programas en la memoria hasta 100 veces más rápido que Hadoop MapReduce, o 10 veces más rápido en el disco. Adicionalmente puede combinar comandos de SQL, flujo de datos (streaming) y análisis complejos. Véase: http://spark.apache.org/ y https://geekytheory.com/apache-spark-que-es-y-como-funciona/.
- Tez™: Tez es un nuevo marco de ejecución distribuido para Hadoop. Esta herramienta convierte el modelo de MapReduce en una plataforma más potente que es útil para una gran cantidad de casos de uso en donde el procesamiento de las consultas requiere de un rendimiento casi en tiempo real. Véase: http://www.infoq.com/articles/apache-tez-saha-murthy y http://tez.apache.org/.
- ZooKeeper™: Es un servicio centralizado para mantener la información de configuración, denominación, sincronización distribuida y de servicios de grupo que requieren las aplicaciones distribuidas. Véase: http://zookeeper.apache.org/ y https://unpocodejava.wordpress.com/2010/11/19/zookeeper-se-ha-convertido-en-un-proyecto-apache-top/.
Para mayor información sobre el Apache Hadoop, sus proyectos relacionados e incluso descargar el software puede acceder al siguiente sitio web: http://hadoop.apache.org/ y http://inlab.fib.upc.edu/es/blog/que-herramientas-necesitas-para-iniciarte-en-big-data.
Javier Salazar Argonza
Sitio Fuente: Revista UNAM