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, 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.
1 Un sistema distribuido se define como una colección de computadoras separadas físicamente y conectadas entre sí por una red de comunicaciones; cada máquina posee sus componentes de hardware y software que el programador percibe como un solo sistema. En los sistemas distribuidos si un componente del sistema se descompone otro componente es capaz de reemplazarlo. (Tolerancia a fallos). El tamaño de un sistema distribuido puede ser muy variado, ya sean decenas (red de área local), centenas (red de área metropolitana) o miles y millones de hosts (Internet); esto se denomina escalabilidad. Fuente:https://es.wikipedia.org/wiki/Computaci%C3%B3n_distribuida.
2 El término clúster (del inglés cluster, "grupo" o "raíz") se aplica a los conjuntos o conglomerados de computadoras unidas entre sí normalmente por una red de alta velocidad y que se comportan como si fuesen una única computadora. Los clústeres son usualmente empleados para mejorar el rendimiento y/o la disponibilidad por encima de la que es provista por un solo computador. Un clúster brinda los siguientes servicios: Alto rendimiento, alta disponibilidad, balanceo de carga y escalabilidad. Fuente:https://es.wikipedia.org/wiki/Cl%C3%BAster_(inform%C3%A1tica).
3 Framework: (Entorno de trabajo). En el desarrollo de software, un framework o infraestructura digital, es una estructura conceptual y tecnológica con módulos concretos de software, que puede servir de base para la organización y desarrollo de software. Típicamente, puede incluir soporte de programas, bibliotecas y un lenguaje interpretado, entre otras herramientas, para así ayudar a desarrollar y unir los diferentes componentes de un proyecto.
4 Apache Hadoop: Es un framework de software que soporta aplicaciones distribuidas bajo una licencia libre. Permite a las aplicaciones trabajar con miles de nodos y petabytes de datos. (En términos más simples, es un marco para el manejo de grandes conjuntos de datos en un entorno de computación distribuida).
“El mercado incluye tres proveedores independientes que se especializan en Hadoop: Cloudera Inc., Hortonworks Inc. y MapR Technologies Inc. Otras empresas que ofrecen distribuciones o capacidades de Hadoop incluyen Pivotal Software Inc., IBM, Amazon Web Services y Microsoft”. Párrafo tomado de: http://searchdatacenter.techtarget.com/es/cronica/Explorando-distribuciones-Hadoop-para-gestionar-big-data.
• Las mejoras o beneficios que aportan a la solución. Recordemos que las variantes en los frameworks facilitan abordar los problemas de analítica con diferentes enfoques, adiciones y/o mejoras y por ende resultados.¿Cuáles son estas distribuciones líderes en el mercado?, en términos generales que es lo que ofrece cada una de ellas. La tabla que se presenta a continuación lo resume.
• Facilidades de monitoreo y administración para Hadoop.
• Los componentes específicos o propietarios de las distribuciones.
• Su compatibilidad con otras plataformas.
• El hardware requerido.
• Las facilidades de recuperación en caso de desastre.
• Modelo de servicio y soporte ofertado.
• Consultoría.
• Su costo.
Distribución Comercial de Hadoop |
Ambiente operativo |
Ofrece |
Amazone Web Servicves AWS |
Unix/Linux |
|
Cloudera |
Unix/Linux |
|
Hortonworks |
Unix/Linux |
|
IBM |
Unix/Linux |
|
MapRTechnoligies |
Unix/Linux |
|
Pivotal |
Unix/Linux |
|
Teradata |
Unix/Linux |
|
Intel |
Unix/Linux |
|
Microsoft Windows Azure HDInsight Service |
Windows |
|
Tabla 1. Principales distribuciones comerciales de Hadoop.
Fuente: http://cioperu.pe/fotoreportaje/15543/hadoop-como-se-encuentran-las-distribuciones-lideres/
5 Aster es un software basado en el procesamiento masivo en paralelo para el análisis y manejo de datos desarrollado por Teradata Corp. https://en.wikipedia.org/wiki/Aster_Data_Systems
6 Lustre es un sistema de archivos distribuido Open Source, normalmente utilizado en clusters a gran escala. El nombre es una mezcla de Linux y clusters. El proyecto intenta proporcionar un sistema de archivos para clusters de decenas de miles de nodos con petabytes de capacidad de almacenamiento, sin comprometer la velocidad o la seguridad, y está disponible bajo la GNU GPL.https://es.wikipedia.org/wiki/Lustre_(sistema_de_archivos)
7 Polybase es una tecnología de Microsoft que permite a los usuarios de SQL Server PDW ejecutar consultas sobre los datos almacenados en Hadoop. Véase: http://francescsanchezbi.webnode.es/news/uso-de-hadoop-en-sql-server-con-pdw-y-polybase-/
El análisis de las cargas de trabajo será un factor determinante para lograr el mejor equilibrio entre rendimiento y ahorro del hardware, por ejemplo:• Nodos computacionales.
• Almacenamiento.
• Frameworks y aplicaciones programadas en Java (Ejemplo: Hadoop, Hbase, Spark, etc.).
• Redes de alta velocidad de tecnología gigabit o superior.
• Sistemas de soporte vital para (alimentación de energía eléctrica y el control de temperatura y humedad).
Podemos apreciar diferencias significativas, como:
Figura 2: Clúster para Big Data
basado en Hadoop.
Fuente: www.nextplatform.com/2015.• Un número diferente de nodos y de configuraciones entre éstos, que producen rendimientos diferentes en la ejecución de los procesos.
• Tecnologías de almacenamiento diferentes, que influyen de manera determinante en el tiempo de acceso a la información y por ende en la obtención de resultados.
• Redes de datos de diferentes velocidades que influyen en el desempeño global de la solución.
• Nodo de Nombres (Rastreador de trabajos Namenode JobTracker): Responsable de la topología de todos los demás nodos y de gestionar el espacio de nombres. Solo hay uno por clúster. El Nodo de nombres se encarga de distribuir los archivos en los nodos de datos que realizarán el procesamiento de los datos. Véase: http://www.happyminds.es/apache-hadoop-introduccion-a-hdfs/#sthash.1A9onPIj.dpuf.
• Nodo de Datos (Rastreador de tareas Data node TaskTracker): Acceden a los datos. Almacenan los bloques de información y los recuperan bajo demanda.
• La cantidad de nodos de datos que contenga el clúster.Los detalles sobre su tecnología, por supuesto que también influirán en el desempeño y configuración de la solución.
• El número máximo de tareas que ejecutará cada nodo de datos de forma simultánea.
• La memoria necesaria para los demonios que se ejecutan en los nodos de datos, de tareas y del sistema operativo.
• El número de bloques almacenados en el sistema de archivos distribuidos.
• Las necesidades específicas del software a utilizar en la plataforma.
• Disponer de una gran capacidad para almacenar datos. (De acuerdo a los requerimientos del proyecto).Recordemos también que el tema del respaldo de la información se volverá crítico cuando hablamos de terabytes o petabytes de información. Esto si no contamos con una infraestructura suficientemente robusta que asegure la preservación de la información al paso del tiempo. Véase: http://www.computerweekly.com/feature/Big-data-storage-choices.
• Deben poder escalar de forma modular fácilmente desde unos cuantos terabytes hasta múltiples petabytes de información.
• Contar con un muy alto rendimiento en IOPS (Operaciones de entrada y salida por segundo). Adecuado en tiempo real.
• Soportar y controlar todo tipo de datos.
• Contar con una tecnología que asegure una gran protección para los datos.
• Gran velocidad.Resulta claro que a mayor velocidad, el costo de la red se incrementará. Por tal motivo se puede iniciar con velocidades de conectividad a 1 Gbit y jugar con opciones de agregación de puertos 10 para mejorar el desempeño. No obstante el mejor desempeño se logrará con la tecnología de 10 Gbit o superior.
• Alta disponibilidad.
• Redundancia.
• Resistencia a fallas.
• Alta capacidad de resolver situaciones de congestionamiento en la red.
• Consistencia.
• Fácil de escalabilidad.
• Altamente administrable.
• Resilencia. (Capacidad de continuar funcionando dentro de parámetros aceptables ante distintos tipos de problemas).
• Identificar las preguntas que deberá responder la plataforma de Big Data.
• La urgencia de respuesta.
• Identificar las fuentes de información de donde se deberá extraer la información a procesar. Incluso pueden ser a partir de programas de TV en tiempo real o el flujo de mensajes proveniente de redes sociales.
• Cuantificar la cantidad de información con que se deberá trabajar.
8 En informática, el acrónimo RAID (del inglés Redundant Array of Inexpensive Disks o, más común a día de hoy, Redundant Array of Independent Disks), traducido como «conjunto redundante de discos Independientes», hace referencia a un sistema de almacenamiento de datos en tiempo real que utiliza múltiples unidades de almacenamiento de datos (discos duros o SSD) entre los que se distribuyen o replican los datos. Dependiendo de su configuración (a la que suele llamarse «nivel»), los beneficios de un RAID respecto a un único disco son uno o varios de los siguientes: mayor integridad, mayor tolerancia a fallos, mayor throughput (rendimiento) y mayor capacidad. Fuente: https://es.wikipedia.org/wiki/RAID.
9 Logical Volume Management (LVM) en español “administrador de volúmenes lógicos” es una opción de gestión de discos que todas las principales distribuciones de GNU/Linux presentan. Ya sea que necesite para configurar grupos de almacenamiento, o simplemente se necesite para crear dinámicamente las particiones LVM. Véase: https://parbaedlo.wordpress.com/2012/01/05/que-es-lvm-como-se-administra-y-utiliza/.
10 Consiste en el uso de varios puertos de red o enlaces para incrementar la velocidad de comunicación. Véase:https://es.wikipedia.org/wiki/Agregaci%C3%B3n_de_enlaces.
ALFOCEA, J. Detenido por amenazas a su alcalde en Redes Sociales, Delitos informáticos. 2015. Revista legal. [en línea]. Fecha de actualización 22 septiembre 2015. [Consulta: 6 de octubre de 2016]. Disponible en: http://www.delitosinformaticos.com/09/2015/delitos/amenazas-2-delitos/detenido-amenazar-alcalde-redes-sociales.
CACHEIRO, Javier. Requisitos Hardware Big Data. Fundación Pública Galega Centro Tecnolóxico de Supercomputación de Galicia, CESGA. [en Línea]. Fecha de actualización: 16 de Marzo de2015. [Consultado: 25 de Mayo de 2016]. Disponible en: https://www.cesga.es/es/biblioteca/downloadAsset/id/775.
Enauro engineering services, BIG DATA .[En Línea]. [Consultado: 14 de Noviembre de 2016]. Disponible en: http://www.enauro.com/2016/06/10/big-data/.
HURTADO, Gork. Big Data y Hadoop. Cloudera vs Hortonworks. MondragonUnibertsitatea, Investigación en TICs, [en Línea]: [Consultado: 3 Mayo de 2016]. Disponible en: http://mukom.mondragon.edu/ict/big-data-y-hadoop-cloudera-vs-hortonworks/.
JCASANELLA. Introducción a Hadoop y su ecosistema, Ticout Outsourcing Center, Tutoriales de Yellowfin y BI. [en Línea]: Fecha de actualización: 01 de Abril de 2013 [Consultado: 19 Mayo de 2016]. Disponible en: http://www.ticout.com/blog/2013/04/02/introduccion-a-hadoop-y-su-ecosistema/.
LOSHIN,David. Explorando distribuciones Hadoop para gestionar big data. TechTarget S.A. de C.V., Guía Escencial. [en Línea]: Enero de 2016. [Consultado: 14 Abril de 2016]. Disponible en: http://searchdatacenter.techtarget.com/es/cronica/Explorando-distribuciones-Hadoop-para-gestionar-big-data.
LURIE, Marty. Big data de código abierto para el impaciente, Parte 1: Tutorial Hadoop: Hello World con Java, Pig, Hive, Flume, Fuse, Oozie, y Sqoop con Informix, DB2, y MySQL. IBM, IBM deveoper Works. [en línea] 20 de Marzo de 2013 [Consultado: 14 Abril de 2016]. Disponible en: https://www.ibm.com/developerworks/ssa/data/library/techarticle/dm-1209hadoopbigdata/.
MATTHEW, Mayo . Top Big Data Processing Frameworks. KdnuggetsTM, KDnuggets News. [en Línea]: Marzo de 2016. [Consultado: 14 Abril de 2016]. Disponible en: http://www.kdnuggets.com/2016/03/top-big-data-processing-frameworks.html.
O´DELL, Kevin. How-to: Select the Right Hardware for Your New Hadoop Cluster. Cloudera Inc., Cloudera Engineering Blog. [en Línea]: 28 de Agosto de 2013. [Consultado: 28 Mayo de 2016]. Disponible en: https://blog.cloudera.com/blog/2013/08/how-to-select-the-right-hardware-for-your-new-hadoop-cluster/.
STEVE, Dertien. Defining the Infrastructure for Big Data Analytics. PTC Inc., El Divan Digital. [en Línea]: 22 de Mayo de 2015. [Consultado: 11Abril de 2016]. Disponible en: http://blogs.ptc.com/2015/05/22/defining-the-infrastructure-for-big-data-analytics/.
The apache software foundation Hadoop. Web site the Apache Software Foundation, Apache Hadoop Project. [en Línea]: 13 de Febrero de 2016. [Consultado: 17 Mayo de 2016]. Disponible en: http://hadoop.apache.org/.
TIRADOS, Marible. ¿Es Hadoop el fin del almacenamiento de datos tradicional? Big Data Hispano. [en Línea]. 10 de febrero de 2014. [Consultado: 07 Mayo de 2016]. Disponible en: http://www.bigdatahispano.org/noticias/es-hadoop-el-fin-del-almacenamiento-de-datos/.
SÁNCHEZ, José Manuel . ¿QUÉ ES BIG DATA? T2O AdMedia Services, S.L.2015 [en Línea]. 02 de julio de 2016 [Consultado: 14 Noviembre de 2016]. Disponible en: http://www.t2omedia.com/ideas/actualidad/que-es-big-data-2/.
COMENTARIOS