Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Generador de arquitecturas de solución sobre el ecosistema Hadoop para problemas de Big Data BiDArch, Big Data Architect. Julio Mario Sosa O. UNIVERSIDAD DE LOS ANDES Departamento de Ingenieŕıa de Sistemas y Computación Bogotá D.C. Mayo 2017 Generador de arquitecturas de solución sobre el ecosistema Hadoop para problemas de Big Data BiDArch, Big Data Architect. Julio Mario Sosa O. Tesis de Grado presentada como requisito para optar al t́ıtulo de Maǵıster en Ingenieŕıa de Sistemas y Computación. Director: Claudia Lućıa Jiménez Guaŕın, Ph.D UNIVERSIDAD DE LOS ANDES Departamento de Ingenieŕıa de Sistemas y Computación Bogotá D.C. Mayo 2017 Tabla de contenido 1. INTRODUCCIÓN 3 1.1. Problema a resolver. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2. Objetivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2.1. Objetivo general. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2.2. Objetivos espećıficos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3. Caracteŕısticas deseadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2. ESTADO DEL ARTE 9 2.1. Big data players. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.1.1. AWS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.2. IBM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1.3. Hortonworks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.1.4. Cloudera. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1.5. MapR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.6. Dell EMC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2. Arquitecturas referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.1. Arquitectura Lambda . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2.2. Arquitectura Kappa . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3. Resumen y discusión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3. ESTRATEGIA DE SOLUCIÓN: BiDArch, Big Data Architect 25 3.1. Fase 1: Generación de un repositorio de descripción de herramientas. . . . . 28 3.1.1. Modelo de herramienta. . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.1.2. Repositorio ontológico de descripción de herramientas. . . . . . . . . 34 3.2. Fase 2: Caracterización de problema. . . . . . . . . . . . . . . . . . . . . . . 36 3.2.1. Modelo de requerimiento. . . . . . . . . . . . . . . . . . . . . . . . . 37 3.2.2. Modelo de problema. . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.2.3. Proceso de caracterización de problemas . . . . . . . . . . . . . . . . 40 3.3. Fase 3: Construcción de instancias de arquitecturas factibles. . . . . . . . . . 40 1 3.3.1. Modelo de arquitectura factible. . . . . . . . . . . . . . . . . . . . . . 41 3.3.2. Proceso de construcción de una instancia de arquitectura factible. . . 43 4. DISEÑO DE BiDArch 47 4.1. Consideraciones y restricciones de diseño. . . . . . . . . . . . . . . . . . . . . 47 4.2. Diseño de las ontoloǵıas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.2.1. Hadoop Ecosystem Ontology . . . . . . . . . . . . . . . . . . . . . . . 50 4.2.2. Architecture Ontology . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.3. Aplicación Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.3.1. Capa de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.3.2. Capa de proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.3.3. Capa de presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4. Diseño de la arquitectura referencia empleada por BiDArch. . . . . . . . . . 60 5. DESARROLLO DE BiDArch, PRUEBAS Y RESULTADOS 63 5.1. Aportes y contribución. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.1.1. Ontoloǵıas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.1.2. Descripción de problemas. . . . . . . . . . . . . . . . . . . . . . . . . 65 5.1.3. Construcción de arquitecturas. . . . . . . . . . . . . . . . . . . . . . . 66 5.2. Detalles de implementación. . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.2.1. Proyectos de software . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.2.2. Implementación de interfaces WEB. . . . . . . . . . . . . . . . . . . . 70 5.3. Pruebas y resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 5.3.1. Problemas modelados y soluciones obtenidas. . . . . . . . . . . . . . 74 5.3.2. Pruebas de rendimiento . . . . . . . . . . . . . . . . . . . . . . . . . 85 5.4. Discusión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 6. CONCLUSIONES Y TRABAJO FUTURO 89 7. BIBLIOGRAFÍA 91 8. ANEXOS 95 8.1. Atributos genéricos para instancias de problemas. . . . . . . . . . . . . . . . 95 8.2. Relación de las caracteŕısticas generales ofrecidas por las herramientas . . . . 96 2 1 INTRODUCCIÓN Con la invención de las computadoras personales y la posterior construcción de la red de redes, el hombre obtuvo un par de herramientas extraordinarias que han contribuido de manera importante en el desarrollo de la humanidad en las últimas décadas. Desde entonces y hasta la actualidad, estos dos particulares inventos han experimentado una serie de cambios desenfrenados que trascienden del contexto tecnológico o de las máquinas y generan un impacto innegable en la vida de todos los seres humanos, bien sea de manera directa o indirecta. Con la aparición de la Web como un servicio disponible a través de Internet, el hombre empezó a generar información que le interesaba publicar para el consumo del resto de la hu- manidad. En principio el proyecto WorldWideWeb permitió a los f́ısicos del CERN compartir datos, documentación de proyectos y noticias. Luego con la comercialización de la misma, cada vez más organizaciones y compañ́ıas le sacaban provecho, generando un crecimiento importante en el volumen del contenido dispuesto. Posteriormente en el año 2002 con el salto a su versión 2.0, cualquier individuo del planeta que tuviera acceso a ella es capaz de ge- nerar contenido a su antojo, el cual naturalmente cuenta con una superlativa variedad y se transfiere en flujos con altas velocidades. Este acelerado crecimiento experimentado en el volumen de información guarda relaciones directas con indicadores de penetración y tráfico en Internet. En la actualidad el 49 % de la humanidad tiene acceso a Internet [1], y se espera un tráfico de datos con un valor aproximado que exceda los 2.3 ZB (zetabytes) en el año 2020 [2]. Un factor que ha contribuido a tal crecimiento es la existencia de una computación ubicua, que no es más que la tendencia a colocar procesadores en cualquier dispositivo de uso diario, el cual en principio puede estar en cualquier lugar y generar información en cualquier formato. En este escenario en donde el hombre genera información heterogénea que puede ser estructurada o no, a una alta velocidad, de manera masiva y en un gran volumen (con un orden superior o igual al de los petabytes); surgen nuevos retos y problemas relacionados con el descubrimiento, almacenamiento, procesamiento, y análisis de tal información. Para algunos investigadores y expertos, esta problemática vista en gran escala se sale del entendimiento humano, afirmando que el hombre se está ahogando con sus propios datos, debido a que las máquinas no pueden ayudar lo suficiente. Con base en el escenario anterior, un nuevo boom tecnológico y cient́ıfico emerge sobre 3 un concepto llamado big data y se interesa en un estudio de manera transversal a toda esta problemática. Aunque no se cuenta con una definición muy clara de este concepto, lo cual repercute en una enorme confusión y variedades de definiciones; enun alto nivel, un problema de big data puede caracterizarse en principio en función de las siguientes tres propiedades en los flujos de información: velocidad, variedad y volumen. No obstante, en lo que se constituye el espacio tratable de estos problemas, se han identi- ficado requerimientos en términos de escalabilidad, consistencia y disponibilidad en los flujos de información para los diversos casos de uso de interés que son habilitados tras el imponente crecimiento de la computación ubicua y de la Web. Este asunto es de vital interés para la comunidad de cient́ıficos e ingenieros de datos, en especial tras su posicionamiento en el pico de expectativas de la curva de Gartner de 2014 [3] de tecnoloǵıas emergentes, y su desaparición en el año 2015. Lo anterior sin duda refleja que ya el tema no es tratado como un estridente bombo de posibilidades futuras sino más bien una creciente y sostenible realidad tecnológica que se encuentra en la práctica en escalas de grandes organizaciones como Facebook, Twitter, entre otras más. Uno de los proyectos más representativo de este boom, y con un aporte que nadie puede desconocer, es sin duda alguna Apache Hadoop. Este proyecto que en principio era visto como una promesa capaz de procesar escalablemente información en el orden de petabytes, pasó de no lograr correr en más de una docena de nodos en el año 2005 a lograr demostrar su escalabilidad en un cluster instanciado con más de mil máquinas en Yahoo en el año 2007 [4], sin embargo; el precio de lograr tal dimensión de escalabilidad en el procesamiento, para ese entonces dejó de lado otros requerimientos importantes como la seguridad. La existente dificultad para establecer una conexión que reduzca la brecha entre el cre- ciente, variado y complejo dominio de problemas contextualizados como big data, y el conoci- miento relacionado con el uso adecuado de las herramientas que en la actualidad se disponen para satisfacer los requerimientos que presentan tales problemas, es el principal motivador pa- ra este trabajo. Sin pasar por alto que los retos a superar en términos de diseño, arquitectura e implementación de soluciones efectivas tienen una evidente elevada complejidad, en todos estos procesos se presentan transversalmente requerimientos con magnitudes con una alta demanda en dimensiones de volumen, variedad y velocidad en los flujos de información que se manejan en general. En cuanto al volumen, los retos se relacionan con el procesamiento, almacenamiento, y transmisión óptima de información que se encuentra en el orden inclusive de los petabytes; por otro lado, los datos que la componen no solo provienen de sistemas heredados donde son almacenados de manera estructurada, sino por el contrario provienen de cualquier fuente donde cualquiera los genera en el formato que se le ocurre o le conviene, y con la frecuencia que necesita o se le antoja. Además, no solo se evidencia alta complejidad en el problema, también los requerimien- tos funcionales y no funcionales que necesitan ser satisfechos con este tipo de soluciones, impactan en la elaboración de complejas estrategias de solución que logren orquestar diver- sos componentes relacionados con la tecnoloǵıa y las herramientas previamente seleccionadas de un conjunto abrumador de posibles candidatos con múltiples configuraciones. 4 1.1. Problema a resolver. La problemática tratada en este trabajo se relaciona con la complejidad que se presenta a la hora de abordar el diseño, arquitectura e implementación de soluciones a problemas tipo en el dominio del big data. Dentro de las caracteŕısticas más cruciales que determinan su elevada complejidad se diferencian aspectos relacionados con elevadas proporciones en su demanda natural de requerimientos en las dimensiones de volumen, velocidad y variedad de los flujos de información que manejan este tipo de problemas. De la mano a este tipo de problemas, la dif́ıcil selección en un vasto ecosistema conformado por el conjunto creciente de herramientas que emergen con Hadoop como núcleo necesita ser orquestado de manera adecuada para alcanzar la construcción efectiva de soluciones a tales problemas tipo. La toma de tal decisión no resulta simple en la mayoŕıa de los casos y tiene que ir de la mano de los objetivos propuestos a ser alcanzados con cada solución, puesto que en función de una selec- ción determinada de múltiples opciones de configuración y parametrización se potencializa o disminuye de manera importante diversos objetivos de interés como son el almacenamiento, el procesamiento o la transferencia de información, entre muchos otros. De forma natural, en este tipo de problemas resulta muy importante identificar con clari- dad cuál es el objetivo que se busca maximizar con la solución, aśı como también tolerar que al mejorarlo posiblemente se están debilitando las métricas de otros que resultan de interés y están en contraposición con el principal. Por ejemplo, en el contexto donde el interés está relacionado con el modelado y la persistencia de grandes volúmenes de datos puede resultar no tan trivial discernir entre el uso de los gestores de almacenamiento HDFS o HBase y la diversas opciones que ofrecen en términos de una serie de aspectos en los cuales se des- tacan: los formatos de almacenamiento, la comprensión, multitenancy, y la administración de metadatos. Otro ejemplo común donde se evidencia esta complejidad en la selección de herramientas puede encontrarse en la ingestión por śı misma de los datos, en donde se tiene que los datos provienen de una importante variedad de fuentes con velocidades distintas y las necesidades pueden ir ligadas con interrogantes como: ¿qué tan rápido necesitan estar dispo- nibles para ser procesados?, ¿cómo serán procesados?, ¿se requiere alguna transformación en caliente o durante la ingestión? En general, esta complejidad aparece en todos los procesos, y en especial en el de mayor impacto: el procesamiento de la información en todas sus facetas y especialidades. Esta problemática resulta de interés para una serie de roles dentro de cualquier organi- zación que se motive en obtener soluciones construidas en la casa a problemas en el dominio del big data que generen nuevo valor a sus procesos de negocio. Dentro de este conjunto de roles en la organización se tienen: los grupos de desarrolladores de software que en últimas son quienes implementan y hacen realidad dichas soluciones, los arquitectos de software que directamente se enfrentan a tomar la decisión de qué herramientas usar y cómo deben ser desplegadas en términos de configuración e interfaces de comunicación entre las mismas, los administradores de recursos de infraestructura quienes deben velar por un uso eficiente de los recursos que tienen a su cargo sin que se vean comprometidos sus servicios ofrecidos por este nuevo tipo de soluciones. Sin embargo, no solo se ven afectados profesionales que guardan alguna relación técnica o tecnológica con este dominio, sino también analistas que encuentran en este tipo de soluciones habilitadores para construir modelos que aporten un valor extra en los procesos a nivel de negocio, aśı como también de manera indirecta todos aquellos que 5 tengan la responsabilidad de tomar decisiones de negocio. En un alto nivel, se puede fácilmente identificar tres enfoques en cuanto a alternativas de solución para este tipo de retos. En primer lugar se tienen compañ́ıas que ofrecen soluciones como un servicio con una penetración global del mercado, y cuentan inclusive con su propia infraestructura distribuida en muchas partes del mundo. Este primer tipo representa un escenario ideal para organizaciones con intereses superlativos en términos de seguridad, alta disponibilidad, capacidad de almacenamiento y disminución de costos. Un segundo enfoque de alternativa de solución son las organizaciones que ofrecen productos ya elaborados (y previamente ajustados y probados)tanto a medianas como grandes empresas en despliegues de infraestructura propietaria de sus clientes o a través de terceros. Finamente, están aquellas compañ́ıas que cuentan con intereses innovadores o que se enfrentan a nuevas necesidades como consecuencia de su crecimiento, y desean diseñar e implementar sus propias soluciones a su medida en la casa, utilizando la extensa lista herramientas libres existentes en las cuales se cimientan muchas de las soluciones de las anteriormente mencionadas. Son precisamente este tipo de compañ́ıas, las más beneficiadas con un framework como el que se propone en este trabajo, bien sea para un aprovechamiento netamente interno, o inclusive para construir productos y servicios que puedan comercializar en un futuro. . Para lograr la caracterización propuesta, se hace necesario identificar y definir expĺıcita- mente casos de uso dentro de una muestra importante de problemas tipo en dominios donde tiene aplicación el big data. Luego con los casos de uso identificados se establece un conjunto de requerimientos relevantes e inherentes a cada caso de uso que necesitan satisfacerse para alcanzar el objetivo del caso de uso en cuestión. Por lo anterior es necesario elaborar un modelo que permita la abstracción y encapsulamiento de los problemas tipo en el dominio mediante casos de usos y los requerimientos que definen y determinan a estos últimos. Por otro lado, se requiere tipificar las herramientas del ecosistema alrededor de Hadoop en conjunto con las múltiples interfaces y opciones parametrizables ofrecidas en ellas, guardando una relación con la funcionalidad provista. También, construir modelos de configuración de infraestructura cuando sean necesarios. Estas dos tareas se complementan con el objetivo de orientar en el proceso de toma de decisiones relacionado con el diseño, arquitectura e implementación de soluciones. Finalmente resulta naturalmente pertinente la implementación de una solución de una instancia de un problema tipo bajo las orientaciones ofrecidas por el framework. 1.2. Objetivos. 1.2.1. Objetivo general. Construir un framework que permita generar soluciones de arquitecturas a problemas tipo en el dominio del big data mediante una asociación entre los requerimientos relevantes en los casos de uso t́ıpicos y las bondades ofrecidas por las tecnoloǵıas pertinentes dentro del ecosistema de herramientas alrededor de Hadoop. De esta forma, se busca apoyar el diseño y arquitectura de soluciones a problemas en este dominio. 6 1.2.2. Objetivos espećıficos. Caracterizar problemas tipo en el dominio del big data en términos de requerimientos generales y actividades requeridas por los mismos. Definir las actividades requeridas de los problemas como la composición de una serie de requerimientos funcionales y no funcionales que se resuelven con patrones de diseño, arquitectura, implementación, configuración e infraestructura similares utilizando las herramientas del ecosistema. Construir una ontoloǵıa que describa el vasto ecosistema de herramientas que tiene a Hadoop como núcleo en términos de sus funcionalidades individuales y la interacción entre las mismas. Definir un modelo de arquitectura referencia que encapsule la solución de instancias de problemas tipo. Construir un proceso que permita generar una instancia de arquitectura de solución en función de los requerimientos y actividades requeridas de los problemas tipo, empleando las herramientas en el ecosistema. Instanciar un problema y obtener una arquitectura factible de solución generada a partir del modelo de arquitectura referencia propuesto. 1.3. Caracteŕısticas deseadas. El framework propuesto tiene definidos una serie de requerimientos a satisfacer que per- mitan garantizar la efectividad y facilidad del uso de tal herramienta, para contribuir con la construcción de arquitecturas y posterior implementación de soluciones a problemas en el dominio del big data. Estos requerimientos se listan a continuación: Comprender una importante cantidad de problemas tipo en diversos dominios del big data. Describir claramente los problemas y sus requerimientos con un nivel alto de especifi- cidad. Conservar un alto indicador de completitud y profundidad en los detalles de las herra- mientas del ecosistema alrededor de Hadoop. Enriquecer el conocimiento de los usuarios ofreciendo justificaciones y recomendaciones para una mejor toma de decisiones. Navegar fácilmente entre la definición del problema y las arquitectura generada como solución al mismo. Mantener el mayor desacoplamiento posible en los componentes de tal manera que los componentes de las arquitecturas se puedan remplazar fácilmente unos por otros. 7 Al considerar las caracteŕısticas deseadas presentadas anteriormente, se maximiza la pro- babilidad que el usuario del framework encuentre una solución a su problema —tras asociarlo a un problema similar— y logre determinar qué herramientas son necesarias para su solución y cuáles pueden ser opcionales o reemplazables por otras. 8 2 ESTADO DEL ARTE El proceso de diseño para la construcción de un componente que permita tratar la pro- blemática previamente mostrada, requiere de una abstracción de los problemas tipo en el dominio del big data mediante una identificación asertiva de casos de uso y su posterior des- cripción en términos de una composición de requerimientos, para finalmente lograr obtener una sugerencia de arquitecturas y consideraciones importantes en el diseño e implementación de las soluciones. Por ello es importante realizar una revisión de las metodoloǵıas y herra- mientas utilizadas por las grandes compañ́ıas interesadas y dedicadas en la construcción y comercialización de productos o servicios que apuntan a resolverle este tipo de problemas a otras organizaciones. Algunas de estas enormes compañ́ıas, también denominadas big data players, ofrecen pro- ductos que resuelven instancias puntuales y muy comunes de problemas en el dominio del big data. De esta manera aprovechan un mercado muy valioso al proveer soluciones en diversos campos como son: el análisis en tiempo real de la seguridad, la detección y control de ries- gos en servicios financieros, la exploración automática de datos, el procesamiento de flujos de información, la optimización en el almacenamiento de grandes volúmenes de datos, los sistemas de recomendación, entre muchos otros más. Por otro lado, otras de estas compañ́ıas se dedican a ofrecer servicios bien sea de infraestructura para el desarrollo y despliegue de soluciones o de consultoŕıa para el diseño e implementación de las mismas. No obstante, y de manera natural existen los competidores más grandes, los cuales no solo proveen infraes- tructura auto administrable y escalable para atender los requerimientos de cualquiera de sus clientes, sino que también cuentan con una amplia gama de productos y servicios que ofrecen y generan un valor importante para los intereses de negocios de sus clientes. Por lo anterior, resulta vital realizar una selección adecuada entre estas compañ́ıas con una revisión de los problemas tipo en los dominios que manejan y los casos de uso soportados en sus productos. No es menos importante, hacer una revisión de algunos surveys realizados recientemente que tienen como objetivo dar a conocer herramientas libres para la construcción de instancias particulares de problemas en el dominio del big data. Por último, se realiza una comparación de los elementos que componen los productos generados para resolver instancias de problemas particulares en el dominio, con los propios de la metodoloǵıa propuesta para resolver el reto previamente planteado con base en las caracteŕısticas deseadas previamente enunciadas 9 2.1. Big data players. En la actualidad, los big data players conforman una serie de grandes compañ́ıas con la capacidad de vencer todos los inconvenientes y problemas, que enfrentan muchas de las organizacionesa quienes les interesa resolver problemas en el dominio del big data. Un grupo importante de estas compañ́ıas cuentan con sus propias distribuciones de Hadoop en versiones comerciales con un abanico de funcionalidades adicionales, que buscan apuntar a requerimien- tos externos al problema en el dominio de big data de interés, pero que resultan ser factores diferenciadores vitales para sus clientes en el momento de tomar la decisión respecto a qué proveedor utilizar. Entre estos elementos adicionales se encuentran: el soporte, confiabilidad y completitud. Todas estas organizaciones que comercializan distribuciones especiales cuentan con un equipo de profesionales capacitados para proveer asistencia y gúıa técnica, lo que le facilita a sus clientes adoptar Hadoop para la implementación de sus tareas a nivel de negocio y aplicacio- nes de misión cŕıtica. Además, estos vendedores responden prontamente ante eventualidades detectadas y rápidamente ofrecen parches y mejoras continuamente que contribuyen en el alcance de una evidente estabilidad en sus soluciones. Naturalmente, sus distribuciones van de la mano con herramientas adicionales que representan un valor relevante para los clientes al permitir ajustarse con una mayor precisión a los objetivos que interesan a sus clientes. Naturalmente estas compañ́ıas no proveen de manera libre y abierta su experticia y sa- biduŕıa en la construcción de soluciones de problemas del dominio de big data a través de un artefacto que permita a cualquier interesado fácilmente alcanzar cierto nivel de cercańıa a una solución efectiva y estable para sus problemas en el dominio. Por el contrario, real- mente materializan todo ese conocimiento en productos con un objetivo de mercado puntual, estos productos se encuentran valorizados por su capacidad para potencializar los procesos de negocios de sus clientes y por el impacto que generan con los resultados obtenidos en sus soluciones. De esta manera cada conocimiento y experiencia empleada para la elaboración de las arquitecturas prototipo que permiten construir productos fácilmente replicables para sus clientes, representa un alto porcentaje en el valor de sus soluciones y un factor diferenciador con respecto a sus competidores. No obstante, algunos expertos en el tema han realizado publicaciones importantes (no necesariamente formales) que transmiten su experiencia en el uso de estas herramientas y lecciones aprendidas relacionadas con escenarios en los que son útiles, aśı como la forma en un alto nivel de cómo estas deben usarse. Dentro de estos se destaca la obra [4] de un grupo de miembros de Cloudera que sirve como una gúıa de recomendación para el diseño de la arquitectura de aplicaciones que necesiten el uso de Hadoop. Se toma como referencia 6 (seis) de los big data players más importantes en la actualidad que guardan relación con el objetivo de este trabajo: AWS [5] , IBM [6], HortonWorks [7], Cloudera [8], MapR [9] y Dell EMC [10]. Cuatro de estos (IBM [6], Hortonworks [7], Cloudera [8] y MapR [9]) tienen distribuciones que se encuentran posicionados como ĺıderes en el cuadrante mágico de Forrester de distribuciones de Hadoop para big data del año 2016, por su fuerte estrategia, oferta actual y presencia en el mercado [11]. Véase la figura 2.1. 10 Figura 2.1: Forrester WaveTM: Big Data Hadoop Distributions, Q1 ’16. [11] 2.1.1. AWS. Sin duda alguna este es uno de los big data players más importante de la actualidad y dis- pone de herramientas que soportan todas las etapas del ciclo de administración de los datos, desde la colección de los mismos hasta el consumo de información útil o de valor. A través de una extensa gama de servicios en la nube provee tanto frameworks con caracteŕısticas de alta e inmediata disponibilidad y seguridad, como un ecosistema de soluciones por partners que conforman toda una red denominada la AWS Partner Network. Este proveedor de servicios en la nube que aprovecha la economı́a de escala, ofrece acuerdos de nivel de servicio con indicadores exquisitos para cualquier interesado en adquirir este tipo de servicios. Dentro de los frameworks de análisis de datos, se diferencian los que tienen como propósito el procesamiento en batch de aquellos que están diseñados para el procesamiento en tiempo real. En la primera categoŕıa se encuentra el Web Service Amazon EMR (Elastic Map Reduce) [12] que permite el procesamiento de una enorme cantidad de datos (comúnmente almace- nados en buckets S3 o en la base de datos NoSQL DynamoDB) con Hadoop a lo largo de un cluster de instancias EC2 de manera fácil, rápida y costo efectivo. Como alternativas a Hadoop ofrece otros frameworks de procesamiento distribuido como Apache Spark y Presto. Dentro de las facilidades más importantes ofrecidas en este servicio se destacan: la facilidad 11 de uso, el bajo costo en infraestructura, elasticidad y autoescalamiento del cluster, seguridad y cifrado, y la flexibilidad obtenida por el control completo y absoluto de cada nodo en el cluster. Dentro de sus principales casos de usos se tienen: el análisis de flujos de visitas por medio de clicks, procesamiento de logs y la genómica. En el procesamiento en tiempo real de flujos de información ofrece los siguientes servicios Web: Amazon Kinesis Firehose [13]: Mediante este servicio Web se hace muy fácil la carga de flujos de información en sistemas de almacenamiento o consulta de AWS como Amazon S3, Amazon RedShift y Amazon Elastic Search y se habilita el análisis en tiempo real un orden no superior a los dos minutos después de que los datos son enviados al servicio. Este servicio es auto- administrable de esta manera automáticamente escala en CPU, memoria, y recursos de red requeridos para la carga de los flujos de información necesaria. Entre sus principales casos de usos tiene: Internet Of Things, mercadeo digital y la captura de información móvil. Amazon Kinesis Analytics [14]: Permite el procesamiento cercano al tiempo real de flujos de información mediante in- terfaces con estándares SQL, lo cual significa que no se presenta la necesidad de un aprendizaje de nuevos lenguajes o frameworks de procesamiento e incide directamente en su facilidad de uso. Dentro de sus funcionalidades se encuentran: los filtros, agre- gación y enriquecimiento de la información contenida en los flujos. Este servicio es auto-escalable y se ajusta al volumen y tasas de transferencia de la información que ingresa al mismo. Amazon Kinesis Streams [15]: Es el servicio más flexible en el sentido que permite la construcción de aplicaciones a la medida del usuario. Realiza la captura y almacenamiento desde cientos de miles de fuentes de datos tales como: transacciones financieras, publicaciones en redes so- ciales, IT logs y seguimiento de eventos de localización. Con la libreŕıa KCL (Kinesis Client Library) se realiza la construcción de las aplicaciones que consumen los flujos, la publicación resultados en dashboards, generar alertas y muchas acciones más. La figura 2.2 presenta cómo interactúan tradicionalmente estos servicios de la platafor- ma para el procesamiento en tiempo real flujos de información. Un caso de uso para estos servicios lo representan las aplicaciones Web que env́ıan información de click stream para su procesamiento en tiempo real, permitiendo la elaboración de sistemas de recomendación de contenido personalizado entre otras aplicaciones. 12 Figura 2.2: AWS Kinesis Services. [16] 2.1.2. IBM. IBM cuenta con la Next Generation Architecture, una arquitectura de zona diseñada para enfrentar el reto del análisis sobre el big data y al mismo tiempo producir nuevas ideas de negocios reduciendo el almacenamiento y los costos de mantenimiento [17]. De esta forma ofrece a sus clientes el big data y su análisis, como herramientas que les permiten superar la competencia, el manejo y control de riesgos, y la toma de mejores decisiones. La arquitectura capitaliza todos los tiposde datos existentes incluyendo flujos de infor- mación en tiempo real, y aśı extiende el análisis convencional con funcionalidades predictivas y cognitivas, con un soporte proactivo en cuanto a la seguridad y privacidad. Estas fuentes pueden ser aplicaciones transaccionales, información proveniente de sensores, imágenes y vi- deos, redes sociales o aplicaciones de terceros. En la arquitectura, se soportan casos de usos comunes bajo el concepto de zonas, algunas de estas son la zona de procesamiento y análisis de información en tiempo real, la zona de almacenamiento y exploración de datos, la zona de análisis profundo de datos, y la zona para asuntos relacionados con EDW (Enterprise Data WareHouse) y Data Smart [18]. Los casos de uso más importantes para este big data player son: la exploración de big data, la vista 360 de clientes, la seguridad (en términos de detección de fraude y el monitoreo en tiempo real) y el análisis de las operaciones para la mejora de procesos de negocios. 13 Figura 2.3: Arquitectura de la red IBM Next Generation Network. [17] Los cient́ıficos de datos de esta compañ́ıa consideran la veracidad como una nueva di- mensión o variable a considerar en el clásico grupo V3 (volumen, variedad y velocidad) en sus soluciones. Al introducir esta dimensión, es posible determinar el nivel de confianza en cuanto a la calidad y precisión de la información para la toma de decisiones [19]. 2.1.3. Hortonworks. Este big data player que entiende a los datos como el activo más valioso, dispone de plataformas de datos conectadas que ayudan a sus clientes a crear flujos de procesos para transformar sus negocios. Dentro de los principales casos de uso soportados con sus productos se encuentran soluciones de descubrimiento de datos, construcción de vistas simples de un negocio, el análisis predictivo en flujos de información y la optimización en bodegas de datos empresariales [20]. Estas aplicaciones se aplican en dominios de la industria como: la genera- ción de alertas, servicios financieros, el cuidado de la salud, seguros, las telecomunicaciones, el sector público entre otros. También cuenta con un grupo de expertos que ayudan a sus clientes a implementar e integrar plataformas de datos, el despliegue de casos de usos comunes y servicios de asesoŕıa. 14 Hortonworks está más orientado a ofrecer soluciones tipo en caso de usos comunes que le representan beneficios en determinados mercados. Mediante una suite de soluciones co- nectadas ofrece funcionalidades de extremo a extremo para información en movimiento o persistente. Por un lado, el producto Hortonworks DataFlow (HDF) se encarga de la captu- ra, análisis y entrega flujos de información proveniente de diversas fuentes del IoAT (sensores, archivos de logs, click streams y muchos oŕıgenes más). Hortonworks Data Plattform (HDP) provee la persistencia segura de los datos y el análisis necesario para potencializar ideas de negocios en escenarios versátiles, estos incluyen desde el procesamiento en batch hasta el procesamiento tiempo real y el streamming [21]. Esta plataforma también ofrece funcionalidades de seguridad, gobierno y operación idóneas para un nivel o ambiente empresarial. La figura 2.4 presenta las herramientas de la la plataforma HDP clasificados por actividad. Figura 2.4: Hortonworks Data Platform. [21] HDInsight es una solución en la nube que ofrece en alianza con el partner Microsoft una distribución de Apache Hadoop y Apache Spark completamente auto administrable y escala- ble. Su diseño busca la reducción de costos de administración y un alto nivel de productividad. Este servicio cuenta con un SLA con indicadores con un valor de 99.9 %, replicas automáticas de datos, alta disponibilidad ofrecida por 24 regiones en 140 páıses del mundo, monitoreo y seguridad a nivel empresarial; facilidad de uso, interacción y despliegue entre soluciones en modo on premise y en la nube [22]. Dentro de las herramientas del ecosistema alrededor de Hadoop disponibles en este producto se encuentran: Apache HBase, Apache Storm, Apache Hive, Apache Kafka y por supuesto Apache Spark. 2.1.4. Cloudera. Cloudera ofrece un extenso y variado portafolio de productos y servicios a sus clientes con distintos objetivos o funcionalidades. Todos estos productos y servicios constitutyen 15 soluciones que permiten potenciar los procesos de negocios y se enfocan en aspectos como la reducción de costos, la privacidad de sus clientes y las ventajas competitivas. Las soluciones propuestas abarcan casos de usos como son: la identificación y mitigación de amenazas cibernéticas, la reducción de riesgos de negocios, el entendimiento de los clientes de una compañ́ıa, el mejoramiento de procesos y operación, entre otros. Tales casos de usos son aplicados en diversos dominios de la industria tales como: los servicios financieros, las telecomunicaciones, el sector público, el cuidado de la salud, entre muchos otros más [23]. Este big data player también cuenta con un equipo de expertos que acompañan a sus clientes a optimizar las soluciones y ofrecen soporte predictivo y proactivo a clusters con el framework Apache Hadoop que dispongan sus clientes como elementos vitales para sus soluciones. Cloudera Enterprise Data Hub es el producto estrella que comercializa esta marca en conjunto con otros como Cloudera Analytic DB, Cloudera Operational DB y Cloudera Data Science & Engineering [24]. Mediante este portafolio soportan la integración, el procesamien- to, almacenamiento, análisis, y publicación de flujos de información con muchas herramientas del ecosistema Hadoop. Tales servicios se encuentran unificados y blindados con servicios pa- ra proveer seguridad al cluster. La figura 2.5 muestra la integración de las herramientas empleadas en la arquitectura empresarial de Cloudera para la integración, almacenamiento, procesamiento y análisis de big data. Figura 2.5: Arquitectura de Cloudera Enterprise. [24] 2.1.5. MapR. Este big data player declara su plataforma MapR Converged Data Platform como capaz de integrar el enorme poder de Apache Hadoop y Apache Spark, soportando funcionalidades relacionadas con el flujo global de eventos, el poder de las bases de datos en tiempo real, 16 y el almacenamiento en escalas empresariales para habilitar el desarrollo y despliegue de soluciones [25]. Esta plataforma está compuesta de una mezcla de motores open source y motores comerciales para proveer una plataforma de servicios de almacenamiento, bases de datos y flujos de información. La plataforma se encuentra soportada sobre una infraestructura abierta, segura, y rápida que reduce de manera importante el costo total de la propiedad, es decir el costo asociado con la compra, despliegue, uso, mantenimiento y retiro de la misma. Sus soluciones tienen un objetivo que está centrado en los negocios enfocados en los datos y su valor, y que naturalmente como es de esperarse también apoyan necesidades cŕıticas de negocio que no pueden permitirse o tolerar perdida de información. Dentro de sus soluciones se destacan requerimientos de disponibilidad 24x7, la recuperación inmediata de nodos y fallas en los sitios. Estas soluciones coinciden con casos de usos comunes como el análisis en batch de información, las consultas interactivas y los flujos de información en tiempo real en múltiples sectores de aplicación como son: IT, mercadeo, seguridad, gobierno, salud, telecomunicaciones y operaciones de negocio [26]. La plataforma MapR Converged Data Platform cobmina la flexibilidad y la innovación del ecosistema que tiene como núcleo a Hadoop con una capa de servicios de datos a nivel empresarial. [27] Figura 2.6: Plataforma MapR Converged Data Platform. [27] Dentro de sus componentes, uno de los más importantes es el ssistema de archivos MapR- FS que cuenta con funcionalidades como la capacidad de no solo hacer inserciones al final sino una capacidad de lectura-escritura completa, montablecomo un sistemas de archivos de red NFS y que al ser escrito directamente en un lenguaje como C++ y acceder directamente al hardware de almacenamiento mejora dramáticamente el rendimiento y la facilidad de ad- ministración. A diferencia de otras distribuciones de Hadoop, esta no requiere el aislamiento y diferenciación de cluster para el procesamiento de diversas fuentes como archivos distri- buidos, tablas de bases de datos y flujos de información en tiempo real, reduciendo costos a medida que el despliegue crece. Un aspecto importante es la existencia de un comité que continuamente prueba y valida los proyectos principales Apache antes de incluirlos en la plataforma, y contribuye con códigos 17 y libreŕıas disponibles a través de repositorios en Github y Maven, lo que muestra un aporte significativo en la comunidad libre. 2.1.6. Dell EMC. Con la asociación de dos de las franquicias mundiales más grandes en el mundo de la tecnoloǵıa, Dell EMC habilita que los negocios se capitalicen mediante predicciones derivadas de los datos de una manera rápida, flexible y masiva. En la actualidad permite que sus clientes almacenen, analicen y protejan sus datos. Por otro lado ofrece predicciones que permiten entender el comportamiento de clientes, la optimización de operaciones, el control de riesgo [28]. En cuanto a la infraestructura, permite escalar sin interrupciones y eliminar el aislamiento de datos en las soluciones al utilizar el enfoque de un data lake, como un repositorio centralizado, masivo y simplificado. Dentro de sus productos o soluciones se tienen los siguientes tres grupos: Isilon Solutions [29]: Isilon ofrece la flexibilidad, rendimiento y escalabilidad para sopor- tar un amplio rango de soluciones en el ambito industrial (healthcare, entretinimiento, combustibles, etc.) y en el ambiente de las tecnologias de la información (soluciones de almacenamiento para big data y almacenamiento compartido) ECS [30]: La plataforma de almacenamiento de objetos de Dell EMC, Elastic Cloud Storage (ECS) está diseñada para aplicaciones tradicionales y de tercera generación al ofrecer simplicidad, resiliencia y eficiencia de almacenamiento. Esta plataforma puede ser desplegada en el hardware tradicional industrial de las compañ́ıas o como un servicio totalmente administrado en la nube. Un logro muy importante alcanzado por esta plataforma, lo constituye su posición en el punto más alto del cuadrante mágico de Gartner para sistemas distribuidos y almacenamiento de objetos [31]. Boomi [32]: Reconocido también como un ĺıder en el cuadrante mágico de Gartner para plataformas de integración empresarial como servicios 2017 [33] y como un ĺıder por Forrester pla- taforma como servicio para la integración dinámica e h́ıbrida para compañ́ıas [34], esta plataforma apoya la integración, la administración de APIs, la consolidación de infor- mación maestra, el intercambio de datos electrónicos EDI y flujos de trabajo. Dentro de sus caracteŕısticas se destacan su naturaleza 100 % orientada a la nube, la velocidad para configurar procesos de gestión e integración de datos y su facilidad de uso. Este competidor que está más centrado en proveer infraestructura para construir solucio- nes, ofrece un servicio de consultoŕıa para acompañar a sus clientes en todas las etapas de las mismas, aśı como también programas de capacitación en temas relacionados con el big data. 2.2. Arquitecturas referencia En esta sección se presenta un par de arquitecturas referencias construidas por individuos con una importante experiencia en el diseño de aplicaciones o sistemas en el dominio de 18 interés. La exploración de este par de arquitecturas permite conocer cómo han sido afrontados los retos intŕınsecos de la labor de diseño de un sistema de big data que ofrezca una serie de prestaciones fundamentales. A continuación se exploran en el orden: la arquitectura Lambda y la arquitectura Kappa. 2.2.1. Arquitectura Lambda La arquitectura Lambda —diseñada por Nathan Marz— es un framework muy útil a se- guir para el diseño de aplicaciones big data. En ella se direccionan requerimientos comunes que presentan las aplicaciones de este tipo basándose en la experiencia que su creador ha tenido trabajando en sistemas de procesamientos distribuidos en Twitter [35]. Estos requerimientos comunes pueden ser descritos en términos de las propiedades deseadas para un sistema de big data como son: robustez, tolerancia a fallos, baja latencia de lecturas y actualización, escalabilidad, generalización, extensibilidad, depuración y mantenimiento mı́nimo [36]. El problema de computar funciones de diversa naturaleza sobre un datatset arbitrario es un problema muy intimidante. No existe una única herramienta que permita resolverlo completamente. Por ello, es necesario usar una variedad de herramientas y técnicas para construir un sistema de big data completo que proporcione dicha solución [36]. La arquitectura Lambda resuelve este problema tras descomponerlo en las siguientes tres capas: batch layer, serving layer y speed layer. Todos los datos que ingresan al sistema son despachados tanto a la capa batch layer como a la capa speed layer para su procesamiento. La capa batch layer se encarga de la administración de la información maestra —un conjunto de datos inmutable que solo permite la inserción al final— y precomputa las vistas en batch. La capa serving layer indexa las vistas en batch precomputadas para que puedan ser consultadas a través de un mecanismo con baja latencia y en un sentido ad-hoc. La capa speed layer compensa la alta latencia de las actualizaciones a la capa serving layer y maneja únicamente datos recientes o frescos. Por el diseño de esta arquitectura, se posibilita que una consulta pueda ser respondida como la mezcla de los resultados provenientes de las vistas en batch y de las vistas construidas en tiempo real [36]. En la figura 2.7 se ilustra el proceso descrito anteriormente con una perspectiva en alto nivel. 19 Figura 2.7: Perspectiva en alto nivel de la arquitectura Lambda. [37] La sincronización entre la operación de las capas batch layer y speed layer resulta cru- cial. El aspecto más importante de la misma ocurre cuando la capa batch layer termina su computo y se requiere remover información redundante de la vista speed layer antes de que sea ingresada a la capa batch layer [38]. Las funcionalidades de cada una de estas capas pueden ser implementadas usando varias de las tecnoloǵıas existentes en el big data. Por ejemplo, los datasets de la capa batch layer pueden ser almacenados en HDFS, mientras que las vistas en batch pueden ser creadas por MapReduce y dispuestas a la capa serving layer, la cual puede ser implementada usando tecnoloǵıas NoSQL como Apache HBase. Las consultas a las vistas pueden implementarse mediante tecnoloǵıas como Apache Drill o Impala. Finalmente tanto la capa de velocidad puede soportarse con herramientas como Apache Storm o Apache Spark Streamming [35]. Considerando lo anterior, la descripción de la arquitectura Lambda encapsula funcio- nalidades que son comunes a todas las distribuciones de Hadoop que los big data players —presentados en la sección 2.1— han construido. La figura 2.8 presenta una instancia con- creta de la arquitectura Lambda ejemplificando en que herramientas se apoyan cada una de las capas en cuestión. 20 Figura 2.8: Perspectiva en alto nivel de la arquitectura Lambda. [35] Sin embargo, esta arquitectura también tiene sus inconvenientes o dificultades. Uno de los más importantes radica en que, al no contar con una herramienta capaz de realizar los dos tipos procesamiento (batch y streamming), se requiere implementar dos veces la lógica de los procesos: una implementación que reside en la capa de batch y otra en la capa de velocidad. Lo anterior, tradicionalmente requiere de herramientas personalizadas que permitan la integración de las dos fuentes de datos en mención [39].Otros inconvenientes, también relacionados con el anterior, básicamente giran alrededor de los siguientes aspectos: la dificultad de mantener un código en dos sistemas distribuidos en los cuales se esperan los mismos resultados, la depuración de la ejecución en śı misma y la elevada complejidad operacional de los sistemas que la implementan [40]. 2.2.2. Arquitectura Kappa Esta arquitectura diseñada por Jay Kreps, se enfoca en algunos de los inconvenientes asociados a la arquitectura Lambda. Es importante tener presente que la decisión de adoptar una arquitectura u otra para un determinado caso de uso, puede convertirse en todo un reto; y una equivocación en la misma, significar serias consecuencias en la posterior implementa- ción de la solución. Por otro lado, hay que anotar que esta arquitectura no remplaza a la arquitectura Lambda, debido a que existen casos de usos que pueden ser desplegados perfec- tamente bajo la arquitectura Lambda y no se pueden migrar a este patrón de arquitectura [41]. La arquitectura Kappa es una simplificación de la arquitectura Lambda. Este patrón de arquitectura de software remueve la capa de procesamiento en batch presente en la arquitec- tura Lambda. Para remplazar esta capa, los datos son simplemente introducidos al sistema de streamming rápidamente. Su almacén canónico de datos se define como un log inmutable que 21 sólo permite inserciones al final. Desde aqúı los datos son transmitidos a almacenes auxiliares a través de un sistema computacional [42]. Uno de los principales motivadores para su invención es evitar tener que mantener dos ba- ses de código para el procesamiento en batch y en streamming por separado. Su idea principal es utilizar un único sistema de procesamiento simple para manejar tanto el procesamiento en tiempo real como el reprocesamiento continuo de datos. Como consecuencia, la arquitectura Kappa solo presenta dos capas: stream processing layer y serving layer. La figura 2.9 presenta una perspectiva de esta arquitectura. Figura 2.9: Perspectiva en alto nivel de la arquitectura Kappa. [41] La arquitectura Lambda requiere ejecutar todo el tiempo las dos tareas de procesamiento, en cambio esta arquitectura solo requiere ejecutar una segunda copia del trabajo cuando es requerida. Sin embargo esta arquitectura demanda temporalmente dos veces el espacio de almacenamiento con respecto a la arquitectura Lambda y una base de datos que permita escrituras de grandes volumenes de datos [40]. No obstante, la principal ventaja de esta arquitectura no se trata de eficiencia: el principal beneficio obtenido con este patrón se basa en la posibilidad de ofrecer a los usuarios la capacidad de desarrollar, probar, depurar y operar sus sistemas en lo alto de un framework de procesamiento simple. 2.3. Resumen y discusión. La revisión del conjunto de big data players seleccionados permite identificar en los casos de uso y aplicaciones en los sectores comunes de la industria, las caracteŕısticas y actividades demandadas por la mayoŕıa de los problemas tipos en el dominio del big data. La tabla 2.1 compara los big data players seleccionados que disponen de servicios o pro- ductos que satisfacen necesidades de los mercados o sectores de la industria relacionados a través de casos de uso tradicionales. 22 Caso de uso Amazon IBM Big Data Exploration 7 X Data Warehousing X X Enhanced 360o View of the Customer 7 X Event-driven ETL X 7 On-Demand Big Data Analytics X X Operations Analysis X X Security and risk management X X Smart Applications (predictive capabilities) X X Tabla 2.1: Caracteŕısticas generales de los big data players. Una observación pertinente que debe manifestarse corresponde con una diferencia im- portante en la posición o rol que juegan las más desarrolladas de estas grandes compañ́ıas frente a los problemas en el dominio del big data. Si bien, estas organizaciones cuentan con un grupo de expertos que tienen una gran experiencia en el diseño y solución de sistemas distribuidos que permitan el procesamiento escalable, es claro que su principal interés es construir productos o servicios a problemas comunes para una serie de industria o mercados. Entre tanto, el principal objetivo de este trabajo es apoyar a los arquitectos de compañ́ıas con algún interés en elaborar soluciones in house a problemas o mecanismos que ofrezcan un valor agregado en los procesos de su compañ́ıa. Paralelamente, se descubren las herramientas del ecosistema alrededor de Hadoop que cada una de estas organizaciones dispone en sus propias distribuciones de Hadoop o plata- formas. La tabla 2.2 plantea una comparación de las herramientas alrededor del ecosistema que utilizan un conjunto de las distribuciones asociadas a los big data players seleccionados. 23 Herramienta HDP CDH MapR BiDArch Apache Accumulo X X 7 7 Apache Crunch 7 7 7 X Apache Cascading 7 7 X X Apache Drill 7 7 X 7 Apache Flume X X 7 X Apache HBase X X X X Apache HDFS X X X X Apache Hive X X X X Apache Hue 7 X X 7 Apache Impala 7 X X X Apache Kafka X X X X Apache MapReduce X X X X Apache Oozie X 7 X X Apache Phoenix X 7 7 7 Apache Pig X X X X Apache Solr X 7 7 7 Apache Spark X X X X Apache Sqoop X X X X Apache Storm X 7 X 7 Tabla 2.2: Comparación de herramientas del ecosistema empleadas. Con la exploración de los patrones modelos de arquitectura para la elaboración de sistemas de big data, se identifican caracteŕısticas de diseño que permiten la ejecución de una serie de actividades requeridas por los problemas en el dominio. Finalmente, una observación de una caracteŕıstica vital para el funcionamiento en un ambiente productivo y administrable lo demanda la necesidad de una actividad de orquestado o flujos de trabajo de las otras actividades. La tabla 2.3 presenta una comparación entre los distintos modelos de arquitectura refe- rencia y el patrón de arquitectura propuesto. Actividad Lambda Kappa BiDArch Almacenamiento de datos X X X Ingestión de datos X X X Extracción de datos 7 7 X Procesamiento de datos X X X Consulta de datos X X X Orquestado 7 7 X Tabla 2.3: Comparación de arquitecturas referencias. 24 3 ESTRATEGIA DE SOLUCIÓN: BiDArch, Big Data Architect El propósito del presente proyecto es facilitar el proceso de diseño y arquitectura de solución a instancias de problemas tipo en el dominio del big data. Para conseguir tal propósito se requiere que el framework propuesto soporte con un nivel suficiente de completitud los casos de usos directamente asociados a los problemas tradicionales en el dominio en mención. De manera natural, se requiere de un análisis profundo de los factores y variables intŕınse- cas en los requerimientos que en primer lugar caracterizan una variedad de problemas tipo, y que finalmente hacen posible determinar y ponderar la selección de herramientas en la construcción de patrones de solución. También se necesita representar el conocimiento útil y relevante para el diseño de arquitecturas a estos problemas de una manera expĺıcita, clara y concisa; materializándose en la generación de una combinación apropiada de las herramien- tas en el ecosistema existente alrededor de Hadoop. Las arquitecturas de solución deben ser construidas con base en los requerimientos, factores y variables consideradas en la caracte- rización realizada de un determinado problema de interés y las bondades ofrecidas por las herramientas en el ecosistema. Evidentemente, un análisis profundo de las herramientas más relevantes en el ecosistema es necesario, no solo para identificar los escenarios en las cuales éstas ofrecen las mejores ventajas o garant́ıas sino también aquellos en los cuales no es recomendable utilizarlas. Tal estudio permite conocer cuáles herramientas son compatibles y adaptables entre śı mediante interfaces, aśı como también reconocer cuales pueden ser remplazadas por otras. Adicional- mente, este estudio recopila conceptos relacionados a las herramientas para enriquecerel conocimiento inicial del usuario respecto a los elementos dispuestos en una arquitectura de solución, aśı como también recomendaciones en los parámetros de configuración relevantes que contribuyen en el desempeño de sus soluciones. En la sección 1.3 se describen las caracteŕısticas y requerimientos deseados que se esperan satisfacer con la solución propuesta. En esta sección se presenta el framework BiDArch: Big Data Architect que sigue una estrategia de solución segmentada en las siguientes tres fases: 1. Generación y administración de una ontoloǵıa que describa las herramientas en el eco- sistema. Dicho repositorio de descripción debe permitir la expresividad en la descripción y la computabilidad de cada una de las caracteŕısticas asociadas. 25 2. Caracterización problemas del dominio del big data en términos de las funcionalidades que las herramientas ofrecen. Las caracteŕısticas en cuestión deben ser cuantificables y computables. 3. Construcción de instancias de arquitectura factibles de una solución al problema. Las fases de la estrategia presentadas en la figura 3.1 se encuentran fundamentadas en la interacción de una serie de procesos macro que se apoyan en modelos con distintos niveles de abstracción. Figura 3.1: Fases de la estrategia de solución. En el escenario ligado a la primera fase se identifica la existencia de un actor en rol de administrador. Éste es responsable de construir y mantener la ontoloǵıa que describe las herramientas en el ecosistema. Por lo anterior, es necesario la existencia de un mecanismo online de administración de la ontoloǵıa que encapsula dicho repositorio de descripción, ya que se deben satisfacer algunos requerimientos como: la inclusión de nuevas herramientas, y la extensión y actualización del conocimiento relacionado con las herramientas ya incluidas en el mismo. Teniendo en cuenta que el objetivo principal de este proyecto es la construcción de instancias de arquitecturas de soluciones a problemas en el dominio del big data, se opta por hacer uso de una herramienta ya existente para la generación y edición offline del repositorio. No obstante, debido a la importancia que este mecanismo online representa, se considera su existencia desde el diseño de la estrategia de solución propuesta. En la figura 3.2 se presenta el diagrama de casos de uso asociado a la definición funcional del mismo. La implementación de las funcionalidades de este mecanismo está concebida de manera parcial para un segmento importante de la ontoloǵıa y acorde a los intereses de este proyecto, al no constituir el principal objetivo del mismo. 26 Figura 3.2: Diagrama de casos de uso de la administración del repositorio de BiDArch Finalmente, en el escenario que sintetiza o integra las fases de caracterización de problemas y la construcción de instancias de arquitecturas de solución, se posiciona el usuario final de BiDArch en su rol de arquitecto. Este actor tiene las siguientes responsabilidades: 1. Caracterización del problema. Definir los atributos genéricos o descriptores del problema. Definir los requerimientos generales del problema. Definir las actividades requeridas del problema y sus respectivos requerimientos especiales. 2. Construcción de una instancia de arquitectura de solución. 3. Interacción con una instancia de arquitectura factible. La figura 3.3 sintetiza en un diagrama de casos de uso las responsabilidades del arquitecto de soluciones en las fases de caracterización de un problema y la construcción de una instancia de arquitectura de solución asociada. 27 Figura 3.3: Diagrama de casos de uso de BiDArch. A continuación se detalla cada una de las fases propuestas en términos de los procesos que las determinan y los modelos en los cuales éstos se apoyan. 3.1. Fase 1: Generación de un repositorio de descrip- ción de herramientas. El mecanismo idóneo para materializar el repositorio de descripción de herramientas al- rededor de Hadoop lo constituye el uso de una ontoloǵıa. Con el framework de descripción de recursos RDF (Resource Description Framework) se puede representar cualquier relación entre un par de conceptos del dominio de las herramientas a describir, a través de tripletas de la forma (Sujeto,Relación,Objeto). El framework RDF tiene caracteŕısticas que facilitan la fusión de datos incluso con esquemas subyacentes diferentes y proporciona un modelo estándar para el intercambio de información en la Web [43]. Adicionalmente, al aprovechar las bondades de un motor de inferencia —acoplado a la ontoloǵıa— que utilice los hechos o tripletas dispuestas expĺıcitamente en la ontoloǵıa, se dispone de un nuevo conocimiento —materializado en tripletas deducidas— a partir de reglas de inferencias definidas en el mismo bajo los lineamientos de una serie de axiomas. Es claro que aśı no sólo se ofrece la funcionalidad trivial de persistencia ofrecida por el almacenamiento en un archivo o un sistema de bases de datos relacional, sino por el contrario se dispone de un artefacto versátil que permite aprovechar propiedades intŕınsecas definidas sobre los conceptos y relaciones a modelar como son: la generalización y especialización de conceptos, y las propiedades de simetŕıa, reflexividad y transitividad de las relaciones entre los conceptos. De esta manera se obtiene de manera indirecta un conocimiento o informa- ción adicional. Por ejemplo: al representar expĺıcitamente que un individuo a1 de la clase 28 Actividad depende de otro individuo a2 dela misma clase, y que el individuo a2 depende de la actividad a3. El motor de inferencia o razonador deduce que la actividad a1 también depende de la actividad a3, debido a la propiedad de transitividad otorgada a la relación de dependencia entre un par de individuos de la clase o concepto Actividad. Las relaciones de generalización y especialización plasmado entre los conceptos o clases de la ontoloǵıa representan otro ejemplo de los beneficios de la existencia de un motor de inferencia. Para ilustrar esto se puede considerar que expĺıcitamente en la ontoloǵıa se ha representado: 1. El infividuo f1 corresponde a una instancia de la clase BooleanValueFeature. 2. El individuo f2 corresponde a una instancia de la clase CategoricalValueFeature. 3. La clases o conceptos BooleanValueFeature y CategoricalValueFeature son clases hijas del concepto o clase Feature. Con la serie de condiciones anterior, el razonador infiere de manera indirecta que tanto el individuo f1 y f2 corresponden también a instancias del concepto Feature. Los beneficios ofrecidos por el motor de inferencia van de la mano con la existencia de un lenguaje de consulta del conocimiento representado en tripletas que se encuentra contenido en la ontoloǵıa denominado SPARQL. Este lenguaje ofrece la flexibilidad y versatilidad para lograr el acceso tanto al conocimiento plasmado expĺıcitamente como el generado indirecta- mente por el motor de inferencia de manera transparente. Tras un estudio y análisis profundo de la documentación oficial de una serie de herra- mientas previamente seleccionadas, el proceso de generación de la ontoloǵıa que encapsula el repositorio de descripción de herramientas se apoya en el modelo de herramienta descrito en la sección 3.1.1 con el objetivo de identificar una serie de aspectos que definen a cada uno de los elementos del repositorio en mención descrito en la sección 3.1.2. La figura 3.4 describe gráficamente el proceso para construir el repositorio ontológico de descripción de herramientas: 29 Figura 3.4: Fase de generación del repositorio de BiDArch. A continuacion se define el modelo de herramienta sobre el cual se apoya el proceso y se describe el repositorio de descripción de herramientas producido en esta fase de la estrategia de solución 3.1.1. Modelo de herramienta. Sea h una herramienta en el ecosistema alrededor de Hadoop, h puede modelarse como la n-tupla: h = (A,F, PC,CR, I) (3.1)Donde: A = {ai} es un conjunto de atributos o descriptores la herramienta. La tabla 3.1 presenta los atributos o descriptores ai más relevantes de una herramienta: Atributo Descripción hid Identificador único de la herramienta hname Nombre de la herramienta hurl URL del sitio oficial de la herramienta. hcontext Contexto al que pertenece la herramienta Tabla 3.1: Atributos genéricos de una herramienta. 30 Por ejemplo, para la herramienta Apache Flume [44] se presentan sus descriptores más relevantes en la tabla 3.2 Atributo Descripcion hid 003 hname Apache Flume hurl http://www.wikibooks.org hcontext Ingestión de datos ... ... Tabla 3.2: Atributos genéricos de Apache Flume. F = {f} es el conjunto finito de todos los features o caracteŕısticas f que ofrece la herramienta h. Un feature f de una herramienta es modelado como la pareja ordenada: f = (fname, fvalue) (3.2) Los componentes fname y fvalue corresponden al nombre del feature ofrecido y al valor asociado al nivel de cumplimiento de la caracteŕıstica respectivamente. El dominio de los valores de fvalue puede ser de tipo booleano o categórico (presentándose orden o no entre las categoŕıas según el caso). Por ejemplo, para la herramienta Apache Flume [44] se modelan algunas de sus carac- teŕısticas o funcionalidades principales en la tabla 3.3 Feature Value Feature Richness VERY HIGH Configuration-Based True Reliable True Data transformation True Timeliness of data ingestion Near Real Time Decision Support ... ... Tabla 3.3: Caracteristicas o funcionalidades ofrecidas por Apache Flume. [44] PC = {pc} es un conjunto finito con una serie de propiedades de configuración pc importantes para la futura implementación de la herramienta. Una propiedad de configuración pc es modelada como la tripleta: pc = (pcname, pcdescription, pcsuggestion) (3.3) Los componentes pcname, pcdescription y pcsuggestion de la formula (3.3) corresponden al nombre, descripción y sugerencia recomendada de la propiedad de configuración pc respectivamente. 31 http://www.wikibooks.org Por ejemplo, algunas de las recomendaciones de configuración relacionadas con la he- rramienta Apache Flume [44] se presentan en la tabla 3.4 Property Description Suggestion Sources Batch sizes The number of events in a Flu- me batch can have dramatic ef- fects on performance. Start with 1,000 events in a batch and adjust up or down from there based on performance. Number of sinks More sinks consuming from the same channel will resolve bottle- neck. The limitation with more sinks should be the network or the CPU. Unless you have a really small cluster, HDFS should never be your bottleneck. Sink Batch Sizes It’s therefore important to care- fully tune batch sizes to provide a balance between throughput and potential duplicates. Easy to add a post-processing step to remove duplicate records Flume memory channels. The memory channel’s ability to buffer events in the event of downstream failure is limited. If performance is your primary consideration, and data loss is not an issue, then memory channel is the best option. Flume file chan- nels. Since the file channel persists events to disk, it’s more durable than the memory channel. Configuring a file channel to use multiple disks will help to impro- ve performance. ... ... ... Tabla 3.4: Propiedades de configuración disponibles en Apache Flume [44]. CR = {cr} es un conjunto finito que contiene una serie de conceptos relacionados alrededor de la herramienta. Un concepto relacionado cr es modelado como la pareja ordenada: cr = (crname, crdefinition) (3.4) Los componentes crname y crdefinition corresponden al nombre y la definición del con- cepto relacionado cr respectivamente. A modo de ilustración en la tabla 3.5 se presenta la definición de algunos conceptos de la herramienta Apache Flume. 32 Concepto Definición Source It’s where data is either pushed to Flume or where Flu- me is pulling from another system for data. Channel Flume channels store events until they’re consumed by a sink Sink Sinks are what cause your data to land in its final des- tination Interceptors Java class that allows for in-flight enrichment of event data. ... ... Tabla 3.5: Conceptos relacionados con Apache Flume [44]. I = {i} el conjunto de las interfaces i de la herramienta h que permite su integración con otras herramientas. Una interfaz i es modelada como la pareja ordenada: i = (itype, iname) (3.5) Los componentes itype e iname de la fórmula (3.5)corresponden al tipo de y nombre de la interfaz respectivamente. El dominio de valores del componente itype corresponde al conjunto {in, out} y permite especificar si una interfaz determinada es de entrada o de salida. La tabla 3.6 lista algunas de las interfaces existentes en Apache Flume. Type Interface in Avro in Thrift in JMS in Kafka out HDFS out Hive out HBase ... ... Tabla 3.6: Algunas interfaces de la herramienta Apache Flume [44]. La Figura 3.5 presenta los principales componentes y aspectos considerados en la descrip- ción de una herramienta y su interacción con otras en el ecosistema. 33 Figura 3.5: Modelo de herramienta. 3.1.2. Repositorio ontológico de descripción de herramientas. El conocimiento relacionado con las herramientas en el ecosistema alrededor de Hadoop se encuentra dispuesto en el repositorio ontológico de descripción de herramientas de BiDArch. Dicho conocimiento es modelado a través de una especificación explicita de los conceptos que se encuentran en el dominio de las herramientas del ecosistema haciendo uso de una ontoloǵıa extensible. Las herramientas del ecosistema consideradas en este trabajo se encuentran en uno de los siguientes contextos: modelado y almacenamiento de datos, ingestión y extracción de datos (movimiento de datos), procesamiento de datos y orquestado de flujos de trabajo. Indistinto al contexto, existen una serie de caracteŕısticas generales y comunes a tenerse en cuenta en la descripción de cualquiera de las herramientas en el ecosistema, como por ejemplo: escalabilidad, latencia, usabilidad, etc. También existen algunas caracteŕısticas particulares por herramienta en cada uno de los contextos mencionados, las cuales fundamentalmente se relacionan con la naturaleza del objetivo particular a satisfacerse en cada contexto. Algunas de las principales caracteŕısticas y relaciones modeladas en la ontoloǵıa son lis- tadas a continuación: Herramientas en un contexto. Roles que ocupan herramientas en una arquitectura. Caracteŕısticas clasificables por dominio. • Caracteŕısticas generales de las herramientas. • Caracteŕısticas en un contexto o familia de herramientas. • Caracteŕısticas particulares de herramientas. Caracteŕısticas con un valor con tipo de dato. • Caracteŕısticas con valor booleano. • Caracteŕısticas con valor categórico. 34 Formatos de archivos soportados por las herramientas. Formatos de contenido. Interfaces disponibles en las herramientas. Conceptos relacionados. Recomendaciones de configuración. La selección de herramientas contenidas en el repositorio no pretende ser extensa en anchu- ra con respecto a la enorme y creciente cantidad de herramientas de software libre existentes que guardan relación con Hadoop y su ecosistema, por el contrario se prioriza la profundidad en el estudio de las herramientas más relevantes dentro del ecosistema. En la Tabla 3.7 se lis- tan las herramientas seleccionadas y contenidas en el repositorio descripción de herramientas de BiDArch. Es importante mencionar que la mayoŕıa de estas herramientas corresponden a proyectos de la comunidad de software libre ASF (Apache Software Foundation). Contexto Herramientas Almacenamiento de datos Apache Hadoop HDFS Apache HBase Ingestión de datos Apache Flume Apache Kafka Apache Sqoop Procesamiento de datos Apache Hadoop MapReduce Apache Spark Apache Pig Apache Crunch Apache Cascading Apache Hive Apache Impala Orquestado Apache Oozie Tabla3.7: Herramientas descritas en el repositorio. Esta selección de herramientas es realizada en consideración con los siguientes aspectos: Madurez y estabilidad. Cobertura e integración con el ecosistema. Popularidad comprobable en casos de éxito. La Figura 3.6 muestra los conceptos de alto nivel modelados en la ontoloǵıa más relevantes. Lo anterior con el propósito de presentar una vista parcial del modelo en el que se evidencien las relaciones entre el concepto Tool —que corresponde a las herramientas en el ecosistema— y los diversos conceptos que se relacionan con el concepto Feature —que corresponde a las caracteŕısticas de las herramientas— en una gráfica. 35 Figura 3.6: Vista parcial del modelo de la ontoloǵıa que describe las herramientas. El conocimiento contenido en la ontoloǵıa está en formato RDF y puede ser accedido a través de cualquier endpoint que soporte SPARQL como lenguaje de consulta. 3.2. Fase 2: Caracterización de problema. El objetivo primordial de esta fase de la estrategia de solución propuesta es lograr caracte- rizar adecuadamente cualquier problema que un usuario de BiDArch — en rol de arquitecto— pueda definir en términos de las caracteŕısticas y funcionalidades que ofrecen las herramientas descritas en el repositorio presentado en la sección 3.1.2. En esta fase el proceso de caracteri- zación de un problema utiliza el modelo de problema —el cual se apoya en el modelo de requerimiento genérico — y el repositorio de descripción de herramientas generado en la fase anterior para construir una instancia del problema de interés. La figura 3.7 describe gráficamente esta fase de la estrategia ilustrando la interacción del proceso que la define con los modelos requeridos para la instancia de un problema. 36 Figura 3.7: Fase de caracterización de problemas. A continuación se describen en detalle el par de modelos requeridos y el proceso que construye una instancia de un problema. 3.2.1. Modelo de requerimiento. A continuación se presenta el modelo genérico de requerimiento sobre el cual se apoya el modelo del problema descrito en la sección 3.2.2. Un requerimiento genérico r de un problema puede modelarse como una tripleta com- puesta de: un feature o caracteŕıstica rf , un valor a satisfacer rv y un peso o ponderación rw que permite establecer una relación de orden en la relevancia e importancia con respecto a los demás requerimientos en la lista. Lo anterior puede representarse como una tripleta de la forma: r = (rf , rv, rw) (3.6) El feature requerido rf corresponde a una de las caracteŕısticas o funcionalidades ofrecidas por las herramientas descritas en el repositorio que están definidas en la fórmula (3.2) del modelo de herramientas presentado en la sección 3.1.1. El dominio de los valores de rv puede ser de tipo booleano o categórico (presentándose orden o no entre los valores o categoŕıas según el caso) y se encuentra en función del feature rf que se trate. Por otro lado el valor de rw 37 satisface la restricción rw ∈ {1, 2, 3..,10} y permite incrementar la importancia que presenta un requerimiento con respecto a los demás en el proceso de selección de las herramientas. De esta manera los requerimientos de un problema p en el que se desee resaltar las nece- sidades de riqueza de funcionalidades y alta escalabilidad en contraste con capacidad de cifrado y nivel de soporte de las herramientas, a modo de ilustración, podŕıan ser modelados como se presentan en la tabla 3.8 ri rf rv rw r1 Scalability HIGH 8 r2 Support level MEDIUM 3 r3 Feature richness HIGH 9 r4 Encryption True 4 Tabla 3.8: Ejemplos de requisitos de un problema. 3.2.2. Modelo de problema. Este modelo tiene como propósito realizar la descripción, representación y abstracción de problemas tipos en diversos dominios del big data. Tal caracterización se realiza en función de una base de requerimientos descritos en términos de features o caracteŕısticas propias de estos problemas, y las actividades requeridas que se asocian directamente con los casos de uso que comúnmente tienen las herramientas en el ecosistema. Lo anterior es realizado tras una clasificación adecuada en completitud de los dominios y contextos en los cuales se encuentran los problemas. De manera independiente a la particularidad del problema tipo que se quiera representar, se espera que todos los problemas dentro del espacio de problemas tratables en el domi- nio del big data con las herramientas en el ecosistema Hadoop, puedan ser naturalmente representados bajo el siguiente modelo. Siendo P el espacio de problemas tratables en el dominio del big data con las herramientas del ecosistema, AG el conjunto de atributos genéricos del problema, RG el conjunto de requerimientos generales y AR el conjunto con las actividades requeridas por el problema. Las instancias de problemas son modeladas aśı: P = {p|p = (AG,RG,AR)} (3.7) AG = {ag1, ag2, ag3, ..., agl−1, agl} (3.8) RG = {rg1, rg2, rg3, ..., rgm−1, rgm} (3.9) AR = {ar1, ar2, ar3, ..., arn−1, arn} (3.10) La colección de atributos genéricos AG no es más que un conjunto de descriptores que contienen metadata e información relevante del problema que facilita la identificación, reco- nocimiento y consulta del mismo por parte de los usuarios de BiDArch. Entre estos atributos se destacan: El t́ıtulo del problema. 38 Una descripción general del problema. El dominio en el que se encuentra. El creador de la instancia en cuestión. La fecha de registro de la instancia. En el anexo 8.1 se presenta una tabla con el listado de todos los atributos genéricos disponibles en BiDArch. El conjunto de requerimientos generales RG contiene las necesidades o requisitos rgi que son comunes e independientes a la particularidad de un problema en espećıfico. Este tipo de requerimientos se construyen con base en necesidades transversales a todos los problemas que son en últimas satisfechas por funcionalidades o caracteŕısticas comunes de las herramientas alrededor de Hadoop. Algunas de estas funcionalidades o caracteŕısticas se clasifican en la siguiente lista: Generales: latencia, throughput, escalabilidad, nivel de soporte, facilidad de uso, etc. Desarrollo: costo de desarrollo, personalización, lenguajes de programación disponibles, etc. Rendimiento: performance, consumo de RAM, uso de operaciones de I/O, etc. Recuperación ante fallos: recuperación automática. Seguridad: autenticación, autorización, cifrado, etc. Monitoreo: debugging, profiling, monitoreo y exportación de métricas. El anexo 8.2 presenta una tabla con la relación de las caracteŕısticas apoyadas descritas en el repositorio de BiDArch. Las actividades requeridas por un problema sugieren requerimientos especiales propios a cada una de ellas. Estos se encuentran enmarcados dentro de los casos de uso que normalmente apoyan las herramientas del ecosistema, como son: almacenamiento, movimiento (ingestión y extracción) y procesamiento escalable —en sus múltiples facetas— de grandes volúmenes de datos. Por ejemplo, en el modelado y almacenamiento de los datos existen requerimientos relacionados como son la comprensión, el sharding, la forma de acceso, etc. En cuanto al procesamiento, los requerimientos pueden estar ligados a la naturaleza de la operación a realizar, diferenciándose dentro de estas las labores de ETL y las tareas de consulta de información. Cualquier actividad requerida ari de la colección de actividades AR puede representarse como una pareja ordenada compuesta por una actividad ai directamente relacionada con los casos de usos tradicionales que tienen las herramientas en el ecosistema y un conjunto de requerimientos especiales REi propios de la actividad ai como se modela a continuación: ari = (ai, REi) (3.11) REi = {rej} (3.12) 39 La tabla 3.9 define expĺıcitamente el conjunto de actividades {ai} que son apoyadas por herramientas descritas en el repositorio de BiDArch y se asocian a la serie de
Compartir