La computación con uso intensivo de datos es una clase de aplicaciones de computación paralela que utilizan un enfoque de datos en paralelo para procesar grandes volúmenes de datos, por lo general de terabytes o petabytes de tamaño y, por lo general, se denominan big data . Las aplicaciones informáticas que dedican la mayor parte de su tiempo de ejecución a los requisitos informáticos se consideran intensivas en cómputo, mientras que las aplicaciones informáticas que requieren grandes volúmenes de datos y dedican la mayor parte de su tiempo de procesamiento a E / S y manipulación de datos se consideran intensivas en datos. [1]
Introducción
El rápido crecimiento de Internet y la World Wide Web llevó a una gran cantidad de información disponible en línea. Además, las organizaciones comerciales y gubernamentales crean grandes cantidades de información estructurada y no estructurada que debe procesarse, analizarse y vincularse. Vinton Cerf describió esto como una "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 almacenada actualmente en forma digital en 2007 en 281 exabytes y la tasa de crecimiento compuesto general en 57% con 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 desafío inmenso para satisfacer las necesidades de buscar, analizar, extraer y visualizar estos datos como información. [5] La informática con uso intensivo de datos está destinada a abordar esta necesidad.
El procesamiento paralelo enfoques pueden ser generalmente clasificados como de cómputo intensivo , o datos de uso intensivo . [6] [7] [8] La 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 los requisitos informáticos en lugar de a las E / S, y normalmente requieren pequeños volúmenes de datos. El procesamiento en paralelo de aplicaciones de computación intensiva 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 de computación adecuada para lograr un rendimiento general más alto 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. Esto a menudo se denomina 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 E / S y al movimiento y manipulación de datos. El procesamiento paralelo de aplicaciones con uso intensivo de datos generalmente implica particionar 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 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 se escalan linealmente de acuerdo con el tamaño de los datos y son muy fáciles de paralelizar directamente. Los desafíos fundamentales para la computación intensiva en datos son administrar y procesar volúmenes de datos en crecimiento exponencial, reducir significativamente los ciclos de análisis de datos asociados para admitir aplicaciones prácticas y oportunas y desarrollar 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 admitir 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 informática intensiva en datos. [12] El paralelismo de datos aplica el cálculo de forma independiente a cada elemento de datos 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 paralelas de datos es el potencial de rendimiento escalable y puede resultar en 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 los 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 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 informática con uso intensivo de datos, que puede obtener importantes beneficios de rendimiento de las implementaciones paralelas de datos, 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 EE. UU . (NSF) financió un programa de investigación de 2009 a 2010. [15] Las áreas de enfoque fueron:
- Enfoques de la programación paralela para abordar el procesamiento paralelo de datos en sistemas intensivos en datos
- Programación de abstracciones que incluyen modelos, lenguajes y algoritmos que permiten una expresión natural del procesamiento paralelo de datos.
- Diseño de plataformas informáticas de uso intensivo de datos para proporcionar altos niveles de confiabilidad, eficiencia, disponibilidad y escalabilidad.
- Identificar aplicaciones que puedan explotar este paradigma informático y determinar cómo debería evolucionar para admitir aplicaciones emergentes de uso intensivo de datos.
Pacific Northwest National Labs definió la computación con uso intensivo de datos como “capturar, administrar, analizar y comprender datos a volúmenes y velocidades que amplían 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 varios procesadores y discos en grandes clústeres informáticos básicos conectados mediante conmutadores y redes de comunicaciones de alta velocidad que permiten dividir los datos entre los recursos informáticos disponibles y procesarlos de forma independiente para lograr rendimiento y escalabilidad. basado 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 del procesamiento paralelo a menudo se denomina 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 con uso intensivo de 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 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, cuadrículas de datos y computación en la nube .
Caracteristicas
Varias características comunes de los sistemas de computación con uso intensivo de datos los distinguen de otras formas de computación:
- 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 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.
- El modelo de programación utilizado. Los sistemas informáticos de 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 en datos, y el sistema de tiempo de ejecución controla de manera transparente la programación, ejecución, equilibrio de carga, comunicaciones y movimiento de programas y datos a través del 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 flujo de datos y bibliotecas compartidas de algoritmos comunes de manipulación de datos como la clasificación.
- Enfoque en la confiabilidad y disponibilidad. Los sistemas a gran escala con cientos o miles de nodos de procesamiento son intrínsecamente más susceptibles a fallas de hardware, errores de comunicación y errores de software. Los sistemas informáticos de uso intensivo de datos están diseñados para ser resistentes a fallas. Por lo general, esto 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 procesamiento o de nodo y recálculo selectivo de los resultados.
- La escalabilidad inherente de la arquitectura de hardware y software subyacente . Los sistemas de computación con uso intensivo de datos generalmente se pueden escalar de manera lineal para adaptarse a prácticamente cualquier cantidad de datos, o para cumplir con los 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 del sistema
Se ha implementado una variedad de arquitecturas de sistemas para aplicaciones de análisis de datos a gran escala y computación con uso intensivo de datos, incluidos sistemas de administración de bases de datos relacionales distribuidos y paralelos que han estado disponibles para ejecutarse en grupos de nodos de procesamiento sin compartir 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 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 es utilizada por LexisNexis .
Mapa reducido
La arquitectura y el modelo de programación de MapReduce en los que Google fue pionero es un ejemplo de una arquitectura de sistemas moderna diseñada para la computación intensiva en datos. [23] 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. valores asociados con la misma clave intermedia. Dado que el sistema se encarga automáticamente de detalles como particionar 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 usar fácilmente un gran entorno de procesamiento distribuido.
El modelo de programación para la arquitectura MapReduce es una simple abstracción 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 generalmente 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. La fase de barajar y ordenar luego toma los datos intermedios generados por cada tarea de Mapa, ordena 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 Reducir las tareas se ejecutarán. Las tareas Reducir realizan operaciones adicionales especificadas por el usuario en los datos intermedios, posiblemente fusionando valores asociados con una clave a un conjunto más pequeño de valores para producir los datos de salida. Para procedimientos de procesamiento de datos más complejos, múltiples llamadas MapReduce pueden enlazarse 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 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 de 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 entorno y un marco de ejecución y programación de procesamiento de datos distribuidos para los 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 de procesamiento de datos distribuidos adicionales que están diseñadas para ejecutarse utilizando la arquitectura MapReduce de Hadoop. 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 el 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 la informática con uso intensivo de datos.
Pig fue desarrollado en Yahoo! para proporcionar una notación de lenguaje específico 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, desduplicar, 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 fines de 2000. El enfoque HPCC también utiliza grupos básicos de hardware que ejecutan el sistema operativo Linux . El software de sistema personalizado y los componentes de middleware se desarrollaron y colocaron en capas en 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 la informática 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 las transformaciones que son necesarios para lograr el resultado. El lenguaje ECL incluye amplias capacidades para la definición de datos, filtrado, gestión de datos 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 las aplicaciones informáticas de uso intensivo de datos tanto por 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 el procesamiento de 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, anuncios a gran escala. análisis hoc de datos y creación de datos e índices con clave para admitir consultas estructuradas de alto rendimiento y aplicaciones de almacenamiento de datos. Un sistema Thor es similar en su configuración de hardware, función, entorno de ejecución, sistema de archivos y capacidades a la plataforma Hadoop MapReduce, pero proporciona un mayor rendimiento en configuraciones equivalentes. La plataforma Roxie proporciona un sistema de análisis y consultas estructurado de alto rendimiento en línea 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 las 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.
Ver también
- Lista de publicaciones importantes en computación concurrente, paralela y distribuida
- Paralelismo implícito
- Masivamente paralelo
- Supercomputadora
- Graph500
Referencias
- ^ Manual de computación en la nube , "Tecnologías intensivas en datos para computación en la nube", por AM Middleton. Manual de Computación en la Nube. Springer, 2010.
- ^ Una avalancha de información , por Vinton Cerf, IEEE Computer, Vol. 40, núm. 1, 2007, págs. 104-105.
- ^ 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.
- ^ ¿Cuánta información? 2003 , por P. Lyman y HR Varian, Universidad de California en Berkeley, Informe de investigación, 2003.
- ^ ¿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.
- ^ Modelos y lenguajes para computación paralela , por DB Skillicorn y D. Talia, Encuestas de computación de ACM, vol. 30, núm. 2, 1998, págs. 123-169.
- ^ 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.
- ^ Computación intensiva de datos de alta velocidad, área amplia: una retrospectiva de diez años , por WE Johnston, IEEE Computer Society, 1998.
- ^ 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úm. 4, 2008, págs. 60-68.
- ^ IEEE: una metodología de diseño para aplicaciones paralelas de datos 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.
- ^ Manual de computación en la nube Archivado el 25 de noviembre de 2010 en Wayback Machine , "Tecnologías intensivas en datos para computación en la nube", por AM Middleton. Manual de Computación en la Nube. Springer, 2010, págs. 83-86.
- ^ El desafío de la terascala de D. Ravichandran, P. Pantel y E. Hovy. "El desafío de la terascala", Actas del Taller de KDD sobre minería para y desde la Web Semántica, 2004
- ^ Adaptación dinámica a los recursos disponibles para la computación paralela en una red autónoma de estaciones de trabajo. Archivado el 20de julio de 2011en la 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
- ^ Extracción de información a grandes colecciones de documentos por E. Agichtein, "Escalar la extracción de información a grandes colecciones de documentos", Microsoft Research, 2004
- ^ "Computación intensiva en datos" . Descripción del programa . NSF. 2009 . Consultado el 24 de abril de 2017 .
- ^ Computación intensiva de datos por PNNL. "Computación intensiva en datos", 2008
- ^ El paradigma cambiante de la informática intensiva en datos por RT Kouzes, GA Anderson, ST Elbert, I. Gorton y DK Gracio, "El paradigma cambiante de la informática intensiva en datos", Computadora, vol. 42, núm. 1, 2009, págs. 26-3
- ^ 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 entregar la computación como la quinta utilidad, "Future Generation Computer Systems, vol. 25, núm. 6, 2009, págs. 599-616
- ^ 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.
- ^ 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.
- ^ Computación escalable intensiva de datos por RE Bryant. "Computación escalable intensiva en datos", 2008
- ^ 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 35a conferencia internacional SIGMOD sobre gestión de datos, 2009.
- ^ MapReduce: procesamiento de datos simplificado en grandes clústeres Archivado el23 de diciembre de 2009en la Wayback Machine por J. Dean y S. Ghemawat. Actas del Sexto Simposio sobre Diseño e Implementación de Sistemas Operativos (OSDI), 2004.
- ^ Como un ciudadano de primera clase latín de cerdo: Un no tan del idioma extranjero para procesar los datos archivados 2011-07-20 en la Wayback Machine por C. Olston, B. Reed, U. Srivastava, R. Kumar, y A. Tomkins. (Presentación en SIGMOD 2008), "2008