stringtranslate.com

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 datos paralelos para procesar grandes volúmenes de datos, normalmente de terabytes o petabytes de tamaño y que suelen denominarse big data . Las aplicaciones informáticas que dedican la mayor parte de su tiempo de ejecución a los requisitos computacionales se consideran intensivas en computación, mientras que las aplicaciones que se consideran intensivas en datos requieren grandes volúmenes de datos y dedican la mayor parte de su tiempo de procesamiento a la E/S y la manipulación de datos. [1]

Introducción

El rápido crecimiento de Internet y la World Wide Web ha dado lugar a la disponibilidad de grandes cantidades de información en línea. Además, las organizaciones empresariales y gubernamentales crean grandes cantidades de información estructurada y no estructurada , que es necesario procesar, analizar y vincular. 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ó que la cantidad de información almacenada actualmente en formato digital en 2007 era de 281 exabytes y la tasa de crecimiento compuesta general era del 57%, con una tasa de crecimiento de la información en las organizaciones incluso más rápida. [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 forma no estructurada 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 enorme 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 tiene como objetivo abordar esta necesidad.

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

El término "intensivo en datos" se utiliza para describir aplicaciones que están limitadas por E/S o que necesitan procesar grandes volúmenes de datos. [9] Dichas aplicaciones dedican la mayor parte de su tiempo de procesamiento a E/S y al movimiento y manipulación de datos. El procesamiento paralelo de aplicaciones intensivas en datos generalmente implica la partición o subdivisión de los datos en múltiples segmentos que se pueden procesar de forma independiente utilizando el mismo programa de aplicación ejecutable en paralelo en una plataforma informática adecuada, y luego reensamblar los resultados para producir los datos de salida completos. [10] Cuanto mayor sea la distribución agregada de los datos, mayor será el beneficio del procesamiento paralelo de los datos. Los requisitos de procesamiento intensivo de datos normalmente escalan linealmente de acuerdo con el tamaño de los datos y son muy susceptibles a una paralelización sencilla. 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 para "miles de millones de registros por segundo" para medir la velocidad de procesamiento de registros de una manera análoga a cómo 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 datos en paralelo 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 datos en paralelo es el potencial de rendimiento escalable, y puede dar como resultado una mejora del rendimiento de varios órdenes de magnitud. Los problemas clave con 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 datos en paralelo 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 de destino. La extracción de información y la indexación de documentos web es típica de la computación intensiva en datos que puede derivar importantes beneficios de rendimiento a partir de las implementaciones de datos en paralelo, ya que la Web y otros tipos de colecciones de documentos normalmente se pueden procesar en paralelo. [14]

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

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

Acercarse

Las plataformas informáticas intensivas en datos suelen utilizar un enfoque de computación paralela que combina múltiples procesadores y discos en grandes clústeres informáticos básicos conectados mediante conmutadores y redes de comunicaciones de alta velocidad que permiten que los datos se dividan entre los recursos informáticos disponibles y se procesen de forma independiente para lograr un rendimiento y una escalabilidad basados ​​en la cantidad de datos. Un clúster se puede definir 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 informático integrado. [18] Este enfoque de procesamiento paralelo a menudo se conoce como un 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 la computación paralela, este enfoque se considera adecuado para la computación intensiva en datos y los problemas que son "vergonzosamente paralelos", es decir, donde es relativamente fácil separar el problema en una serie de tareas paralelas y no se requiere dependencia o comunicación entre las tareas que no sea la gestión general de las tareas. Estos tipos de problemas de procesamiento de datos son inherentemente adaptables a varias 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 los cálculos. 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, lo que reduce la sobrecarga del sistema y aumenta el rendimiento. [7] Las tecnologías más nuevas, como InfiniBand, permiten almacenar los datos en un repositorio separado y brindan un rendimiento comparable al de los datos ubicados en un mismo lugar.
  2. El modelo de programación utilizado. Los sistemas informáticos con uso intensivo de 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 datos, y el sistema de ejecución controla de forma transparente la programación, la ejecución, el equilibrio de carga, las comunicaciones y el movimiento de programas y datos a través del clúster informático distribuido. [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 clasificación.
  3. Un enfoque en la confiabilidad y la disponibilidad. Los sistemas a gran escala con cientos o miles de nodos de procesamiento son inherentemente más susceptibles a fallas de hardware, errores de comunicación y errores de software. Los sistemas informáticos con uso intensivo de datos están diseñados para ser resistentes a fallas. Esto generalmente incluye copias redundantes de todos los archivos de datos en el disco, almacenamiento de resultados de procesamiento intermedios en el disco, detección automática de fallas de nodos o de procesamiento y recálculo selectivo de resultados.
  4. La escalabilidad inherente de la arquitectura de hardware y software subyacente . Los sistemas informáticos con uso intensivo de datos se pueden escalar de forma lineal para adaptarse a prácticamente cualquier cantidad de datos o para cumplir con requisitos de rendimiento críticos en términos de tiempo simplemente agregando nodos de procesamiento adicionales. La cantidad de nodos y tareas de procesamiento asignadas para una aplicación específica puede ser variable o fija según el 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 distribuidos y paralelos que han estado disponibles para ejecutarse en clústeres de nodos de procesamiento compartidos durante más de dos décadas. [21] Sin embargo, la mayor parte del crecimiento de los 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 iniciada por 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 .

Mapa Reduce

La arquitectura y el modelo de programación MapReduce , desarrollados por Google, son un ejemplo de una arquitectura de sistemas moderna diseñada para la computación intensiva en datos. [22] La arquitectura MapReduce permite a los programadores utilizar un estilo de programación funcional para crear una función de mapa 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 utilizar fácilmente un gran entorno de procesamiento distribuido.

El modelo de programación para la arquitectura de 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 de Map, los datos de entrada se dividen en divisiones de entrada y se asignan a tareas de Map asociadas con nodos de procesamiento en el clúster. La tarea de Map normalmente se ejecuta en el mismo nodo que contiene su partición asignada de datos en el clúster. Estas tareas de 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. Luego, la fase de mezcla y ordenación toma los datos intermedios generados por cada tarea de Map, ordena estos datos con datos intermedios de otros nodos, divide estos datos en regiones que serán procesadas por las tareas de reducción y distribuye estos datos según sea necesario a los nodos donde se ejecutarán las tareas de reducción. Las tareas de reducción realizan operaciones adicionales especificadas por el usuario en 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 vincular varias llamadas MapReduce en secuencia.

Hadoop

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

Hadoop implementa un entorno de ejecución y programación de procesamiento de datos distribuidos y un marco para trabajos de MapReduce. Hadoop incluye un sistema de archivos distribuido llamado HDFS, que es 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 distribuidos que están diseñadas para ejecutarse utilizando la arquitectura Hadoop MapReduce. Estas incluyen HBase , una base de datos distribuida orientada a columnas que proporciona capacidades de lectura/escritura de acceso aleatorio; Hive, que es un sistema de almacenamiento de datos construido sobre Hadoop que proporciona capacidades de consulta similares a SQL para resumen 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 utilizar el entorno Hadoop MapReduce. Los programas Pig se traducen automáticamente en secuencias de programas MapReduce si es necesario en el entorno de ejecución. Pig proporciona capacidades en el lenguaje para cargar, almacenar, filtrar, agrupar, deduplicar, ordenar, clasificar, agregar y unir operaciones sobre los datos. [23]

Centro de control de enfermedades infecciosas (CCC)

LexisNexis Risk Solutions desarrolló e implementó HPCC (High-Performance Computing Cluster) . El desarrollo de esta plataforma informática comenzó en 1999 y las aplicaciones ya estaban en producción a fines de 2000. El enfoque HPCC también utiliza clústeres de hardware de productos básicos que ejecutan el sistema operativo Linux . Se desarrollaron componentes de middleware y software de sistema personalizados y se colocaron en capas sobre el sistema operativo Linux base para proporcionar el entorno de ejecución y el soporte de sistema de archivos distribuido 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 los datos e implícitamente paralelo que permite al programador definir cuál debe ser el resultado del procesamiento de datos y los flujos de datos y las transformaciones que son necesarias para lograr el resultado. El lenguaje ECL incluye amplias capacidades para la definición, el filtrado, la gestión y la transformación de datos, y proporciona un amplio conjunto de funciones integradas para operar en registros de 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 en línea como por lotes de las aplicaciones informáticas intensivas en datos, HPCC incluye dos entornos de clúster distintos, cada uno de los cuales se puede optimizar 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 una refinería de datos para procesar volúmenes masivos de datos sin procesar para aplicaciones como limpieza e higiene de datos, extracción, transformación, carga (ETL), vinculación de registros y resolución de entidades, análisis ad hoc a gran escala de datos y creación de datos e índices clave para respaldar 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 análisis y consulta estructurada en línea de alto rendimiento o un almacén de datos que satisface 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 sus funciones y capacidades a Hadoop con capacidades HBase y Hive agregadas, pero proporciona un entorno de ejecución optimizado y un sistema de archivos 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 de uso intensivo de datos para computación en la nube", de AM Middleton. Manual de computación en la nube. Springer, 2010.
  2. ^ Una avalancha de información, por Vinton Cerf, IEEE Computer, Vol. 40, No. 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. ^ ¿ Tiene 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, No. 2, 1998, pp. 123-169.
  7. ^ ab Gorton, Ian; Greenfield, Paul; Szalay, Alex; Williams, Roy (2008). "Computación intensiva en datos en el siglo XXI". Computer . 41 (4): 30–32. doi :10.1109/MC.2008.122.
  8. ^ Computación intensiva en datos, de área amplia y de alta velocidad: una retrospectiva de diez años, por WE Johnston, IEEE Computer Society, 1998.
  9. ^ IEEE: Tecnologías de hardware para computación intensiva de 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 paralelos Archivado el 24 de julio de 2011 en Wayback Machine , por LS Nyland, JF Prins, A. Goldberg y PH Mills, IEEE Transactions on Software Engineering, vol. 26, n.º 4, 2000, págs. 293-314.
  11. ^ Handbook of Cloud Computing Archivado el 25 de noviembre de 2010 en Wayback Machine , "Tecnologías de uso intensivo de datos para la computación en la nube", de AM Middleton. Handbook of Cloud Computing. Springer, 2010, págs. 83-86.
  12. ^ El desafío de la escala teraséptica, por D. Ravichandran, P. Pantel y E. Hovy. "El desafío de la escala teraséptica", Actas del taller de KDD sobre minería para y desde la Web semántica, 2004
  13. ^ Adaptación dinámica a los recursos disponibles para 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 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 por E. Agichtein, "Escalado de la extracción de información para grandes colecciones de documentos", 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, expectativa 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 con uso intensivo de datos, por RE Bryant. "Computación escalable con uso intensivo de 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 simplificado de datos 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 de julio de 2011 en Wayback Machine por C. Olston, B. Reed, U. Srivastava, R. Kumar y A. Tomkins. (Presentación en SIGMOD 2008)", 2008