stringtranslate.com

Computación intensiva en datos

La informática intensiva en datos es una clase de aplicaciones informáticas paralelas que utilizan un enfoque de datos paralelos para procesar grandes volúmenes de datos, normalmente de terabytes o petabytes , y que normalmente se denominan big data . Las aplicaciones informáticas que dedican la mayor parte de su tiempo de ejecución a requisitos computacionales se consideran informáticas intensivas, 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 E/S y manipulación de datos. [1]

Introducción

El rápido crecimiento de Internet y la World Wide Web generó grandes 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 debe procesarse, analizarse y vincularse. Vinton Cerf calificó esto de “avalancha de información” y afirmó que “debemos aprovechar la energía de Internet antes de que la información que ha desatado nos entierre”. [2] Un informe técnico de IDC patrocinado por EMC Corporation estimó la cantidad de información actualmente almacenada en formato digital en 2007 en 281 exabytes y la tasa de crecimiento compuesta general en 57%, con la información en las organizaciones creciendo a un ritmo incluso más rápido. [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 gran cantidad de datos representa una necesidad fundamental y un inmenso desafío para satisfacer las necesidades de buscar, analizar, extraer y visualizar estos datos como información. [5] La informática intensiva en datos pretende abordar esta necesidad.

Los enfoques de procesamiento paralelo generalmente se pueden clasificar como intensivos en computación o intensivos en datos . [6] [7] [8] Computación intensiva se utiliza para describir programas de aplicación que están vinculados a la computación. Estas aplicaciones dedican la mayor parte de su tiempo de ejecución a requisitos computacionales en lugar de E/S y, por lo general, requieren pequeños volúmenes de datos. El procesamiento paralelo de aplicaciones de computación intensiva 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 informática adecuada para lograr un rendimiento general mayor que el procesamiento en serie. En aplicaciones de computación intensiva, se realizan múltiples operaciones simultáneamente, y cada operación aborda una parte particular del problema. A esto se le suele denominar paralelismo de tareas .

El uso intensivo de datos se utiliza para describir aplicaciones que están vinculadas a E/S o que necesitan procesar grandes volúmenes de datos. [9] Estas aplicaciones dedican la mayor parte de su tiempo de procesamiento a la E/S y al movimiento y manipulación de datos. El procesamiento paralelo de aplicaciones con uso intensivo de datos normalmente implica dividir o subdividir 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 volver a ensamblar 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 según el tamaño de los datos y son muy susceptibles de una paralelización sencilla. Los desafíos fundamentales para la informática con uso intensivo de datos son la gestión y el procesamiento de volúmenes de datos en crecimiento exponencial, 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 escalarse 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

A principios de la década de 2000 se promovieron arquitecturas de sistemas informáticos que pueden admitir aplicaciones de datos paralelas para satisfacer las necesidades de procesamiento de datos a gran escala de la informática con uso intensivo de datos. [12] El paralelismo de datos aplicó la computación de forma independiente a cada elemento de un conjunto de datos, lo que permite escalar el grado de paralelismo con el volumen de datos. La razón más importante para desarrollar aplicaciones de datos paralelos 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 el 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 paralela 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 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 informática con uso intensivo de datos, que puede obtener importantes beneficios de rendimiento de las implementaciones de datos paralelas, ya que la web y otros tipos de colecciones de documentos normalmente pueden procesarse en paralelo. [14]

La Fundación Nacional de Ciencias de EE. UU. (NSF) financió un programa de investigación entre 2009 y 2010. [15] Las áreas de interés fueron:

Pacific Northwest National Labs definió la informática con uso intensivo de datos como "capturar, gestionar, analizar y comprender datos en volúmenes y velocidades que traspasan las fronteras de las tecnologías actuales". [16] [17]

Acercarse

Las plataformas informáticas con uso intensivo de datos suelen utilizar un enfoque informático paralelo que combina múltiples procesadores y discos en grandes grupos informáticos básicos conectados mediante conmutadores y redes de comunicaciones de alta velocidad, lo que permite dividir los datos entre los recursos informáticos disponibles y procesarlos de forma independiente para lograr rendimiento y escalabilidad. en función de 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 denomina enfoque de “nada compartido”, ya que cada nodo que consta de recursos de procesador, memoria local y disco no comparte nada con otros nodos del clúster. En la computación paralela, este enfoque se considera adecuado para la computación con uso intensivo de datos y para 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 otras tareas. que la gestión global de las tareas. Estos tipos 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 con uso intensivo de datos los distinguen de otras formas de informática:

  1. Para realizar el cálculo se utiliza el principio de recopilación de datos y programas o algoritmos. Para lograr un alto rendimiento en la informática con uso intensivo de 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. [20] Las tecnologías más nuevas, como InfiniBand, permiten que los datos se almacenen en un repositorio separado y proporcionan un rendimiento comparable al de los datos colocados.
  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 sistema. Clúster de computación distribuida. [21] Las herramientas de lenguaje y abstracción de programación permiten que el procesamiento se exprese en términos de flujos de datos y transformaciones incorporando nuevos lenguajes de programación de flujos 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 fallos. Esto generalmente incluye copias redundantes de todos los archivos de datos en el disco, almacenamiento de los resultados del procesamiento intermedio en el disco, detección automática de fallas de nodo o procesamiento y nuevo cálculo selectivo de los resultados.
  4. La escalabilidad inherente de la arquitectura de hardware y software subyacente . Los sistemas informáticos con uso intensivo de datos normalmente se pueden escalar de forma lineal para acomodar prácticamente cualquier cantidad de datos o para cumplir con requisitos de rendimiento críticos en el 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 una variedad de arquitecturas de sistemas para aplicaciones de computación con uso intensivo de 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 grupos de nodos de procesamiento sin uso compartido durante más de dos décadas. [22] 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 de la que Google fue pionera 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 con uso intensivo de datos que utiliza LexisNexis .

Mapa reducido

La arquitectura y el modelo de programación MapReduce del que Google fue pionero es un ejemplo de una arquitectura de sistemas moderna diseñada para computación con uso intensivo de datos. [23] La arquitectura MapReduce permite a los programadores usar 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 intermedios. valores asociados con la misma clave intermedia. Dado que el sistema se encarga automáticamente de detalles como dividir los datos de entrada, programar y ejecutar tareas en un clúster de procesamiento y administrar 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 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 Mapa, los datos de entrada se dividen en divisiones de entrada y se asignan a tareas de Mapa asociadas con los nodos de procesamiento en el clúster. La tarea de mapa normalmente se ejecuta en el mismo nodo que contiene su partición de datos asignada en el clúster. Estas tareas de Mapa realizan cálculos especificados por el usuario en cada par clave-valor de entrada de la partición de datos de entrada asignados a la tarea y generan un conjunto de resultados intermedios para cada clave. Luego, la fase de reproducción aleatoria y clasificación toma los datos intermedios generados por cada tarea de Mapa, clasifica estos datos con datos intermedios de otros nodos, divide estos datos en regiones para ser procesados ​​por las tareas de reducción y distribuye estos datos según sea necesario a los nodos donde se realiza la Reducción. se ejecutarán las tareas. Las tareas de Reducción realizan operaciones adicionales especificadas por el usuario en los datos intermedios, posiblemente fusionando valores asociados con una clave con 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 a 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 múltiples 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 para la implementación básica 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 grupos de procesadores de productos básicos.

Hadoop implementa un marco y entorno de ejecución y programación de procesamiento de datos distribuidos 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. Estos 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 con uso intensivo de 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 del programador y reducir los ciclos de desarrollo cuando se utiliza 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 en los datos. [24]

HPCC

HPCC (Clúster de Computación de Alto Rendimiento) fue desarrollado e implementado por LexisNexis Risk Solutions. El desarrollo de esta plataforma informática comenzó en 1999 y las aplicaciones estaban en producción a finales de 2000. El enfoque HPCC también utiliza grupos básicos de hardware que ejecutan el sistema operativo Linux . Se desarrollaron componentes de software y middleware de sistema personalizados y se colocaron en capas sobre el sistema operativo Linux base para proporcionar el entorno de ejecución y el soporte del sistema de archivos distribuido necesarios para la informática con uso intensivo de datos. LexisNexis también implementó un nuevo lenguaje de alto nivel para computación con uso intensivo de 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 cuál debe ser el resultado del procesamiento de datos y los flujos de datos y transformaciones que son necesarios para lograr el resultado. El lenguaje ECL incluye amplias capacidades para la definición, filtrado, gestión y transformación de datos, y proporciona un amplio conjunto de funciones integradas para operar en 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 aplicaciones informáticas con uso intensivo de datos tanto en lotes como en línea, 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, ad hoc a gran escala. análisis 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 consultas estructuradas en línea de alto rendimiento o un almacén de datos que cumple con los requisitos de procesamiento de acceso a datos paralelos 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 HBase y Hive agregadas, pero proporciona un entorno de ejecución optimizado y un sistema de archivos para un procesamiento en línea de alto rendimiento. Tanto el sistema Thor como el Roxie utilizan el mismo lenguaje de programación ECL para implementar aplicaciones, lo que aumenta la productividad del programador.

Ver también

Referencias

  1. ^ Manual de computación en la nube, "Tecnologías de uso intensivo de 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úm. 1, 2007, págs. 104-105.
  3. ^ The Expanding Digital Universe 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úm. 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úm. 2, 1998, págs. 123-169.
  7. ^ Computación en el siglo XXI [ enlace muerto permanente ] , por I. Gorton, P. Greenfield, A. Szalay y R. Williams, IEEE Computer, vol. 41, núm. 4, 2008, págs. 30-32.
  8. ^ Computación de alta velocidad, área amplia y uso intensivo de datos: una retrospectiva de diez años, por WE Johnston, IEEE Computer Society, 1998.
  9. ^ IEEE: Tecnologías de hardware para informática de alto rendimiento con uso intensivo de datos, por M. Gokhale, J. Cohen, A. Yoo y WM Miller, IEEE Computer, vol. 41, núm. 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úm. 4, 2000, págs. 293-314.
  11. ^ Manual de computación en la nube Archivado el 25 de noviembre de 2010 en Wayback Machine , "Tecnologías de uso intensivo de 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 teraescala de D. Ravichandran, P. Pantel y E. Hovy. "El desafío de la teraescala", 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 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 a grandes colecciones de documentos por E. Agichtein, "Ampliación de la extracción de información a 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", Computadora, vol. 42, núm. 1, 2009, págs. 26-3
  18. ^ Computación en la nube y plataformas de TI emergentes por R. Buyya, CS Yeo, S. Venugopal, J. Broberg e I. Brandic , "Computación en la nube y plataformas de TI emergentes: visión, exageración y realidad para ofrecer informática como quinta utilidad, "Sistemas informáticos de generación futura, vol. 25, núm. 6, 2009, págs. 599-616
  19. ^ Economía de la informática distribuida por J. Gray, "Economía de la informática distribuida", ACM Queue, vol. 6, núm. 3, 2008, págs. 63-68.
  20. ^ Computación en el siglo XXI [ enlace muerto permanente ] , por I. Gorton, P. Greenfield, A. Szalay y R. Williams, IEEE Computer, vol. 41, núm. 4, 2008, págs. 30-32.
  21. ^ Computación escalable con uso intensivo de datos por RE Bryant. "Computación escalable con uso intensivo de datos", 2008
  22. ^ Una 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.
  23. ^ 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.
  24. ^ como ciudadano porcino de primera clase Latín: una lengua no tan extranjera 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