Articulo de referencia

computación intensiva en datos

La computación intensiva en datos es una clase de aplicaciones de computación paralela que utilizan un enfoque de procesamiento paralelo de datos para procesar grandes volúmenes...

La computación intensiva en datos es una clase de aplicaciones de computación paralela que utilizan un enfoque de procesamiento paralelo de datos para procesar grandes volúmenes de datos, generalmente del orden de terabytes o petabytes , y que se conocen comúnmente como big data . Las aplicaciones de computación que dedican la mayor parte de su tiempo de ejecución a los requisitos computacionales se consideran de computación intensiva, mientras que las aplicaciones se consideran de datos intensivos si requieren grandes volúmenes de datos y dedican la mayor parte de su tiempo de procesamiento a la entrada/salida y manipulación de datos. [ 1 ]

Introducción

El rápido crecimiento de Internet y la World Wide Web generó enormes cantidades de información disponible en línea. Además, las organizaciones empresariales y gubernamentales crean grandes cantidades de información , tanto estructurada como no estructurada, que necesita ser procesada, analizada y vinculada. Vinton Cerf describió esto como una “avalancha de información” y afirmó: “debemos aprovechar la energía de Internet antes de que la información que ha liberado nos sepulte”. [ 2 ] Un informe técnico de IDC, patrocinado por EMC Corporation, estimó la cantidad de información almacenada en formato digital en 2007 en 281 exabytes y la tasa de crecimiento compuesto general en un 57%, con información en las organizaciones creciendo a un ritmo aún mayor. [ 3 ] En un estudio de 2003 sobre la llamada explosión de la información, se estimó que el 95% de toda la información actual existe en formato no estructurado, con mayores requisitos de procesamiento de datos en comparación con la información estructurada. [ 4 ] El almacenamiento, la gestión, el acceso y el procesamiento de esta vasta cantidad de datos representan una necesidad fundamental y un desafío inmenso para satisfacer las necesidades de búsqueda, análisis, extracción y visualización de estos datos como información. [ 5 ] La computación intensiva en datos está destinada a abordar esta necesidad.

Los enfoques de procesamiento paralelo se pueden clasificar generalmente como intensivos en cómputo o intensivos en datos . [ 6 ] [ 7 ] [ 8 ] El término intensivo en cómputo se utiliza para describir programas de aplicación que están limitados por el cómputo. Dichas aplicaciones dedican la mayor parte de su tiempo de ejecución a los requisitos computacionales en lugar de a la E/S, y normalmente requieren pequeños volúmenes de datos. El procesamiento paralelo de aplicaciones intensivas en cómputo generalmente implica paralelizar algoritmos individuales dentro de un proceso de aplicación y descomponer el proceso general de la aplicación en tareas separadas, que luego se pueden ejecutar en paralelo en una plataforma de computación apropiada para lograr un rendimiento general más alto que el procesamiento en serie. En las aplicaciones intensivas en cómputo, se realizan múltiples operaciones simultáneamente, y cada operación aborda una parte particular del problema. Esto a menudo se denomina paralelismo de tareas .

El término "intensivo en datos" se utiliza para describir aplicaciones que dependen de operaciones de entrada/salida (E/S) o que necesitan procesar grandes volúmenes de datos. [ 9 ] Estas aplicaciones dedican la mayor parte de su tiempo de procesamiento a las operaciones de E/S, así como al movimiento y la manipulación de datos. El procesamiento paralelo de aplicaciones intensivas en datos generalmente implica particionar o subdividir los datos en múltiples segmentos que pueden procesarse de forma independiente utilizando el mismo programa ejecutable en paralelo en una plataforma informática adecuada, para luego reensamblar los resultados y producir los datos de salida completos. [ 10 ] Cuanto mayor sea la distribución agregada de los datos, mayor será el beneficio del procesamiento paralelo. Los requisitos de procesamiento intensivo en datos normalmente escalan linealmente según el tamaño de los datos y son muy adecuados para una paralelización directa. Los desafíos fundamentales para la computación intensiva en datos son la gestión y el procesamiento de volúmenes de datos que crecen exponencialmente, la reducción significativa de los ciclos de análisis de datos asociados para respaldar aplicaciones prácticas y oportunas, y el desarrollo de nuevos algoritmos que puedan escalar para buscar y procesar cantidades masivas de datos. Los investigadores acuñaron el término BORPS, que significa "miles de millones de registros por segundo", para medir la velocidad de procesamiento de registros de forma análoga a como se aplica el término MIPS para describir la velocidad de procesamiento de las computadoras. [ 11 ]

paralelismo de datos

Las arquitecturas de sistemas informáticos que pueden soportar aplicaciones de paralelismo de datos se promovieron a principios de la década de 2000 para los requisitos de procesamiento de datos a gran escala de la computación intensiva en datos. [ 12 ] El paralelismo de datos aplicó el cálculo de forma independiente a cada elemento de datos de un conjunto de datos, lo que permite que el grado de paralelismo se escale con el volumen de datos. La razón más importante para desarrollar aplicaciones de paralelismo de datos es el potencial de rendimiento escalable, y puede resultar en una mejora del rendimiento de varios órdenes de magnitud. Los problemas clave en el desarrollo de aplicaciones que utilizan paralelismo de datos son la elección del algoritmo, la estrategia para la descomposición de datos, el equilibrio de carga en los nodos de procesamiento, las comunicaciones de paso de mensajes entre nodos y la precisión general de los resultados. [ 13 ] El desarrollo de una aplicación de paralelismo de datos puede implicar una complejidad de programación sustancial para definir el problema en el contexto de las herramientas de programación disponibles y para abordar las limitaciones de la arquitectura objetivo. La extracción e indexación de información de documentos web es típica de la computación intensiva en datos, que puede obtener importantes beneficios de rendimiento de las implementaciones de procesamiento paralelo de datos, ya que las colecciones de documentos web y de otros tipos generalmente se pueden procesar en paralelo. [ 14 ]

La Fundación Nacional de Ciencias de los Estados Unidos (NSF) financió un programa de investigación desde 2009 hasta 2010. [ 15 ] Las áreas de enfoque fueron:

  • Enfoques de programación paralela para abordar el procesamiento paralelo de datos en sistemas con gran cantidad de datos.
  • Abstracciones de programación que incluyen modelos, lenguajes y algoritmos que permiten una expresión natural del procesamiento paralelo de datos.
  • Diseño de plataformas informáticas de gran capacidad de procesamiento de datos para proporcionar altos niveles de fiabilidad, eficiencia, disponibilidad y escalabilidad.
  • Identificar aplicaciones que puedan aprovechar este paradigma informático y determinar cómo debería evolucionar para dar soporte a las aplicaciones emergentes con uso intensivo de datos.

Los Laboratorios Nacionales del Noroeste del Pacífico definieron la computación intensiva en datos como “la captura, gestión, análisis y comprensión de datos en volúmenes y velocidades que amplían las fronteras de las tecnologías actuales”. [ 16 ] [ 17 ]

Acercarse

Las plataformas de computación intensiva en datos suelen utilizar un enfoque de computación paralela que combina múltiples procesadores y discos en grandes clústeres de computación estándar conectados mediante conmutadores y redes de comunicaciones de alta velocidad, lo que permite particionar los datos entre los recursos de computación disponibles y procesarlos de forma independiente para lograr un rendimiento y una escalabilidad basados ​​en la cantidad de datos. Un clúster puede definirse como un tipo de sistema paralelo y distribuido , que consiste en una colección de computadoras independientes interconectadas que trabajan juntas como un único recurso de computación integrado. [ 18 ] Este enfoque de procesamiento paralelo se suele denominar enfoque de "nada compartido", ya que cada nodo, que consta de procesador, memoria local y recursos de disco, no comparte nada con otros nodos del clúster. En computación paralela, este enfoque se considera adecuado para la computación intensiva en datos y para problemas que son " paralelos de forma evidente ", es decir, donde es relativamente fácil separar el problema en varias tareas paralelas y no se requiere dependencia ni comunicación entre las tareas más allá de la gestión general de las mismas. Este tipo de problemas de procesamiento de datos son inherentemente adaptables a diversas formas de computación distribuida, incluidos clústeres, redes de datos y computación en la nube .

Características

Varias características comunes de los sistemas informáticos intensivos en datos los distinguen de otras formas de computación:

  1. El principio de recopilación de datos y programas o algoritmos se utiliza para realizar el cálculo. Para lograr un alto rendimiento en la computación intensiva en datos, es importante minimizar el movimiento de datos. [ 19 ] Esta característica permite que los algoritmos de procesamiento se ejecuten en los nodos donde residen los datos, reduciendo la sobrecarga del sistema y aumentando el rendimiento. [ 7 ] Las tecnologías más recientes, como InfiniBand, permiten almacenar los datos en un repositorio separado y proporcionan un rendimiento comparable al de los datos colocados en el mismo lugar.
  2. El modelo de programación utilizado. Los sistemas de computación intensiva en datos utilizan un enfoque independiente de la máquina en el que las aplicaciones se expresan en términos de operaciones de alto nivel sobre los datos, y el sistema de tiempo de ejecución controla de forma transparente la planificación, la ejecución, el equilibrio de carga, las comunicaciones y el movimiento de programas y datos a través del clúster de computación distribuida. [ 20 ] La abstracción de programación y las herramientas de lenguaje permiten que el procesamiento se exprese en términos de flujos de datos y transformaciones que incorporan nuevos lenguajes de programación de flujo de datos y bibliotecas compartidas de algoritmos comunes de manipulación de datos, como la ordenación.
  3. Se prioriza la fiabilidad y la disponibilidad. Los sistemas a gran escala con cientos o miles de nodos de procesamiento son inherentemente más susceptibles a fallos de hardware, errores de comunicación y errores de software. Los sistemas informáticos de gran volumen de datos están diseñados para ser resistentes a fallos. Esto suele incluir copias redundantes de todos los archivos de datos en disco, almacenamiento de los resultados intermedios del procesamiento en disco, detección automática de fallos de nodos o de procesamiento, y recálculo selectivo de los resultados.
  4. La escalabilidad inherente de la arquitectura de hardware y software subyacente . Los sistemas informáticos de gran volumen de datos suelen poder escalarse linealmente para adaptarse a prácticamente cualquier cantidad de datos o para cumplir con los requisitos de rendimiento críticos en tiempo real, simplemente añadiendo nodos de procesamiento adicionales. El número de nodos y tareas de procesamiento asignados a una aplicación específica puede ser variable o fijo, dependiendo del hardware, el software, las comunicaciones y la arquitectura del sistema de archivos distribuido .

Arquitecturas de sistemas

Se han implementado diversas arquitecturas de sistemas para aplicaciones de computación intensiva en datos y análisis de datos a gran escala, incluidos sistemas de gestión de bases de datos relacionales paralelos y distribuidos que han estado disponibles para ejecutarse en clústeres sin recursos compartidos de nodos de procesamiento durante más de dos décadas. [ 21 ] Sin embargo, la mayor parte del crecimiento de datos se produce con datos en forma no estructurada y se necesitaban nuevos paradigmas de procesamiento con modelos de datos más flexibles. Han surgido varias soluciones, incluida la arquitectura MapReduce, pionera de Google y ahora disponible en una implementación de código abierto llamada Hadoop , utilizada por Yahoo , Facebook y otros. LexisNexis Risk Solutions también desarrolló e implementó una plataforma escalable para computación intensiva en datos que utiliza LexisNexis .

MapReduce

La arquitectura y el modelo de programación MapReduce, pioneros de Google, son un ejemplo de arquitectura de sistemas moderna diseñada para la computación intensiva en datos. [ 22 ] La arquitectura MapReduce permite a los programadores usar un estilo de programación funcional para crear una función de mapeo que procesa un par clave-valor asociado con los datos de entrada para generar un conjunto de pares clave-valor intermedios , y una función de reducción que fusiona todos los valores intermedios asociados con la misma clave intermedia. Dado que el sistema se encarga automáticamente de detalles como la partición de los datos de entrada, la programación y ejecución de tareas en un clúster de procesamiento y la gestión de las comunicaciones entre nodos, los programadores sin experiencia en programación paralela pueden usar fácilmente un entorno de procesamiento distribuido de gran tamaño.

El modelo de programación para la arquitectura MapReduce es una abstracción simple donde el cálculo toma un conjunto de pares clave-valor de entrada asociados con los datos de entrada y produce un conjunto de pares clave-valor de salida. En la fase Map, los datos de entrada se particionan en particiones de entrada y se asignan a tareas Map asociadas con nodos de procesamiento en el clúster. La tarea Map generalmente se ejecuta en el mismo nodo que contiene su partición de datos asignada en el clúster. Estas tareas Map realizan cálculos especificados por el usuario en cada par clave-valor de entrada de la partición de datos de entrada asignada a la tarea y generan un conjunto de resultados intermedios para cada clave. La fase de mezcla y ordenación toma los datos intermedios generados por cada tarea Map, los ordena con los datos intermedios de otros nodos, los divide en regiones para ser procesados ​​por las tareas Reduce y los distribuye según sea necesario a los nodos donde se ejecutarán las tareas Reduce. Las tareas Reduce realizan operaciones adicionales especificadas por el usuario sobre los datos intermedios, posiblemente fusionando valores asociados con una clave en un conjunto más pequeño de valores para producir los datos de salida. Para procedimientos de procesamiento de datos más complejos, se pueden enlazar varias llamadas a MapReduce en secuencia.

Hadoop

Apache Hadoop es un proyecto de software de código abierto patrocinado por la Apache Software Foundation que implementa la arquitectura MapReduce. Actualmente, Hadoop abarca varios subproyectos, además del núcleo base, MapReduce y el sistema de archivos distribuido HDFS. Estos subproyectos adicionales proporcionan capacidades mejoradas de procesamiento de aplicaciones a la implementación base de Hadoop e incluyen actualmente Avro, Pig , HBase , ZooKeeper , Hive y Chukwa. La arquitectura MapReduce de Hadoop es funcionalmente similar a la implementación de Google, con la diferencia de que el lenguaje de programación base de Hadoop es Java en lugar de C++ . La implementación está diseñada para ejecutarse en clústeres de procesadores estándar.

Hadoop implementa un entorno y marco de ejecución de procesamiento de datos distribuido para trabajos MapReduce. Incluye un sistema de archivos distribuido HDFS, análogo a GFS en la implementación de Google MapReduce. El entorno de ejecución de Hadoop admite capacidades adicionales de procesamiento de datos distribuido, diseñadas para ejecutarse con la arquitectura Hadoop MapReduce. Estas incluyen HBase , una base de datos distribuida orientada a columnas que proporciona acceso aleatorio de lectura/escritura; Hive, un sistema de almacenamiento de datos basado en Hadoop que ofrece funcionalidades de consulta similares a SQL para la síntesis de datos, consultas ad hoc y análisis de grandes conjuntos de datos; y Pig, un lenguaje de programación de flujo de datos de alto nivel y un marco de ejecución para computación intensiva en datos.

Pig fue desarrollado en Yahoo! para proporcionar una notación de lenguaje específica para aplicaciones de análisis de datos y para mejorar la productividad de los programadores y reducir los ciclos de desarrollo al usar el entorno Hadoop MapReduce. Los programas Pig se traducen automáticamente a secuencias de programas MapReduce si es necesario en el entorno de ejecución. Pig proporciona capacidades en el lenguaje para operaciones de carga, almacenamiento, filtrado, agrupación, eliminación de duplicados, ordenación, clasificación, agregación y unión de datos. [ 23 ]

HPCC

HPCC (High-Performance Computing Cluster) fue desarrollado e implementado por LexisNexis Risk Solutions. El desarrollo de esta plataforma informática comenzó en 1999 y las aplicaciones ya estaban en producción a finales del año 2000. El enfoque HPCC también utiliza clústeres de hardware estándar con el sistema operativo Linux . Se desarrollaron componentes de software y middleware personalizados que se integraron en el sistema operativo Linux base para proporcionar el entorno de ejecución y la compatibilidad con sistemas de archivos distribuidos necesarios para la computación intensiva en datos. LexisNexis también implementó un nuevo lenguaje de alto nivel para la computación intensiva en datos.

El lenguaje de programación ECL es un lenguaje de alto nivel, declarativo, centrado en datos e implícitamente paralelo que permite al programador definir el resultado del procesamiento de datos, así como los flujos de datos y las transformaciones necesarias para lograrlo. El lenguaje ECL incluye amplias capacidades para la definición, el filtrado, la gestión y la transformación de datos, y proporciona un extenso conjunto de funciones integradas para operar con registros en conjuntos de datos, que pueden incluir funciones de transformación definidas por el usuario. Los programas ECL se compilan en código fuente C++ optimizado , que posteriormente se compila en código ejecutable y se distribuye a los nodos de un clúster de procesamiento.

Para abordar tanto los aspectos por lotes como en línea de las aplicaciones de computación intensiva en datos, HPCC incluye dos entornos de clúster distintos, cada uno de los cuales puede optimizarse de forma independiente para su propósito de procesamiento de datos en paralelo. La plataforma Thor es un clúster cuyo propósito es ser un refinador de datos para procesar grandes volúmenes de datos sin procesar para aplicaciones como limpieza y desintoxicación de datos, extracción, transformación y carga (ETL), vinculación de registros y resolución de entidades, análisis ad hoc de datos a gran escala y creación de datos clave e índices para admitir consultas estructuradas de alto rendimiento y aplicaciones de almacenamiento de datos. Un sistema Thor es similar a la plataforma Hadoop MapReduce en su configuración de hardware, función, entorno de ejecución, sistema de archivos y capacidades, pero proporciona un mayor rendimiento en configuraciones equivalentes. La plataforma Roxie proporciona un sistema de consulta y análisis estructurado en línea de alto rendimiento o un almacén de datos que ofrece los requisitos de procesamiento de acceso a datos en paralelo de las aplicaciones en línea a través de interfaces de servicios web que admiten miles de consultas y usuarios simultáneos con tiempos de respuesta inferiores a un segundo. Un sistema Roxie es similar en su función y capacidades a Hadoop con capacidades de HBase y Hive añadidas, pero proporciona un entorno de ejecución y un sistema de archivos optimizados para el procesamiento en línea de alto rendimiento. Tanto los sistemas Thor como Roxie utilizan el mismo lenguaje de programación ECL para implementar aplicaciones, lo que aumenta la productividad del programador.

Véase también

Referencias

  1. Manual de Computación en la Nube , "Tecnologías intensivas en datos para la computación en la nube", por AM Middleton. Manual de Computación en la Nube. Springer, 2010.
  2. Una avalancha de información , por Vinton Cerf, IEEE Computer, vol. 40, n.º 1, 2007, págs. 104-105.
  3. El universo digital en expansión Archivado el 27 de junio de 2013 en Wayback Machine , por JF Gantz, D. Reinsel, C. Chute, W. Schlichting, J. McArthur, S. Minton, J. Xheneti, A. Toncheva y A. Manfrediz, IDC , Libro Blanco, 2007.
  4. ¿Cuánta información? 2003 , por P. Lyman y HR Varian, Universidad de California en Berkeley, Informe de investigación, 2003.
  5. ↑ ¿ Tienes datos? Una guía para la preservación de datos en la era de la información. Archivado el 18 de julio de 2011 en Wayback Machine , por F. Berman, Communications of the ACM, vol. 51, n.° 12, 2008, págs. 50-56.
  6. Modelos y lenguajes para computación paralela , por DB Skillicorn y D. Talia, ACM Computing Surveys, vol. 30, n.° 2, 1998, págs. 123-169.
  7. 1 2 Gorton, Ian; Greenfield, Paul; Szalay, Alex; Williams, Roy (2008). "Computación intensiva en datos en el siglo XXI". Computer . 41 (4): 30– 32. Bibcode : 2008Compr..41d..30G . doi : 10.1109/MC.2008.122 .
  8. Computación de alta velocidad, de área extensa y con uso intensivo de datos: una retrospectiva de diez años , por WE Johnston, IEEE Computer Society, 1998.
  9. IEEE: Tecnologías de hardware para computación intensiva en datos de alto rendimiento , por M. Gokhale, J. Cohen, A. Yoo y WM Miller, IEEE Computer, vol. 41, n.° 4, 2008, págs. 60-68.
  10. IEEE: Una metodología de diseño para aplicaciones de datos en paralelo Archivado el 24/07/2011 en Wayback Machine , por LS Nyland, JF Prins, A. Goldberg y PH Mills, IEEE Transactions on Software Engineering, Vol. 26, No. 4, 2000, pp. 293-314.
  11. Manual de computación en la nube. Archivado el 25/11/2010 en Wayback Machine . «Tecnologías intensivas en datos para la computación en la nube», por AM Middleton. Manual de computación en la nube. Springer, 2010, págs. 83-86.
  12. El desafío de la escala de terabytes por D. Ravichandran, P. Pantel y E. Hovy. "El desafío de la escala de terabytes", Actas del Taller KDD sobre Minería para y desde la Web Semántica, 2004
  13. Adaptación dinámica a los recursos disponibles para la computación paralela en una red autónoma de estaciones de trabajo. Archivado el 20 de julio de 2011 en Wayback Machine por U. Rencuzogullari y S. Dwarkadas . «Adaptación dinámica a los recursos disponibles para la computación paralela en una red autónoma de estaciones de trabajo», Actas del Octavo Simposio ACM SIGPLAN sobre Principios y Prácticas de Programación Paralela, 2001.
  14. Extracción de información para grandes colecciones de documentos Archivado el 15/04/2011 en Wayback Machine por E. Agichtein, "Scaling Information Extraction to Large Document Collections," Microsoft Research, 2004
  15. "Computación intensiva en datos" . Descripción del programa . NSF. 2009. Consultado el 24 de abril de 2017 .
  16. Computación intensiva en datos por PNNL. "Computación intensiva en datos", 2008
  17. El paradigma cambiante de la computación intensiva en datos por RT Kouzes, GA Anderson, ST Elbert, I. Gorton y DK Gracio, "El paradigma cambiante de la computación intensiva en datos", Computer, vol. 42, n.° 1, 2009, págs. 26-3
  18. Buyya, Rajkumar; Yeo, Chee Shin; Venugopal, Srikumar; Broberg, James; Brandic, Ivona (2009). "Computación en la nube y plataformas de TI emergentes: visión, exageración y realidad para ofrecer computación como la quinta utilidad" . Future Generation Computer Systems . 25 (6): 599– 616. doi : 10.1016/j.future.2008.12.001 .
  19. Economía de la computación distribuida por J. Gray, "Economía de la computación distribuida", ACM Queue, vol. 6, n.º 3, 2008, págs. 63-68.
  20. Computación escalable intensiva en datos por RE Bryant. "Computación escalable intensiva en datos", 2008
  21. Comparación de enfoques para el análisis de datos a gran escala por A. Pavlo, E. Paulson, A. Rasin, DJ Abadi, DJ Dewitt, S. Madden y M. Stonebraker. Actas de la 35.ª Conferencia Internacional SIGMOD sobre Gestión de Datos, 2009.
  22. MapReduce: Procesamiento de datos simplificado en grandes clústeres. Archivado el 23 de diciembre de 2009 en Wayback Machine por J. Dean y S. Ghemawat. Actas del Sexto Simposio sobre Diseño e Implementación de Sistemas Operativos (OSDI), 2004.
  23. como ciudadano de primera clase Pig Latin: un lenguaje no tan extranjero para el procesamiento de datos Archivado el 20/07/2011 en Wayback Machine por C. Olston, B. Reed, U. Srivastava, R. Kumar y A. Tomkins. (Presentación en SIGMOD 2008)," 2008