El big data, úl­ti­ma­me­n­te en boca de todos, hace re­fe­re­n­cia a ingentes ca­n­ti­da­des de datos en constante cre­ci­mie­n­to. Alrededor del globo las empresas de­sa­rro­llan métodos cada vez más efi­cie­n­tes para registrar sus enormes co­le­c­cio­nes de datos, para al­ma­ce­nar­las en ar­qui­te­c­tu­ras de pro­po­r­cio­nes gi­ga­n­te­s­cas y para pro­ce­sar­las si­s­te­má­ti­ca­me­n­te; las cifras re­su­l­ta­n­tes raramente se en­cue­n­tran por debajo de los petabyte o los exabyte. Esto hace que los procesos de cálculo ya no se puedan ejecutar en un solo sistema, de tal forma que estos análisis de big data precisan una pla­ta­fo­r­ma de software que permita di­s­tri­buir estas complejas tareas de co­mpu­tación en un gran número de nodos. El framework Apache Hadoop, fu­n­da­me­n­to de diversas di­s­tri­bu­cio­nes y suites de big data, re­pre­se­n­ta aquí la mejor solución. A co­n­ti­nua­ción te contamos un poco más.

Private Cloud powered by VMware
Pago por uso y el más alto nivel de seguridad de los datos.

Bajo la división Arsys Cloud Solutions, diseñamos So­lu­cio­nes a tu medida.

¿Qué es Hadoop?

Apache Hadoop es una es­tru­c­tu­ra para co­m­po­ne­n­tes de software diversos basada en Java, que permite fra­g­me­n­tar tareas de cálculo (jobs) en di­fe­re­n­tes procesos y di­s­tri­bui­r­los en los nodos de un clúster de or­de­na­do­res, de forma que puedan trabajar en paralelo. En las ar­qui­te­c­tu­ras Hadoop más grandes pueden usarse incluso varios miles de or­de­na­do­res. La ventaja de este concepto es que a cada ordenador del clúster solo se le ha de pro­po­r­cio­nar una fracción de los recursos de hardware ne­ce­sa­rios. De esta manera, el trabajo con grandes volúmenes de datos no presupone ninguna máquina de última ge­ne­ra­ción, sino que se puede llevar a cabo de forma más rentable con varios se­r­vi­do­res estándar.

Creado por el de­sa­rro­lla­dor Doug Cutting en 2006, el proyecto open source Hadoop tuvo como in­s­pi­ra­ción el algoritmo MapReduce de Google. En 2004, cuando el buscador dio a conocer una te­c­no­lo­gía que soporta la co­mpu­tación paralela de un gran volumen de datos con ayuda de un clúster de or­de­na­do­res, Cutting se dio cuenta del potencial del algoritmo y se puso manos a la obra para de­sa­rro­llar su propio proyecto. El de­sa­rro­lla­dor, que hasta entonces había trabajado para gigantes del sector como Excite, Apple Inc., Xerox o Yahoo y que ya se había creado un nombre gracias a Apache Lucene, recibió el apoyo de esta última empresa. Dos años después, Hadoo logró co­n­ve­r­ti­r­se en el mejor proyecto de la Fundación Apache Software y en 2011 alcanzó el release status 1.0.0.

Junto al la­n­za­mie­n­to oficial de la fundación Apache también existen algunas de­ri­va­cio­nes del framework original ofrecidas como di­s­tri­bu­cio­nes pro­fe­sio­na­les a clientes finales de diversos pro­vee­do­res de software. Un ejemplo lo ilustra Cloudera, la empresa donde hoy puede en­co­n­trar­se a Cutting y que, además de ofrecer soporte para Hadoop, pone a di­s­po­si­ción CDH, una di­s­tri­bu­ción open source  “En­te­r­pri­se ready”. En Ho­r­to­n­wo­r­ks y Teradata se en­cue­n­tran productos parecidos. Microsoft lo ha incluido en su servicio en la nube Azure y también el In­fo­S­phe­re Bi­gI­n­si­ghts de IBM se basa en el proyecto Hadoop de Apache.

Co­m­po­ne­n­tes básicos de la ar­qui­te­c­tu­ra Hadoop

Cuando se habla de Hadoop se hace re­fe­re­n­cia a un paquete muy amplio de software a veces también de­no­mi­na­do eco­si­s­te­ma Hadoop. Este paquete incluye, junto a los co­m­po­ne­n­tes centrales (Core Hadoop), una gran di­ve­r­si­dad de ex­te­n­sio­nes que no solo destacan por sus curiosos nombres (Pig, Chukwa, Oozie o ZooKeeper) sino por ampliar el framework con un gran número de funciones adi­cio­na­les que sirven para la ma­ni­pu­la­ción de extensos grupos de datos. Todos estos proyectos, es­tre­cha­me­n­te vi­n­cu­la­dos entre sí, también son de­sa­rro­lla­dos bajo el techo de la fundación Apache Software.

El fu­n­da­me­n­to del eco­si­s­te­ma Hadoop lo co­n­s­ti­tu­ye el Core Hadoop. Sus co­m­po­ne­n­tes en la primera versión son el módulo básico Hadoop Common, el Hadoop Di­s­tri­bu­ted File System (HDFS) y un motor MapReduce. A partir de la versión 2.3 este último fue su­s­ti­tui­do por la te­c­no­lo­gía de gestión de clústers YARN, también de­no­mi­na­da MapReduce 2.0. Esta técnica excluye el algoritmo MapReduce del sistema de gestión en sí, de forma que a partir de este momento se convierte en un plugin basado en YARN.

Hadoop Common

El módulo Hadoop Common pone a di­s­po­si­ción de todos los demás elementos del framework un set de funciones básicas, entre las cuales se en­cue­n­tran los archivos .jar de Java ne­ce­sa­rios para iniciar Hadoop, las bi­blio­te­cas para la se­ria­li­za­ción de datos así como las in­te­r­fa­ces para el acceso al sistema de archivos de la ar­qui­te­c­tu­ra Hadoop y la llamada a pro­ce­di­mie­n­to remoto (remote procedure call o RPC) para la co­mu­ni­ca­ción entre clientes dentro de un clúster. Además, el módulo también contiene el código fuente, la do­cu­me­n­ta­ción del proyecto e in­fo­r­ma­ción sobre otros proyectos de la comunidad Hadoop.

Hadoop Di­s­tri­bu­ted File System (HDFS)

El sistema de archivos di­s­tri­bui­do de Hadoop consiste en un sistema de ficheros de alta di­s­po­ni­bi­li­dad para el al­ma­ce­na­mie­n­to de un gran volumen de datos en un clúster de or­de­na­do­res, encargado del ma­n­te­ni­mie­n­to de los datos dentro del framework. Para ello, los archivos se fra­g­me­n­tan en bloques de datos y se di­s­tri­bu­yen re­pli­ca­dos en varios nodos sin seguir ningún esquema. Según los propios de­sa­rro­lla­do­res, HDFS es capaz de gestionar ca­n­ti­da­des de datos en la escala de los petabytes. Es posible co­n­fi­gu­rar in­di­vi­dua­l­me­n­te tanto la longitud de los bloques de datos como el grado de la re­du­n­da­n­cia.

El clúster de Hadoop funciona bá­si­ca­me­n­te según el principio maestro-esclavo, de tal forma que la ar­qui­te­c­tu­ra del framework de software consta de un nodo maestro al cual se su­bo­r­di­nan una variedad de nodos esclavos. Este principio también se ve reflejado en la co­n­s­tru­c­ción del HDFS, co­n­si­s­te­n­te en un namenode (nodo de nombres) y varios datanodes (nodos de datos) su­bo­r­di­na­dos. El nodo de nombres ad­mi­ni­s­tra todos los metadatos del sistema de archivos, la es­tru­c­tu­ra de ficheros y los archivos. El al­ma­ce­na­mie­n­to en sí de los datos se produce en los nodos de datos. Para minimizar la pérdida de datos, los archivos se fra­g­me­n­tan en bloques y se depositan re­pli­ca­dos en di­fe­re­n­tes nodos. De forma pre­de­te­r­mi­na­da, se realizan tres copias de cada bloque.

Cada datanode envía un signo vital al namenode en periodos regulares, el llamado heartbeat (latido). Si no se produce esta señal, el namenode declara a este esclavo como “muerto” y se ocupa, con ayuda de las copias di­s­po­ni­bles en otros nodos, de que, a pesar de esta caída, existan en el clúster su­fi­cie­n­tes copias del bloque en cuestión. El namenode tiene, por esto, una función principal dentro del framework. Para que este no se convierta en el único re­s­po­n­sa­ble o “single point of failure”, es habitual nombrarle un “asistente”, el secondary name node, que registra todos los cambios en relación con los metadatos y permite de esta manera una re­cu­pe­ra­ción de la entidad de control central.

El HDFS amplió en el paso de Hadoop 1 a Hadoop 2 con sistemas de seguridad adi­cio­na­les: namenode HA (High Avai­la­bi­li­ty, alta di­s­po­ni­bi­li­dad) completa el sistema con una pro­te­c­ción au­to­má­ti­ca ante caídas, gracias a la cual se inicia un co­m­po­ne­n­te de su­s­ti­tu­ción en el caso de una caída del namenode. Además, la función Snapshot permite re­s­ta­ble­cer un estado anterior del sistema. La extensión Fe­de­ra­tion permite ejecutar varios namenodes dentro de un clúster.

MapReduce Engine

Otro co­m­po­ne­n­te fu­n­da­me­n­tal del Core Hadoop es el algoritmo MapReduce de­sa­rro­lla­do por Google, que en la primera versión de Hadoop aún estaba im­ple­me­n­ta­do como motor autónomo. La tarea central de esta máquina es la gestión de los recursos así como el control y el se­gui­mie­n­to de los procesos de cálculo (job sche­du­li­ng/mo­ni­to­ri­ng). El pro­ce­sa­mie­n­to de los datos se basa ese­n­cia­l­me­n­te en las fases “Map” y “Reduce” y se realiza di­re­c­ta­me­n­te en el lugar donde se depositan (data locality). Esto acelera el tiempo de cálculo y reduce el tráfico en la red.

En la fase Map los procesos de cálculo se dividen en porciones que se denominan jobs (tareas) y que un jo­b­tra­c­ker (ra­s­trea­dor de trabajos) en el nodo maestro di­s­tri­bu­ye en varios sistemas-esclavo dentro del clúster. Los de­no­mi­na­dos ta­s­k­tra­c­ker (ra­s­trea­do­res de tareas) se encargan de que estas tareas o procesos trabajen en paralelo. En la co­n­si­guie­n­te fase Reduce el motor recoge los re­su­l­ta­dos parciales y elabora un resultado global.

Mientras que el nodo maestro alberga por lo general los co­m­po­ne­n­tes namenode y jo­b­tra­c­ker, en cada esclavo trabaja un datanode y un ta­s­k­tra­c­ker. La siguiente imagen muestra una ar­qui­te­c­tu­ra Hadoop básica tal como funciona en la primera versión del framework, dividida en una capa MapReduce y una capa HDFS.

El la­n­za­mie­n­to de la version 2.3 de Hadoop significó la re­ela­bo­ra­ción completa del motor MapReduce, que dio como resultado la te­c­no­lo­gía de ad­mi­ni­s­tra­ción de clústeres YARN/MapReduce 2.0, que separa la gestión de recursos y la ad­mi­ni­s­tra­ción de tareas (job sche­du­li­ng / mo­ni­to­ri­ng) propia de MapReduce, abriendo el framework a nuevos modelos de pro­ce­sa­mie­n­to y a una amplia paleta de apli­ca­cio­nes para big data.

YARN/MapReduce 2.0

La llegada del módulo YARN („Yet Another Resource Ne­go­tia­tor“) en la versión 2.3 cambia fu­n­da­me­n­ta­l­me­n­te la ar­qui­te­c­tu­ra de Hadoop, razón por la cual suele hablarse de una tra­n­si­ción de Hadoop 1 a Hadoop 2. Mientras que Hadoop 1 ofrece MapReduce a sus usuarios solo como apli­ca­ción, el desacople de la gestión de recursos y la gestión de tareas del modelo de pro­ce­sa­mie­n­to de datos permite integrar una gran variedad de apli­ca­cio­nes para big data en el framework. Como co­n­se­cue­n­cia, con Hadoop 2 MapReduce se convierte una más entre otras apli­ca­cio­nes que se pueden usar para acceder a los datos eje­cu­ta­bles en el framework. De esta forma, ya no es posible definir a Hadoop ex­clu­si­va­me­n­te como un entorno de ejecución para MapReduce. En su lugar, YARN toma el papel de un sistema operativo di­s­tri­bui­do para la gestión de recursos para apli­ca­cio­nes para  big data.

Las mo­di­fi­ca­cio­nes fu­n­da­me­n­ta­les de la ar­qui­te­c­tu­ra Hadoop afectan sobre todo a los dos ra­s­trea­do­res del motor MapReduce, que en Hadoop 2 ya no existen como co­m­po­ne­n­tes in­de­pe­n­die­n­tes. El módulo YARN apuesta, en su lugar, por tres entidades nuevas: el re­sou­r­ce­ma­na­ger o gestor de recursos, el no­de­ma­na­ger o gestor de nodos y el ap­pli­ca­tio­n­ma­s­ter o maestro de apli­ca­cio­nes.

  • Re­sou­r­ce­ma­na­ger: El gestor global de recursos actúa como la más alta autoridad (maestro) en la ar­qui­te­c­tu­ra Hadoop, bajo el cual se alinean diversos no­de­ma­na­ger (esclavos). Tiene la misión de ad­mi­ni­s­trar el clúster, orquestar el reparto de los recursos en los no­de­ma­na­ger su­bo­r­di­na­dos y di­s­tri­buir las apli­ca­cio­nes. El gestor de recursos sabe en todo momento dónde se en­cue­n­tran los distintos sistemas esclavo en el clúster y qué recursos se les pueden poner a di­s­po­si­ción. Un co­m­po­ne­n­te im­po­r­ta­n­te del gestor de recursos es el re­sou­r­ce­s­che­du­ler, que decide cómo se di­s­tri­bu­yen los recursos di­s­po­ni­bles en el clúster.
  • No­de­ma­na­ger: en cada nodo del clúster trabaja un de­no­mi­na­do no­de­ma­na­ger que actúa en la posición de esclavo en la in­frae­s­tru­c­tu­ra de Hadoop 2 re­ci­bie­n­do las órdenes del re­sou­r­ce­ma­na­ger. Cuando en un nodo se inicia un gestor de nodos, este informa al gestor de recursos y le envía un heartbeat periódico. Cada no­de­ma­na­ger es re­s­po­n­sa­ble de los recursos de su nodo y pone una parte de ellos a di­s­po­si­ción del clúster. El re­sou­r­ce­s­che­du­ler del gestor de recursos indica la forma como se han de usar los recursos en el clúster.
  • Ap­pli­ca­tio­n­ma­s­ter: en un sistema YARN, cada nodo contiene un ap­pli­ca­tio­n­ma­s­ter que solicita recursos del re­sou­r­ce­ma­na­ger y del no­de­ma­na­ger y los recibe en forma de co­n­te­ne­do­res. El maestro de apli­ca­cio­nes ejecuta y controla las apli­ca­cio­nes para big data que estos contienen.

Esta imagen muestra una re­pre­se­n­ta­ción es­que­má­ti­ca de la ar­qui­te­c­tu­ra Hadoop 2:

Cuando se ha de ejecutar una apli­ca­ción en Hadoop 2 pa­r­ti­ci­pan fu­n­da­me­n­ta­l­me­n­te tres actores:

  • Un cliente,
  • el resource manager y
  • uno o varios node manager

En un primer paso, el cliente ordena al gestor de recursos iniciar una apli­ca­ción en el clúster, el cual reserva en co­n­se­cue­n­cia un co­n­te­ne­dor -reserva recursos del clúster para la apli­ca­ción- y contacta a un node manager para que inicie el co­n­te­ne­dor y ejecute en él un ap­pli­ca­tion master, re­s­po­n­sa­ble, a su vez, de ejecutar y su­pe­r­vi­sar la apli­ca­ción.

El eco­si­s­te­ma Hadoop: elementos op­cio­na­les de am­plia­ción

Junto a los co­m­po­ne­n­tes centrales, el eco­si­s­te­ma Hadoop también incluye algunas ex­te­n­sio­nes de­sa­rro­lla­das en proyectos separados y que co­n­tri­bu­yen de forma fu­n­da­me­n­tal a la fu­n­cio­na­li­dad y la fle­xi­bi­li­dad del framework de software. Debido al código abierto y a in­nu­me­ra­bles in­te­r­fa­ces, estos co­m­po­ne­n­tes op­cio­na­les se pueden combinar a voluntad con las funciones nucleares. En la siguiente lista en­cue­n­tras una selección de los proyectos más populares del eco­si­s­te­ma Hadoop:

  • Ambari:el proyecto Ambari de Apache fue iniciado por el di­s­tri­bui­dor de Hadoop Ho­r­to­wo­r­ks y completa el eco­si­s­te­ma con una he­rra­mie­n­ta de in­s­ta­la­ción y gestión que agiliza de forma co­n­si­de­ra­ble el “apro­vi­sio­na­mie­n­to” (puesta a di­s­po­si­ción de recursos in­fo­r­má­ti­cos), así como la ad­mi­ni­s­tra­ción y el se­gui­mie­n­to de co­m­po­ne­n­tes Hadoop. Además, también ofrece un asistente step by step para la in­s­ta­la­ción de servicios Hadoop en un número ar­bi­tra­rio de or­de­na­do­res incluidos en el clúster, así como una función de ad­mi­ni­s­tra­ción con la cual es posible iniciar, in­te­rru­m­pir o co­n­fi­gu­rar sistemas de forma central. Una interfaz de usuario gráfica informa al usuario del estado del sistema. Con el Ambari Metrics System y el Ambari Alert Framework, Ambari permite registrar métricas y co­n­fi­gu­rar niveles de alarma.
  • Avro: se trata de un sistema para la se­ria­li­za­ción de datos. Avro recurre a JSON para definir tipos de datos y pro­to­co­los. Los datos se se­ria­li­zan en un formato binario compacto, el cual funciona como formato de tra­n­s­fe­re­n­cia de datos para la co­mu­ni­ca­ción entre los distintos nodos de Hadoop, así como entre los servicios de Hadoop y los programas cliente.
  • Cassandra:Apache Cassandra es un sistema di­s­tri­bui­do de gestión de bases de datos escrito en Java para grandes co­le­c­cio­nes es­tru­c­tu­ra­das de datos que siguen un supuesto no re­la­cio­nal. En este sentido se las denomina también bases de datos NoSQL. El objetivo de este sistema open source, de­sa­rro­lla­do en un principio por Facebook, es ga­ra­n­ti­zar una alta es­ca­la­bi­li­dad y seguridad ante caídas en grandes ar­qui­te­c­tu­ras di­s­tri­bui­das. El depósito de datos se produce sobre la base de re­la­cio­nes clave-valor.
  • HBase: también en este caso se trata de una base de datos NoSQL de código abierto que permite acceso de escritura y de lectura en tiempo real a grandes conjuntos de datos en un clúster de or­de­na­do­res. HBase se apoya en BigTable, el sistema de base de datos de alto re­n­di­mie­n­to de­sa­rro­lla­do por Google. En co­m­pa­ra­ción con otras bases de datos NoSQL, HBase se ca­ra­c­te­ri­za por una alta co­n­si­s­te­n­cia de datos.
  • Chukwa: en este caso estamos ante un sistema de recolecta y análisis de datos basado en HDFS y MapReduce, que permite el se­gui­mie­n­to en tiempo real y el análisis de datos en grandes sistemas di­s­tri­bui­dos. Para ello, Chukwa se construye sobre agentes fu­n­cio­na­n­do en cada uno de los nodos que se han de su­pe­r­vi­sar, re­co­le­c­ta­n­do los archivos de registro de las apli­ca­cio­nes eje­cu­ta­das en él. Estos archivos se envían a los llamados co­lle­c­to­rs y se almacenan en el HDFS.
  • Flume: este es un servicio también concebido para re­co­le­c­tar, agregar y mover archivos de registro. Para tra­n­s­mi­tir datos de fuentes di­fe­re­n­tes al HDFS para su al­ma­ce­na­mie­n­to o su análisis, Flume utiliza formatos de tra­n­s­po­r­te como Apache Thrift o Avro.
  • Pig: Pig es una pla­ta­fo­r­ma para el análisis de datos ingentes que pone a di­s­po­si­ción de los usuarios de Hadoop el lenguaje de pro­gra­ma­ción de alto nivel Pig Latin. Este permite describir el flujo de datos de tareas de MapReduce en un nivel abstracto. De esta forma, las pe­ti­cio­nes en el marco de MapReduce ya no se crean en Java sino en el lenguaje Pig Latin, mucho más eficiente, lo que si­m­pli­fi­ca de forma co­n­si­de­ra­ble la ad­mi­ni­s­tra­ción de tareas en MapReduce. Esto permite, por ejemplo, entender mejor la ejecución paralela de análisis complejos. Pig Latin fue de­sa­rro­lla­do ini­cia­l­me­n­te por Yahoo y el nombre se refiere al supuesto que da sentido al software: como cualquier “omnívoro”, Pig está ca­pa­ci­ta­do para procesar todo tipo de datos, es­tru­c­tu­ra­dos, no es­tru­c­tu­ra­dos o re­la­cio­na­les.
  • Hive: con Apache Hive, Hadoop se co­m­ple­me­n­ta con un de­no­mi­na­do almacén de datos o data warehouse, una base de datos central op­ti­mi­za­da para realizar análisis. De­sa­rro­lla­do por Facebook, el software se basa en el framework MapReduce. Con HiveQL Hive cuenta con una sintaxis similar a SQL que permite solicitar, agrupar o analizar datos al­ma­ce­na­dos en el HDFS. Para ello, Hive traduce las pe­ti­cio­nes de tipo SQL en tareas de MapReduce au­to­má­ti­ca­me­n­te.
  • HCatalog: elemento fu­n­da­me­n­tal de Apache Hive, se trata de un sistema de gestión de metadatos y tablas que permite almacenar y procesar datos in­de­pe­n­die­n­te­me­n­te de su formato o es­tru­c­tu­ra. HCatalog describe para ello la es­tru­c­tu­ra de los datos, fa­ci­li­ta­n­do de esta manera su uti­li­za­ción con Hive o Pig.
  • Mahout: este proyecto extiende el eco­si­s­te­ma Hadoop con bi­blio­te­cas Java am­plia­bles para apli­ca­cio­nes de data mining y apli­ca­cio­nes ma­te­má­ti­cas para el apre­n­di­za­je mecánico. Aquellos al­go­ri­t­mos que se pueden im­ple­me­n­tar con Mahout en Hadoop permiten ope­ra­cio­nes como cla­si­fi­ca­ción, clu­s­te­ri­ng y filtrado co­la­bo­ra­ti­vo. En la práctica, Mahou se utiliza, por ejemplo, en el de­sa­rro­llo de servicios de re­co­me­n­da­cio­nes (“Los clientes que compraron este artículo compraron también este otro”).
  • Oozie: este co­m­po­ne­n­te opcional permite construir cadenas de procesos, au­to­ma­ti­zar­los y programar su ejecución. De esta forma Oozie compensa el déficit del motor MapReduce propio de Hadoop 1, que no permite generar de­pe­n­de­n­cias entre tareas en la co­n­fi­gu­ra­ción básica.
  • Sqoop: Sqoop es un elemento de software que facilita la im­po­r­ta­ción y la ex­po­r­ta­ción de grandes ca­n­ti­da­des de datos entre Hadoop y las unidades de memoria es­tru­c­tu­ra­das. Hoy en día las empresas suelen guardar su in­fo­r­ma­ción en bases de datos re­la­cio­na­les. Sqoop pe­r­mi­ti­ría un in­te­r­ca­m­bio eficaz entre estos sistemas de al­ma­ce­na­mie­n­to y el clúster de or­de­na­do­res.
  • ZooKeeper: por último, este proyecto ofrece servicios para coordinar procesos en el clúster di­s­po­nie­n­do funciones de al­ma­ce­na­mie­n­to, di­s­tri­bu­ción y ac­tua­li­za­ción de datos de co­n­fi­gu­ra­ción.

Hadoop en la empresa

Este framework disfruta de una gran po­pu­la­ri­dad en numerosas compañías debido a que con Hadoop se pueden im­ple­me­n­tar los clústeres para el pro­ce­sa­mie­n­to de grandes co­le­c­cio­nes de datos con or­de­na­do­res estándar. Entre los usuarios más conocidos de Hadoop se en­cue­n­tran Adobe, AOL, eBay, Facebook, Google, IBM, LinkedIn, Twitter o Yahoo. Además de la po­si­bi­li­dad de almacenar datos en ar­qui­te­c­tu­ras di­s­tri­bui­das sin ninguna di­fi­cu­l­tad y de pro­ce­sar­las en paralelo, otras cua­li­da­des muy estimadas de este software de código abierto son su es­ta­bi­li­dad, sus opciones de am­plia­ción y el gran número de funciones.

Ir al menú principal