EVOLUCIÓN DE LOS ENTORNOS BIG DATA Y LOS RETOS PARA EL ARQUITECTO DE DATOS

CARLOS GONZÁLEZ CANTALAPIEDRA Big Data Architect EVERLYN VERGARA SOLER Big Data Consultant

Cuando se habla de entornos y aplicaciones Big Data, a menudo nos referimos a Hadoop (1). Se trata de una pieza fundamental en la evolución e implantación de este tipo de tecnologías en el entorno empresarial, pero si nos refiriésemos aBig Data como algo exclusivamente refe- rente a Hadoop, nos estaríamos equivocando.

Hadoop fue creado por Doug Cutting para com- HADOOP, UNA PIEZA CLAVE EN EL ORIGEN DEL ECOSISTE- plementar la distribución Nutch, su motor de bús- MA BIG DATA queda basado en en el año 2004. La primera versión de Hadoop estaba compuesta por En ese mismo año, Google publica su paper (2) dos componentes principales: sobre MapReduce. Google empezaba a tener problemas para poder indexar la web al ritmo al –– HDFS: sistema de archivos distribuidos que permite que ésta iba creciendo y necesitaba encontrar de forma transparente a los desarrolladores alma- una solución para poder acometer el problema. cenar un archivo de datos en diferentes máquinas Esta solución se basaba en un sistema de archivos de un cluster de Hadoop. Cada fichero que se distribuidos, que le proporcionaba la capacidad almacena en HDFS se divide en bloques de un de poder procesar en paralelo grandes cantida- tamaño definido y es cada uno de estos bloques des de información. La solución al problema es lo que se replica en diferentes nodos del cluster. simple, pero a la vez brillante, ya que el sistema –– MapReduce: framework de desarrollo que per- era capaz de distribuir la información a procesar mite a los desarrolladores ejecutar procesos en en diferentes ordenadores que actuaban de for- paralelo dentro de un cluster de Hadoop abstra- ma independiente cada uno de ellos, pero a la yendo la complejidad de dicho procesamiento vez formaban parte de un todo. en paralelo. En el año 2006, Google publica los detalles so- Una de las principales características de Hadoop que bre la tecnología que había desarrollado y esta es ha hecho que la tecnología se expanda es que puede acogida con gran interés por la comunidad Open ejecutarse sobre lo que se denomina «commodity hard- Source, que en septiembre del año 2007 libera la ware», es decir, máquinas baratas. Si a esto sumamos primera versión de Hadoop bajo licencia Apache. que Hadoop es Open Source, parece que es la combi-

405 >Ei 21 C. GONZÁLEZ CANTALAPIEDRA / E. VERGARA SOLER

FIGURA 1 ARQUITECTURA YARN

Fuente: https://www.edureka.co/blog/introduction-to-hadoop- 2-0-and-advantages-of-hadoop-2-0/ nación perfecta para procesar grandes cantidades de Todos estos nuevos productos nacen cada uno de información a un coste asumible para las empresas. ellos con un propósito muy concreto dentro del ecosis- tema. Por ejemplo, Apache nace con el propó- Una vez que la primera versión de Hadoop fue libera- sito de poder comunicar dos mundos muy distintos: las da, numerosas empresas empezaron a vislumbrar los tradicionales bases de datos relacionales con Hadoop. beneficios del uso de esta tecnología. Facebook es Sqoop permite leer datos desde una base de datos re- una de estas primeras empresas que ven el beneficio lacional y escribir dichos datos en HDFS para que pos- en el uso de la tecnología, ya que en el año 2008 (3) teriormente sean procesados por otros productos del se generan cantidades ingentes de información debi- ecosistema. Y también permite la comunicación en el do a las decenas de millones de usuarios que tiene sentido contrario, leyendo datos de HDFS y escribiendo la plataforma y a más del billón de páginas visitadas dichos datos en bases de datos relacionales. diariamente. Facebook necesita almacenar esta in- formación para posteriormente analizarla y ver cómo Otro ejemplo es , que permite la defini- mejorar la experiencia del usuario. Facebook empie- ción de flujos de trabajo, pudiendo estar escritos cada za a utilizar el paradigma de programación MapRe- uno de ellos basándose en frameworks o productos duce y desarrolla un framework para poder ejecutar diferentes. De esta manera, podemos definir en un sentencias SQL sobre datos que residen en HDFS. Este solo flujo la lectura de datos con Apache Sqoop desde framework será liberado a la comunidad Open Source una base de datos relacional, procesarlos con Apa- posteriormente con el nombre de Hive (4). che Hive, y posteriormente construir un job con (9) para escribir los resultados del proceso en una A partir de este momento, grandes compañías empie- base de datos NoSQL como (10). zan a hacer un uso intensivo de esta tecnología y a participar como contribuidores del core de Hadoop. La mayoría de estos productos tienen dependencias Compañías como Facebook, eBay, IBM o Linkedin se con e incluso entre ellos mismos, de convierten en contribuidores con más de 200.000 lí- manera que cuando el ecosistema comienza a cre- neas de código. cer, la configuración de estas dependencias entre los distintos componentes añade un grado más de difi- cultad en la instalación y mantenimiento de las plata- LAS DISTRIBUCIONES COMO PARTE DE LA EVOLUCIÓN formas. DEL ECOSISTEMA BIG DATA Para reducir esta complejidad surgen nuevos actores En paralelo al desarrollo y evolución de Hadoop, em- alrededor del ecosistema Hadoop. Empresas como pieza a crearse un ecosistema de productos que se Cloudera (11) o Hortonworks (12) nacen con el propósi- van desarrollando en paralelo. , Apache to de crear distribuciones empaquetadas que faciliten Pig (5), Apache Zookeeper (6), Apache Sqoop (7) o la instalación, configuración y monitorización declus - Apache Oozie (8) son algunos ejemplos claros de ters Hadoop y empiezan a incluir dentro de dichas dis- cómo este ecosistema va creciendo y enriqueciendo tribuciones más productos del ecosistema que facilitan el uso de la plataforma. el almacenamiento y procesamiento de datos.

22 405 >Ei EVOLUCIÓN DE LOS ENTORNOS BIG DATA Y LOS RETOS PARA EL ARQUITECTO DE DATOS

y de la complejidad de los algoritmos), ven reducido FIGURA 2 drásticamente su tiempo de ejecución al utilizar este APACHE HADOOP VS APACHE SPARK nuevo framework. Por ejemplo, un algoritmo de regre- sión lógica basado en Apache Hadoop y posterior- mente basado en Apache Spark, arroja la compara- tiva en tiempos de ejecución que muestra la Figura 2.

Aparte de la velocidad, Apache Spark aporta una ventaja muy importante desde el punto de vista de un desarrollador de software. Cualquier desarrollador que haya trabajado con el framework MapReduce de Hadoop sabe que es complejo, y la llegada de Apache Spark aporta mayor facilidad en el desarrollo de aplicaciones de este tipo. Esta facilidad viene dada porque Spark provee diferentes APIs para Scala, Java y Python que abstraen al desarrollador de la compleji- Fuente: http://spark.apache.org/images/logistic-regression.png dad a la que estaban acostumbrados al trabajar con el framework MapReduce. Y esto se traduce también En enero de 2012 se produce un hito importante den- en velocidad a la hora de construir aplicaciones. tro de Hadoop. Se libera YARN (Yet Another Resource Negotiator) también conocido como MapReduce v2. Uno de los puntos fuertes de Spark es su librería de strea- YARN es una evolución de MapReduce y su propósito ming o real time. Hay que puntualizar que sería más es desacoplar la gestión de los recursos de la planifi- adecuado hablar de «near real time», ya que Apache cación de las tareas. Por un lado, el ResourceManager Spark no proporciona verdadero tiempo real debido a se encarga de la gestión de los recursos a nivel global la manera que gestiona la consumición de eventos o dentro del cluster y el ApplicationMaster se encarga de información en «tiempo real», ya que realmente lo que la planificación de las tareas por cada una de las apli- hace Apache Spark es la ejecución de procesos deno- caciones que se ejecutan dentro del cluster. La Figura minados micro batch. Estos procesos micro batch es- 1 ilustra la arquitectura de YARN. tán constantemente en ejecución y leen información de la fuente cada un periodo de tiempo establecido A partir de este momento e impulsado en gran me- (en el caso de Apache Spark, un periodo mínimo de dida por las distribuciones de Cloudera y Hortonworks, 0.5 segundos). el ecosistema de productos y las integraciones con entornos Hadoop crece de forma exponencial en el Uno de los grandes aciertos de Apache Spark es su ámbito empresarial. versatilidad para poder ejecutarse sobre distintas pla- taformas, entre ellas YARN. En el momento en el que En este momento, Hadoop era un framework para aparece Apache Spark, muchas de las grandes em- realizar procesamiento de datos en batch, no forma- presas que han empezado a tener plataformas Big ba parte aún de este ecosistema una solución para el Data, basan dichas plataformas en clusters Hadoop. procesamiento de datos en real time o near real time. Al poder ejecutar Spark sobre YARN, las empresas no tienen que desprenderse de sus clusters Hadoop (y de APACHE SPARK Y PROCESAMIENTO EN NEAR REAL TIME las aplicaciones que se ejecutan sobre estos clusters), es más, lo ven como un nuevo elemento complemen- Apache Spark es un framework open source que tario y que les abre un nuevo abanico de posibilidades, permite el análisis de datos de forma distribuida y en sobre todo la posibilidad de procesar información en memoria. La llegada de Apache Spark aporta al eco- near real time, algo de lo que Hadoop carece de for- sistema Big Data capacidades de procesamiento de ma nativa. datos que hasta ese momento se podían conseguir combinando diferentes componentes, y no posible en La aparición de este tipo de frameworks -Apache todos los casos. Spark provee librerías para el procesa- Storm (13), Apache Spark, (14) o Apa- miento de datos en near real time (Spark Streaming), che Apex (15)- que permiten procesar información en machine learning (Spark MLlib), grafos (GraphX) y SQL tiempo real deriva en nuevos modelos de arquitectura, (SQL y DataFrames). como por ejemplo la arquitectura Lambda (16). Pero aparte de todos estos módulos, Apache Spark aporta velocidad en el procesamiento de datos con ARQUITECTURAS LAMBDA respecto al framework MapReduce de Apache Ha- doop. Esto conlleva a que muchas organizaciones Una arquitectura Lambda está compuesta desde el comiencen a desarrollar sus aplicaciones sobre este punto de vista lógico por tres elementos principales: framework, ya que las ventajas son obvias respecto a una capa batch, una capa de real time y una capa otros productos que existen en el mercado. Los Jobs de serving. La Figura 3 muestra desde un punto de basados en MapReduce, que podían durar horas o in- vista lógico dichas capas. cluso días (dependiendo del volumen de datos a tratar

405 >Ei 23 C. GONZÁLEZ CANTALAPIEDRA / E. VERGARA SOLER

FIGURA 3 ARQUITECTURA LAMBDA

Fuente: http://lambda-architecture.net/img/la-overview_small.png

La capa batch y la capa de real time son comple- cluster añadiendo nuevas instancias de Spark de forma mentarias, es decir, podemos procesar datos en automatizada, el proceso comienza a complicarse. real time y enriquecer con datos calculados en la Es en este momento dónde el rol de un arquitecto Big capa batch los datos que vamos procesando de Data pasa a ser determinante porque la selección de la manera continua. plataforma sobre la que vamos a desplegar y ejecutar nuestra aplicación, es uno de los puntos fundamentales Este tipo de arquitecturas hacen que la «clásica» ar- a la hora de diseñar nuestra nueva arquitectura. quitectura de clusters basados en Hadoop ya no sea tan necesaria para ejecutar este tipo de aplicacio- Desde el punto de vista de arquitectura, tenemos que nes. Si profundizamos un poco más, si nuestra pla- buscar una plataforma que nos proporcione «capa- taforma no tiene ninguna necesidad de una capa cidades de escalabilidad horizontal, monitorización, batch, ¿para qué necesitamos Hadoop? scheduling de tareas, recuperación automática de errores», etc. Si además la plataforma que seleccio- En efecto, si lo único que queremos hacer es proce- nemos es capaz de abstraernos de los recursos físicos sar datos en tiempo real (esto es lo se denomina una (el hardware propiamente dicho) tales como memoria arquitectura Kappa [17]) no necesitamos un cluster RAM, CPU y disco sería un punto a favor, ya que ve- de Hadoop. Entonces, si no tenemos un cluster de ríamos la plataforma de ejecución como un pool de Hadoop y estamos desarrollando por ejemplo nues- recursos, no como un conjunto de máquinas. tra plataforma basada en Apache Spark: ¿sobre qué ejecutamos Spark?; ¿cómo podemos conseguir esca- labilidad horizontal?; ¿cómo automatizamos tareas de , UNA NUEVA PIEZA EN EL ECOSISTEMA monitorización?. BIG DATA

En el caso de Apache Spark, tendríamos dos opciones El nacimiento de Apache Mesos (18) se remonta al sin un cluster de Hadoop (en realidad para Spark ne- año 2011 (19) como una evolución de Nexus, un pro- cesitaríamos YARN como hemos comentado en líneas yecto de investigación que estaba llevando a cabo anteriores): instalamos un cluster de Apache Spark la universidad de Berkeley. Apache Mesos se define (modo standalone) y lo gestionamos nosotros mismos como «a distributed systems kernel», proporcionando o utilizamos otro tipo de plataforma. una abstracción de los recursos físicos subyacentes de los recursos que serán asignados a nuestras apli- «Configurar, desplegar, monitorizar, securizar o escalar» caciones. Sus principales características son las si- un cluster de Apache Spark puede llegar a ser un pro- guientes: ceso complejo. Si por ejemplo necesitamos en un mo- mento dado añadir más capacidad de proceso a ese –– Escalabilidad hasta 10.000 nodos.

24 405 >Ei EVOLUCIÓN DE LOS ENTORNOS BIG DATA Y LOS RETOS PARA EL ARQUITECTO DE DATOS

FIGURA 4 ARQUITECTURA DE APACHE MESOS

Fuente: http://mesos.apache.org/assets/img/documentation/architecture3.jpgg

–– Desarrollo de frameworks en diferentes lenguajes de tres o cuatro años y en la mayoría de los casos de programación. supusieron una fuerte inversión para dichas empre- sas. La migración de sus plataformas Big Data a –– Soporte a contenedores Docker (20). una tecnología como Apache Mesos supone asu- mir nuevas inversiones cuando, en muchos de los –– Aislamiento de recursos entre los diferentes proce- casos, todavía no han amortizado la anterior. sos que se ejecutan dentro del cluster.

–– Frameworks disponibles. NUEVOS MODELOS DE NEGOCIO Y SERVICIOS PARA –– Alta disponibilidad de los componentes principa- SOLUCIONES BIG DATA les: masters y slaves. En los últimos años han aparecido nuevos tipos de ser- La Figura 4 ilustra de forma gráfica la arquitectura de vicios en el mercado, especializados en proporcionar Apache Mesos. Big Data de una forma integral, en cloud. Es lo que se denomina «Big Data as a Service» (BDaaS). Seleccionando un producto como Apache Mesos como la base de nuestra arquitectura tendremos nue- Este tipo de plataformas integran en un solo servicio lo vas capacidades desde el punto de vista del desplie- que conocemos como PaaS (Platform as a service), gue y la ejecución de nuestras aplicaciones, pero no SaaS (Software as a service) e IaaS (Infraestructure as hay que perder de vista los problemas que podríamos a service).: encontrar, si hablamos del mercado español: –– PaaS (Platform as a service): Proporciona la plata- • La falta de personal especializado en este tipo de forma Big Data. plataformas. Actualmente es muy difícil encontrar –– SaaS (Software as a service): Es el software que se en España profesionales que tengan el cono- encargará de interactuar con el PaaS. cimiento y la experiencia práctica en el diseño, construcción, instalación y explotación de este –– IaaS (Infraestructure as a service): Nos proporciona tipo de plataformas. el hardware que soportará nuestro PaaS e IaaS.

• La mayoría de empresas que ya tienen algún tipo Las principales ventajas de utilizar una plataforma de plataforma Big Data (bancos, telecos y ase- BDaaS son las siguientes: guradoras fundamentalmente) y están obtenien- do valor de sus datos, basan sus plataformas en 1. Proporciona garantías en el nivel de servicio (SLAs): Apache Hadoop. Estas plataformas no tienen más soporte por personal técnico altamente cualifica-

405 >Ei 25 C. GONZÁLEZ CANTALAPIEDRA / E. VERGARA SOLER

FIGURA 5 BIGDATA LANDSCAPE 2016

Fuente: http://mattturck.com/wp-content/uploads/2016/01/matt_turck_big_data_landscape_full.png

do, monitorización del servicio, actualizaciones de tura se encuentran ante un reto apasionante. Dado el la tecnología y seguridad a nivel de plataforma. actual landscape (24) de productos Big Data, una de- cisión errónea puede suponer que en el corto o medio 2. Escalabilidad y alta disponibilidad de la platafor- plazo la arquitectura no sea la adecuada para los re- ma asegurando la continuidad del servicio. querimientos iniciales, con las repercusiones en coste e impacto en el nivel de servicio que esto tendría. Empresas como Doopex (21) (empresa española pio- nera en este tipo de plataformas en Europa), Qubole La Figura 5 muestra las plataformas, frameworks, apli- (22) o Cazena (23) son un ejemplo claro de la expan- caciones, productos de analítica, machine learning, sión de este tipo de tecnologías cloud. visualización, etc. que podemos seleccionar para di- señar nuestra arquitectura. Como se puede observar, CLAVES PARA AFRONTAR EL RETO DEL DISEÑO DE LA AR- el abanico de posibilidades es inmenso. QUITECTURA BIG DATA El caso de negocio tomado como ejemplo requiere que, Vamos a suponer un caso de negocio muy extendido a nivel arquitectura, demos respuesta a dos aspectos: y conocido por todos: una empresa de eCommerce, • Disponer de un «repositorio» donde se almacena- con un gran número de clientes y que vende produc- rán las compras que realizan los clientes. tos a través de una plataforma web. • Utilizar un componente que sea capaz de monito- Se prevé que la plataforma tendrá un elevado volu- rizar la navegación del usuario por la web, identifi- men de transacciones, con múltiples formatos de en- car los productos que consulta/compra y en ofre- trada y requerimientos de procesamiento en tiempo cerle recomendaciones en «tiempo real» lo más real. Los conocidos retos del Big Data para todos, las ajustadas posible a sus gustos. tres V: Velocidad, Volumen y Variedad. Una «arquitectura Lambda» parece muy adecuada Esta plataforma tiene dos requerimientos funcionales para soportar nuestro caso de uso, ya que la capa que impactan en la toma de decisión de la arquitec- batch será la encargada de procesar toda la informa- tura a implementar: ción histórica de compras que tenemos almacenada –– La recomendación de productos en tiempo real. y la capa de real time procesará en tiempo real la navegación del usuario y podrá ofrecerle sugerencias –– Predecir nuevas tendencias de consumo. de compra de productos.

Si nos ceñimos exclusivamente al ámbito técnico, los Una vez que se ha decidido a alto nivel cual va a ser el arquitectos que tienen que diseñar la nueva arquitec- modelo de arquitectura, hay que seleccionar las tec-

26 405 >Ei EVOLUCIÓN DE LOS ENTORNOS BIG DATA Y LOS RETOS PARA EL ARQUITECTO DE DATOS

nologías e infraestructuras que serán la base del nuevo Una vez seleccionado el producto donde se va a sistema. almacenar la información, se debe seleccionar un framework o producto que sea capaz de conectar- Una importante decisión a tomar es si el nuevo sistema se a HDFS, leer la información y procesarla. En este va a residir en un data center de la compañía (on-pre- punto, el abanico de posibilidades es enorme (Spark, mise) o se desplegará en la nube (cloud). Hive, Flink, MapReduce, Impala (25), etc.), así como los factores a analizar para tomar la decisión (tiempos La decisión sobre si elegir el data center de la com- de respuestas, conectores disponibles para herramien- pañía o la nube, dependerá en gran medida de la tas de visualización, la compatibilidad de las versiones, estrategia a nivel de IT de la compañía. Cada vez más etc.) Se podría incluso, en función de la complejidad, compañías seleccionan la nube para desplegar sus llegar a seleccionar más de un producto que realice sistemas, pero todavía existe cierta reticencia en el en- el procesamiento de información en esta capa de la torno empresarial para desplegar sus sistemas fuera de arquitectura. sus instalaciones. Fundamentalmente, estas decisiones se argumentan en base a la creencia de que el cloud El objetivo final es obtener valor de nuestros datos, no es seguro o sobre el desconocimiento acerca de aplicando por ejemplo algoritmos de machine lear- dónde se encuentran almacenados realmente sus ning sobre ellos. También tenemos que tener en datos. Actualmente hay proveedores de cloud que cuenta la velocidad de proceso que, aunque sean ofrecen un nivel de servicio y garantizan un nivel de se- procesos batch, tampoco queremos que éstos tar- guridad igual o mejor que el que muchas compañías den días o semanas en procesar la información. To- pueden permitirse. mando los dos puntos anteriores como variables de entrada para nuestra decisión, más el requerimiento Una vez decidido dónde se desplegará la infraestructu- de que los productos seleccionados tienen que ser ra del nuevo sistema, comienza el verdadero reto para open source, ya podemos realizar una selección un arquitecto Big Data: definir la tecnología que va a inicial de frameworks y productos con los que em- soportar la arquitectura Lambda antes seleccionada. pezar. Como se ha mostrado anteriormente en la Figura 5, la La selección inicial debe tener en cuenta, además de variedad de productos actualmente disponibles en el la propia funcionalidad que nos proporciona, aspectos mercado para diseñar e implementar una plataforma como: Big Data es muy amplia y variada, por lo que la selección de los componentes requiere por parte del profesional • Cuáles son los líderes del mercado. experiencia, análisis y conocimiento de las tecnologías que se van a seleccionar para la plataforma sobre la • Lo maduro que es el producto. que el nuevo sistema se va a desplegar y ejecutar. • La comunidad de desarrolladores y el soporte que El diseño de la capa batch y en concreto del com- tiene el producto. ponente que se va a encargar de almacenar todos los datos históricos es el primer paso. Hemos indicado • Opciones de seguridad. que se prevé gestionar un elevado volumen de datos • El roadmap de cada producto (evolución de sus y además, realizaremos la ingesta de información des- versiones). de diferentes fuentes. En este punto, para el caso práctico que nos ocupa, El repositorio (sistema de ficheros distribuidos) que se se decide seleccionar Apache Spark y Apache Flink, ha seleccionado para almacenar el master dataset es para la capa pura de proceso. También vamos a HDFS, ya que proporcionará la redundancia necesaria evaluar Apache Hive como framework que nos va a para asegurar que no se pierde ni un byte de informa- permitir crear una estructura de datos que podría ser ción en caso de que se produzca un fallo en alguno explotada desde otros productos o sistemas externos a de los nodos. Otra de las razones para seleccionar nuestra arquitectura. HDFS como repositorio, es la escalabilidad. La primera recomendación es comenzar realizando En un principio se debe realizar una estimación tan- diferentes pruebas de concepto con ambos produc- to del número de nodos donde se instalará el HDFS, tos, para evaluar cuál es el que mejor se adapta a las como del espacio en disco que se va a necesitar, pero necesidades planteadas. Además de los propios algo- el producto seleccionado tiene que ser lo suficiente- ritmos que el equipo de desarrollo va a implementar, mente flexible como para añadir más capacidad en hay que tener en cuenta la escalabilidad, la recupera- cualquier momento, sin interrupciones del servicio que ción del sistema cuando se produzca un fallo, la mo- se esté prestando. nitorización y las diferentes formas de despliegue de A día de hoy, la selección de HDFS como repositorio ambos. donde almacenar el master dataset es una de las más En esta fase, todavía no se ha decidido cuál va a ser la sencillas, ya que no hay muchas más alternativas en el plataforma sobre la que se va a desplegar y ejecutar la universo Big Data y el funcionamiento del mismo, des- arquitectura Lambda, pero teniendo en cuenta el re- de el punto de vista de rendimiento y escalabilidad, es querimiento previo de que la plataforma tiene que ser aceptable.

405 >Ei 27 C. GONZÁLEZ CANTALAPIEDRA / E. VERGARA SOLER

open source, podemos reducir el número de opciones 99 Hortonworks: fundada en el año 2011 por inge- a dos: utilizar un cluster de Apache Hadoop o utilizar un nieros de Yahoo, es la única distribución donde cluster de Apache Mesos. Esta es una decisión clave todos sus componentes son puro open source. en el proceso y ambas tienen sus pros y sus contras: Esto significa que, en teoría, podemos sustituir cualquiera de los componentes que empaqueta Apache Hadoop: si decidimos utilizar un cluster de Apa- por versiones más modernas o incluso modificar che Hadoop, significa que tanto Apache Spark como cierto código fuente de alguno de esos compo- Apache Flink van a ser ejecutados sobre YARN. Pero a nentes en el caso de que fuera necesario, algo su vez, llegados a este punto, también tenemos dos que desde mi punto de vista no deberíamos rea- opciones: podemos decidir utilizar alguna de las distri- lizar a no ser que fuera algo realmente necesario, buciones que existen en el mercado o instalar nosotros ya que, si lo hacemos, cuando actualicemos de mismos un cluster de Hadoop sin utilizar una distribución. versión, perderemos las modificaciones que he- mos realizado. Las distribuciones de Hadoop líderes del mercado en estos momentos son Cloudera, Hortonworks y MapR (26). La otra opción que tenemos es contribuir a la co- munidad con dichas modificaciones o nuevas fun- Las distribuciones de Apache Hadoop han contribuido cionalidades, y de esa manera, dentro de futuras en gran medida a la expansión del Big Data en las em- versiones, nuestra contribución puede beneficiar a presas. La razón es sencilla: estas distribuciones son un toda la comunidad (además de a nuestro propio empaquetado de Hadoop más numerosos productos sistema). La versión actual de Hortonworks es la 2.5 del ecosistema Big Data (Apache Hive, Apache Oozie, (HDP 2.5), que entre otros componentes, empaque- (27), etc.) y proporcionan facilidades ta (29) Apache Hadoop 2.7, Apache Spark 1.6 y 2.0 en la instalación, configuración y monitorización de (2.0 en modo experimental, lo cual significa que no dichos clusters. es production-ready), Apache Falcon 0.10.0, Apa- Parece claro que la utilización de una distribución de che Oozie 4.2.0, Apache Ranger 0.6.0 o Apache Hadoop puede ahorrarnos mucho tiempo en la ins- Hive 1.2.1. Al igual que sucedía con Cloudera, te- talación y configuración de la plataforma, y cuando nemos que tener en cuenta las versiones de Spark nuestro sistema se encuentre en producción, nos pro- que incluye la distribución y que Apache Flink no está porcionarán funcionalidades de monitorización. En incluida todavía. este punto, la idea de instalar nosotros mismos un clus- No existe una distribución mejor que otra, todo depen- ter de Apache Hadoop queda descartada, ya que de de los requerimientos que tengamos. Si la estrate- implicaría mucho más esfuerzo y no obtendríamos gia IT de nuestra compañía es utilizar productos puro ningún beneficio claro. open source, Hortonworks debería ser nuestra elección. Se ha descartar MapR ya que no incluye HDFS como A diferencia de Cloudera, Hortonworks (HDP) solamente parte de sus componentes. En lugar de HDFS, MapR tiene una distribución, que simplemente la podemos incluye su propio sistema de ficheros denominado descargar de su web y comenzar con su instalación y MapRFS, que proporciona un mejor rendimiento que configuración. Hortonworks proporciona diferentes ser- HDFS, pero por el contrario es un sistema propietario y vicios de soporte de pago, pero es algo totalmente no open source. opcional.

Vamos a analizar las dos distribuciones de Hadoop Por el contrario, Cloudera (CDH) ofrece diferentes dis- candidatas a ser la base de nuestra plataforma: tribuciones. La versión Community es completamente gratuita, pero tiene varias restricciones, como por ejem- 99 Cloudera: fue fundada en el año 2008 por inge- plo la administración de varios clusters de Hadoop, nieros procedentes de Facebook, Google, Ora- que con esta versión no es posible realizarlo, además cle y Yahoo, y la primera empresa en ofrecer un de algunas restricciones en cuanto a la seguridad. La producto que empaquetaba Hadoop como una versión Enterprise si incluye la administración y sincroni- distribución. El core de la distribución es Apache zación de diferentes clusters además de la integración Hadoop, pero Cloudera ha desarrollado sus pro- con varios sistemas de seguridad. pios componentes, como por ejemplo Cloudera Manager, que permite la instalación y configu- Nuestra arquitectura debe asegurar la continuidad del ración de la plataforma desde una interfaz web. servicio en el caso de que nuestra instalación tenga Actualmente es la distribución que más clientes algún tipo de problema que le impida proporcionar el poseen (alrededor de 350) y es muy utilizada, servicio o incluso que el data center donde se encuen- por ejemplo, en el sector bancario español. La tre desplegada caiga por completo. versión 5.9 (28) es la actual distribución de la pla- Nuestra empresa de ejemplo tiene dos data centers, taforma, incluyendo Hadoop 2.6, Spark 1.6, Apa- uno principal y otro de respaldo (disaster recovery). En che Hive 1.1.0, Apache Oozie 4.1.0 o Apache este caso nuestra arquitectura deberá contemplar dos Sqoop 1.4.6. Si nos decidimos a utilizar Cloudera instalaciones diferentes, una que va a ser el despliegue (en su versión community), tenemos que tener en activo y otra que será desplegada en el data center cuenta que la versión de Spark es la 1.6 y que no de respaldo en modo stand-by. incluye Apache Flink.

28 405 >Ei EVOLUCIÓN DE LOS ENTORNOS BIG DATA Y LOS RETOS PARA EL ARQUITECTO DE DATOS

En este punto, la versión Community de Cloudera Por el contrario, Apache Spark es uno de los frameworks no cumpliría nuestros requisitos, y para lograr que los que prácticamente desde el principio están incluidos cumpliera, deberemos realizar desarrollos propios para en los que soporta Mesos. Aunque todavía no hemos mantener en sincronización ambos clusters (sobre todo hablado del resto de las capas de nuestra arquitectu- en lo que a la sincronización de los datos residentes en ra Lambda (speed layer y serving layer), tenemos que HDFS se requiere). empezar a pensar en ambas, ya que, si disponemos de una arquitectura base que soporte todos los compo- Si por el contrario optamos por utilizar Hortonworks, este nentes que ambas capas van a necesitar, sería un pun- problema lo tendríamos resuelto con alguno de los pro- to a su favor, sobre todo porque desplegaremos en un ductos que incluye la distribución (Apache Falcon [30]). único entorno, lo que facilitará enormemente la forma Desde el punto de vista de administración, ambas dis- en la que se despliegan nuestros componentes y ten- tribuciones ofrecen una consola de gestión del cluster. dremos que monitorizar y administrar un único entorno.

En el caso de Cloudera, disponemos de Cloudera Otra de las ventajas que ofrece Mesos, es ser soporte Manager, que es un producto muy maduro y que nativo a contenedores Docker. Docker es un producto proporciona toda la funcionalidad que podemos que permite crear imágenes de software muy ligeras necesitar para la administración y configuración del y portables que pueden ser ejecutadas en cualquier cluster. En el caso de Hortonworks, sistema operativo con Docker instalado, independien- (31) ha sido el producto incluido en la distribución temente del sistema operativo que nuestras máquinas para llevar a cabo estas tareas. Si comparamos tengan por debajo, facilitando enormemente los des- Cloudera Manager con Apache Ambari, Cloudera pliegues de los mismos. Otra ventaja de Docker es que Manager sería el vencedor por su madurez y su fa- los contenedores son autosuficientes. Esto quiere decir cilidad de uso. que el contenedor contiene todo el software necesario que necesita nuestra aplicación, que puede ir desde Utilizando cualquiera de las dos distribuciones, pode- el propio sistema operativo hasta por ejemplo la versión mos tener básicamente dos problemas: específica de Java que necesitemos.

1. Si nos decidimos Apache Spark, tendremos que Esto significa que si por ejemplo decidimos utilizar Apa- ceñirnos a las versiones que proporcionan las distri- che Spark 2.1 (última versión de Spark) porque incluye buciones. Podríamos incluir versiones superiores que mejoras significativas desde el punto de vista del ren- ya existen en el mercado, pero no tendría dema- dimiento y en los algoritmos de machine learning que siado sentido empezar a reemplazar componen- proporciona su módulo MLLib con respecto a la versión tes con el riego que conlleva en futuras actualiza- 1.6.x, con Docker sería posible, ya que desplegaríamos ciones de la distribución. los contenedores Docker que fuera necesarios sobre Mesos todos ellos con la versión de Spark que nece- 2. Si por el contrario nos decidimos por Apache sitamos. Flink, tenemos un problema mayor. Ninguna de las distribuciones incluye este framework. Otro punto a favor sobre la utilización de Mesos es la Podríamos realizar la integración, pero en escalabilidad. Cuando desplegamos una aplicación este caso no nos estaríamos aprovechando sobre Mesos, tenemos la facilidad de asignar de forma de las facilidades de administración y con- dinámica los recursos que nuestro software necesita in- figuración que nos proporcionan las distribu- dependientemente del hardware subyacente. Mesos ciones. nos abstrae del hardware sobre el que nuestro softwa- re se ejecuta. Desde el punto de vista de nuestras apli- 3. La introducción de cualquiera de las dos dis- caciones solamente tenemos que indicar cuánta me- tribuciones significa que en dicha plataforma moria, cuánta CPU y disco requiere nuestra aplicación, solamente vamos a poder desplegar y ejecu- olvidándonos de si por debajo hay cinco o cincuenta tar aplicaciones Big Data. Esto significa que los servidores físicos. Mesos se va a encargar de propor- administradores tendrán que operar con un cionarnos los recursos que estamos solicitando, y en nuevo sistema en la compañía. el caso de que el cluster no los tenga disponibles, nos dejará en una cola esperando que los recursos solici- Los tres problemas anteriores pueden solventarse utili- tados sean liberados para que los podamos ejecutar. zando otro tipo de plataforma, Apache Mesos. Otra de las ventajas de Mesos sobre una distribución Apache Mesos nos proporciona la suficiente flexibili- de Hadoop, es la ejecución de otro tipo que aplica- dad como para poder desplegar sobre el casi cual- ciones que no son Big Data. Sobre Mesos podemos quier componente. Digo casi, porque por ejemplo la ejecutar bases de datos NoSQL (Apache Cassandra actual versión de Apache Flink no dispone de soporte por ejemplo), arquitecturas basadas en microservicios para poder ejecutarse sobre Mesos. En el roadmap que se basan en AKKA (33) o en Spring Boot (34) o por de Apache Flink ya está contemplado el soporte so- ejemplo un cluster de Elasticsearch (35). bre Mesos [32], pero si tuviéramos que poner hoy un sistema basado en Apache Flink sobre un cluster de Esto significa que podemos tener una plataforma úni- Apache Mesos con soporte nativo, dicho despliegue ca para la ejecución, despliegue y monitorización de se convertiría en una ardua tarea. la mayor parte de las aplicaciones y sistemas de nues-

405 >Ei 29 C. GONZÁLEZ CANTALAPIEDRA / E. VERGARA SOLER

tra empresa. Esto se traduce directamente en el ahorro baja latencia en la consumición de los datos por parte de costes, uniformidad en el despliegue, empaque- de los consumidores de los mismos, lo que en gran tado de nuestras aplicaciones y monitorización de un medida nos facilita el procesado de información en único sistema. tiempo real. La escalabilidad de Apache Kafka permi- te a empresas como Netflix procesar 700 billones de Una vez que hemos diseñado nuestra capa batch y mensajes diarios (36) llegando a perder solamente un hemos seleccionado Mesos como plataforma de eje- 0,01% de dichos mensajes, lo cual es algo realmente cución sobre la que instalar la solución y ejecutar las impresionante y nos proporciona una visión de la esca- aplicaciones, tenemos que comenzar el diseño de la labilidad y rendimiento que podemos llegar a alcanzar capa de procesado de información en tiempo real utilizando este tipo de tecnología. (también denominada capa de streaming). Una vez que hemos seleccionado nuestros frameworks Cuando hablamos de «tiempo real», tenemos que de referencia para la capa batch y la capa de tener cuidado con lo que significa este término. Por streaming o real time, debemos definir lo que se de- ejemplo, si la base tecnológica de esta capa de la nomina «Serving Layer». Esta capa de la arquitectura arquitectura la basamos en Apache Spark, sería más nos va a proporcionar los repositorios donde vamos a adecuado hablar de «near real time», ya que Apache almacenar tanto los datos que procesamos desde la Spark no proporciona verdadero tiempo real debido a capa batch como la información que procesamos la manera en que gestiona la consumición de eventos en tiempo real. Dependiendo del tipo de casos de o información en «tiempo real», pues lo que realmente uso que estemos implementando, la capa de real hace Apache Spark es ejecutar procesos denomina- time podría no necesitar un repositorio de información dos micro batch. Estos procesos micro batch están donde almacenar el resultado del proceso, escribien- constantemente en ejecución y leen información de la do directamente en un broker de mensajería el resul- fuente cada un periodo de tiempo establecido (en el tado de dicho proceso para que fuera consumido caso de Apache Spark, un periodo mínimo de 0,5 se- por otro sistema de nuestra compañía. gundos). Si nuestros requerimientos son de verdad real time, tendremos que buscar otro tipo de framework Desde el punto de vista de la capa batch, tenemos que nos proporcione la consumición de información disponibles en el mercado diferentes productos open en streaming, sin demora en el consumo de la infor- source donde almacenaremos el resultado de nues- mación, incluso siendo esta demora de tan solo me- tros procesos batch. Desde el punto de vista lógico dio segundo. Para estos casos, tendríamos que utilizar es lo que denominamos «batch views». Estas «batch un framework como Apache Flink, o views» contendrán vistas con información procesada, Apache Apex, todos ellos bajo el paraguas de Apa- lista para ser consumida desde sistemas externos a che al igual que Spark. La principal diferencia desde el nuestra arquitectura o desde la propia capa de tiem- punto de vista de la pura consumición de información po real para enriquecer la información que estamos en streming entre estos frameworks y Apache Spark, consumiendo en streaming. es que la información se consume de manera cons- tante, sin interrupciones como en el caso de Apache El catálogo de productos open source que podemos Spark. Pero si medio segundo es un valor aceptable en utilizar dentro de esta capa de nuestra arquitectura es la consumición de la información que vamos a pro- enorme. Productos como Apache HBase (37), Apache cesar, Apache Spark es hoy por hoy el framework de Cassandra o MongoDB (38) son solamente alguno de referencia para utilizar en esta capa de la arquitectura. los productos open source que existen en el mercado y que podemos utilizar dependiendo del caso de uso Hemos hablado de la consumición de información en o incluso podemos utilizar la combinación de varios de tiempo real, pero esa información tiene que estar al- ellos dentro de esta capa. macenada en algún sitio para poder ser consumida con baja latencia. Es lo que conocemos como bus de datos o brokers de mensajería. CONCLUSIONES: EL MERCADO ESPAÑOL Y LOS ENTORNOS DE EJECUCIÓN PARA APLICACIONES BIG DATA Un broker de mensajería es un sistema de almacena- miento que es muy rápido, tanto en escrituras como La estrategia empresarial (39) alrededor del dato por en lecturas, y permite la comunicación entre diferentes parte de las compañías españolas está tomando im- sistemas manteniendo un flujo de datos continuado pulso en los últimos años. entre los sistemas que escriben (denominados publi- cadores) y los sistemas que leen y procesa dichos da- Sectores como el financiero, teleco o los seguros llevan tos (denominados subscriptores). Hay un producto en ventaja en España, pero para todos los sectores, aún la el mercado por encima de todos los demás cuando gestión y análisis de grandes volúmenes de datos sigue hablamos de este tipo de tecnologías: Apache Kafka. suponiendo un gran reto.

Apache Kafka es un sistema de almacenamiento que Para integrar estas tecnologías, las compañías espa- sigue el patrón publicador/subscriptor que fue desarro- ñolas deben introducir cambios a dos niveles: llado originalmente por LinkedIn y posteriormente do- • Organizativo: creando nuevos departamentos y nado a la comunidad convirtiéndose en open source. unidades de negocio. Como principales características podemos destacar la

30 405 >Ei EVOLUCIÓN DE LOS ENTORNOS BIG DATA Y LOS RETOS PARA EL ARQUITECTO DE DATOS

• Técnico: Introducción de nuevas tecnologías en la [12] Hortonworks https://es.hortonworks.com/ empresa, lo que implica la contratación o forma- [13] Apache Storm http://storm.apache.org/ ción de personal especializado. [10] Apache Flink https://flink.apache.org/ [15] Apache Apex https://apex.apache.org/ Una compañía que decida comenzar el diseño y la [16] Lambda Architecture http://lambda-architecture.net/ construcción de una plataforma que sea capaz de [17] Kappa Architecture http://milinda.pathirage.org/ka- procesar en tiempo real información para realizar co- ppa-architecture.com/ municaciones relevantes a sus clientes, necesitaría: [18] Apache Mesos http://mesos.apache.org/ [19] Apache Mesos Paper https://people.eecs.berkeley. –– Arquitectos Big Data, personal que sea capaz de edu/~alig/papers/mesos.pdf instalar la plataforma, la explotación de la misma. [20] Docker https://www.docker.com/ –– Programadores que sean capaces de construirla, [21] Doopex Big Data as a Service https://doopex.com/ actualmente un programador en España que ten- [22] Qubole Cloud Data Platform https://www.qubole.com/ ga experiencia real con Apache Spark y que sepa [23] Cazena http://www.cazena.com/ programar en Scala, es un recurso muy escaso. [24] Big Data Landscape 2016 http://mattturck.com/ wp-content/uploads/2016/01/matt_turck_big_data_ –– Profesionales con la formación y experiencia prác- landscape_full.png tica en la dirección y gestión de proyectos con [25] https://impala.incubator.apache.org/ tecnologías Big Data. [26] Mapr Converged Data Platform https://www.mapr.com/ [27] Apache Kafka https://kafka.apache.org/ Todo este personal antes mencionado es escaso en [28] Cloudera 5.9.x Packaging and Tarball Information ht- el mercado español y de encontrarlo, tiene un coste tps://www.cloudera.com/documentation/enterprise/ muy elevado. release-notes/topics/cdh_vd_cdh_package_tarba- ll_59.html#topic_3 Todo lo anterior son factores a tener muy en cuenta [29] Hortonworks 2.5.3 Components version https://docs. cuando la organización decide que el tratamiento de hortonworks.com/HDPDocuments/HDP2/HDP-2.5.3/ grandes cantidades de información va a formar parte bk_release-notes/content/ch_relnotes_v253.html de su estrategia empresarial. [30] Apache Falcon https://falcon.apache.org/index.html En apartados anteriores se ha descrito desde un punto [31] Apache Ambari https://ambari.apache.org/ de vista técnico y a alto nivel, los desafíos a los que un [32] Flink and Apache mesos support https://ci.apache.org/ arquitecto de datos se enfrenta a la hora de diseñar projects/flink/flink-docs-release-1.2/setup/mesos.html una arquitectura Big Data y se ha intentado, a través [33] Akka http://akka.io/ de un ejemplo práctico, trasladar los retos que plantea [34] Spring Boot https://projects.spring.io/spring-boot/ la rápida evolución del mercado con las múltiples op- [35] Elasticsearch https://www.elastic.co/ ciones en cuanto a la tecnología sobre la que vamos [36] NetflixKafka Inside Keystone Pipeline http://techblog.ne- a basar nuestro diseño. tflix.com/2016/04/kafka-inside-keystone-pipeline.html [37] Apache HBase https://hbase.apache.org/ Como conclusión, resultado de la experiencia prác- [38] MongoDB https://www.mongodb.com/ tica, sólo cabe sugerir prestar especial atención a la [39] Big Data, asignatura obligada en la estrategia empre- hora de seleccionar los componentes y la integración sarial http://www.datacentermarket.es/tendencias-tic/ entre los mismos cuando se acometa nuestro diseño, noticias/1094612032809/big-data-asignatura-obliga- ya que una mala decisión de arquitectura puede lle- da-en-la-estrategia-empresarial.1.html varnos a que nuestra plataforma no sea capaz de es- calar y evolucionar al ritmo que nuestra compañía nos exija.

NOTAS

[1] Apache Hadoop http://hadoop.apache.org/ [2] Google MapReduce paper https://static.googleuser- content.com/media/research.google.com/es/archi- ve/mapreduce-osdi04.pdf [3] Facebook Hadoop https://www.facebook.com/notes/ facebook-engineering/hadoop/16121578919 [4] Apache Hive https://hive.apache.org/ [5] https://pig.apache.org/ [6] Apache Zookepeer https://zookeeper.apache.org/ [7] Apache Sqoop http://sqoop.apache.org/ [8] Apache Oozie http://oozie.apache.org/ [9] Apache Spark http://spark.apache.org/ [10] Apache Cassandra http://cassandra.apache.org/ [11] Cloudera https://www.cloudera.com/

405 >Ei 31