Calcul intensif en données - Data-intensive computing

Le calcul intensif en données est une classe d' applications de calcul parallèle qui utilisent une approche parallèle de données pour traiter de grands volumes de données, généralement des téraoctets ou des pétaoctets et généralement appelés big data . Les applications informatiques qui consacrent la majeure partie de leur temps d'exécution aux exigences de calcul sont considérées comme exigeantes en calcul, tandis que les applications informatiques qui nécessitent de gros volumes de données et consacrent la majeure partie de leur temps de traitement aux E / S et à la manipulation des données sont considérées comme gourmandes en données.

introduction

La croissance rapide d' Internet et du World Wide Web a conduit à de vastes quantités d'informations disponibles en ligne. En outre, les entreprises et les organisations gouvernementales créent de grandes quantités d'informations à la fois structurées et non structurées qui doivent être traitées, analysées et liées. Vinton Cerf a décrit cela comme une «avalanche d'informations» et a déclaré: «Nous devons exploiter l'énergie d'Internet avant que les informations qu'il a libérées ne nous enterrent». Un livre blanc d' IDC sponsorisé par EMC Corporation a estimé la quantité d'informations actuellement stockées sous forme numérique en 2007 à 281 exaoctets et le taux de croissance global composé à 57%, les informations dans les organisations augmentant encore plus rapidement. Dans une étude de 2003 sur la soi-disant explosion de l'information, il a été estimé que 95% de toutes les informations actuelles existent sous une forme non structurée avec des exigences de traitement de données accrues par rapport aux informations structurées. Le stockage, la gestion, l'accès et le traitement de cette vaste quantité de données représentent un besoin fondamental et un immense défi afin de satisfaire les besoins de recherche, d'analyse, de mine et de visualisation de ces données sous forme d'informations. Le calcul intensif en données est destiné à répondre à ce besoin.

Les approches de traitement parallèle peuvent généralement être classées comme intensives en calcul ou en données . Le calcul intensif est utilisé pour décrire les programmes d'application qui sont liés au calcul. Ces applications consacrent la majeure partie de leur temps d'exécution aux exigences de calcul par opposition aux E / S, et nécessitent généralement de petits volumes de données. Le traitement parallèle des applications gourmandes en calcul implique généralement la parallélisation d'algorithmes individuels au sein d'un processus d'application et la décomposition du processus d'application global en tâches distinctes, qui peuvent ensuite être exécutées en parallèle sur une plate-forme informatique appropriée pour obtenir des performances globales plus élevées que le traitement série. Dans les applications gourmandes en calculs, plusieurs opérations sont effectuées simultanément, chaque opération traitant une partie particulière du problème. Ceci est souvent appelé parallélisme des tâches .

Les applications gourmandes en données sont utilisées pour décrire les applications liées aux E / S ou nécessitant de traiter de gros volumes de données. Ces applications consacrent la majeure partie de leur temps de traitement aux E / S et au déplacement et à la manipulation des données. Le traitement parallèle des applications gourmandes en données implique généralement de partitionner ou de subdiviser les données en plusieurs segments qui peuvent être traités indépendamment à l'aide du même programme d'application exécutable en parallèle sur une plate-forme informatique appropriée, puis de réassembler les résultats pour produire les données de sortie complètes. Plus la distribution agrégée des données est grande, plus le traitement parallèle des données est avantageux. Les exigences de traitement intensif en données évoluent normalement de manière linéaire en fonction de la taille des données et se prêtent très bien à une parallélisation simple. Les défis fondamentaux du calcul intensif en données sont la gestion et le traitement de volumes de données en croissance exponentielle, la réduction significative des cycles d'analyse de données associés pour prendre en charge des applications pratiques et opportunes, et le développement de nouveaux algorithmes qui peuvent évoluer pour rechercher et traiter des quantités massives de données. Les chercheurs ont inventé le terme BORPS pour «milliards d'enregistrements par seconde» pour mesurer la vitesse de traitement des enregistrements d'une manière analogue à la façon dont le terme MIPS s'applique pour décrire la vitesse de traitement des ordinateurs.

Parallélisme des données

Les architectures de système informatique qui peuvent prendre en charge des applications parallèles de données ont été promues au début des années 2000 pour les besoins de traitement de données à grande échelle de l'informatique intensive en données. Le parallélisme des données a appliqué le calcul indépendamment à chaque élément de données d'un ensemble de données, ce qui permet au degré de parallélisme d'être mis à l'échelle avec le volume de données. La raison la plus importante du développement d'applications parallèles aux données est le potentiel de performances évolutives et peut entraîner une amélioration des performances de plusieurs ordres de grandeur. Les principaux problèmes liés au développement d'applications utilisant le parallélisme des données sont le choix de l'algorithme, la stratégie de décomposition des données, l'équilibrage de charge sur les nœuds de traitement, les communications de transmission de messages entre les nœuds et la précision globale des résultats. Le développement d'une application parallèle de données peut impliquer une complexité de programmation substantielle pour définir le problème dans le contexte des outils de programmation disponibles et pour remédier aux limitations de l'architecture cible. L'extraction d'informations et l'indexation de documents Web sont typiques du calcul intensif en données qui peut tirer des avantages significatifs en termes de performances des implémentations parallèles de données puisque le Web et d'autres types de collections de documents peuvent généralement être traités en parallèle.

La National Science Foundation (NSF) des États-Unis a financé un programme de recherche de 2009 à 2010. Les domaines d'intérêt étaient les suivants:

  • Approches de la programmation parallèle pour traiter le traitement parallèle des données sur des systèmes à forte intensité de données
  • Programmation d'abstractions comprenant des modèles, des langages et des algorithmes qui permettent une expression naturelle du traitement parallèle des données
  • Conception de plates-formes informatiques gourmandes en données pour offrir des niveaux élevés de fiabilité, d'efficacité, de disponibilité et d'évolutivité.
  • Identifier les applications qui peuvent exploiter ce paradigme informatique et déterminer comment il doit évoluer pour prendre en charge les applications émergentes gourmandes en données

Pacific Northwest National Labs a défini l'informatique à forte intensité de données comme «la capture, la gestion, l'analyse et la compréhension des données à des volumes et des débits qui repoussent les frontières des technologies actuelles».

Approcher

Les plates-formes informatiques à forte intensité de données utilisent généralement une approche de calcul parallèle combinant plusieurs processeurs et disques dans de grands clusters informatiques de base connectés à l'aide de commutateurs et de réseaux de communication à haut débit, ce qui permet aux données d'être partitionnées parmi les ressources informatiques disponibles et traitées indépendamment pour obtenir des performances et une évolutivité. en fonction de la quantité de données. Un cluster peut être défini comme un type de système parallèle et distribué , qui consiste en un ensemble d'ordinateurs autonomes interconnectés fonctionnant ensemble comme une seule ressource informatique intégrée. Cette approche du traitement parallèle est souvent appelée une approche «sans partage», car chaque nœud composé de processeur, de mémoire locale et de ressources de disque ne partage rien avec les autres nœuds du cluster. Dans le calcul parallèle, cette approche est considérée comme appropriée pour le calcul intensif en données et les problèmes qui sont «parallèlement embarrassants», c'est-à-dire où il est relativement facile de séparer le problème en un certain nombre de tâches parallèles et qu'il n'y a pas de dépendance ou de communication requise entre les tâches autres que la gestion globale des tâches. Ces types de problèmes de traitement de données sont intrinsèquement adaptables à diverses formes de calcul distribué, y compris les clusters, les grilles de données et le cloud computing .

Caractéristiques

Plusieurs caractéristiques communes des systèmes informatiques à forte intensité de données les distinguent des autres formes de calcul:

  1. Le principe de collecte des données et programmes ou algorithmes est utilisé pour effectuer le calcul. Pour obtenir des performances élevées dans le calcul intensif en données, il est important de minimiser le mouvement des données. Cette caractéristique permet aux algorithmes de traitement de s'exécuter sur les nœuds où résident les données, ce qui réduit la surcharge du système et augmente les performances. Les nouvelles technologies telles qu'InfiniBand permettent de stocker les données dans un référentiel séparé et offrent des performances comparables à celles des données colocalisées.
  2. Le modèle de programmation utilisé. Les systèmes informatiques à forte intensité de données utilisent une approche indépendante de la machine dans laquelle les applications sont exprimées en termes d'opérations de haut niveau sur les données, et le système d'exécution contrôle de manière transparente la planification, l'exécution, l'équilibrage de charge, les communications et le mouvement des programmes et des données à travers le cluster informatique distribué. L'abstraction de programmation et les outils de langage permettent d'exprimer le traitement en termes de flux de données et de transformations intégrant de nouveaux langages de programmation de flux de données et des bibliothèques partagées d'algorithmes de manipulation de données courants tels que le tri.
  3. Un accent sur la fiabilité et la disponibilité. Les systèmes à grande échelle avec des centaines ou des milliers de nœuds de traitement sont intrinsèquement plus sensibles aux pannes matérielles, aux erreurs de communication et aux bogues logiciels. Les systèmes informatiques gourmands en données sont conçus pour résister aux pannes. Cela comprend généralement des copies redondantes de tous les fichiers de données sur le disque, le stockage des résultats de traitement intermédiaires sur le disque, la détection automatique des échecs de noeud ou de traitement et le recalcul sélectif des résultats.
  4. L'évolutivité inhérente à l' architecture matérielle et logicielle sous-jacente . Les systèmes informatiques à forte intensité de données peuvent généralement être mis à l'échelle de manière linéaire pour accueillir pratiquement n'importe quelle quantité de données, ou pour répondre aux exigences de performances critiques en termes de temps en ajoutant simplement des nœuds de traitement supplémentaires. Le nombre de nœuds et de tâches de traitement attribués à une application spécifique peut être variable ou fixe en fonction du matériel, des logiciels, des communications et de l' architecture du système de fichiers distribué .

Architectures système

Diverses architectures système ont été mises en œuvre pour les applications de calcul intensif en données et d'analyse de données à grande échelle, y compris les systèmes de gestion de bases de données relationnelles parallèles et distribuées qui sont disponibles pour fonctionner sur des grappes de nœuds de traitement partagés depuis plus de deux décennies. Cependant, l'essentiel de la croissance des données se fait avec des données sous forme non structurée et de nouveaux paradigmes de traitement avec des modèles de données plus flexibles étaient nécessaires. Plusieurs solutions ont vu le jour, notamment l' architecture MapReduce lancée par Google et désormais disponible dans une implémentation open source appelée Hadoop utilisée par Yahoo , Facebook et autres. LexisNexis Risk Solutions a également développé et mis en œuvre une plate-forme évolutive pour le calcul intensif en données qui est utilisée par LexisNexis .

MapReduce

L' architecture et le modèle de programmation MapReduce mis au point par Google sont un exemple d'architecture de systèmes moderne conçue pour le calcul intensif en données. L'architecture MapReduce permet aux programmeurs d'utiliser un style de programmation fonctionnel pour créer une fonction de carte qui traite une paire clé-valeur associée aux données d'entrée pour générer un ensemble de paires clé-valeur intermédiaires , et une fonction de réduction qui fusionne toutes les valeurs intermédiaires associées à la même clé intermédiaire. Étant donné que le système prend automatiquement en charge les détails tels que le partitionnement des données d'entrée, la planification et l'exécution des tâches sur un cluster de traitement et la gestion des communications entre les nœuds, les programmeurs sans expérience en programmation parallèle peuvent facilement utiliser un vaste environnement de traitement distribué.

Le modèle de programmation de l' architecture MapReduce est une abstraction simple où le calcul prend un ensemble de paires clé-valeur d'entrée associées aux données d'entrée et produit un ensemble de paires clé-valeur en sortie. Dans la phase de mappage, les données d'entrée sont partitionnées en divisions d'entrée et affectées aux tâches de mappage associées aux nœuds de traitement dans le cluster. La tâche de mappage s'exécute généralement sur le même nœud contenant sa partition de données affectée dans le cluster. Ces tâches de mappage effectuent des calculs spécifiés par l'utilisateur sur chaque paire clé-valeur d'entrée à partir de la partition de données d'entrée affectée à la tâche et génèrent un ensemble de résultats intermédiaires pour chaque clé. La phase de mélange et de tri prend ensuite les données intermédiaires générées par chaque tâche de carte, trie ces données avec les données intermédiaires d'autres nœuds, divise ces données en régions à traiter par les tâches de réduction et distribue ces données selon les besoins aux nœuds où le paramètre Réduire les tâches s’exécuteront. Les tâches de réduction exécutent des opérations supplémentaires spécifiées par l'utilisateur sur les données intermédiaires, éventuellement en fusionnant des valeurs associées à une clé avec un ensemble de valeurs plus petit pour produire les données de sortie. Pour des procédures de traitement de données plus complexes, plusieurs appels MapReduce peuvent être liés en séquence.

Hadoop

Apache Hadoop est un projet de logiciel open source sponsorisé par The Apache Software Foundation qui implémente l'architecture MapReduce. Hadoop englobe désormais plusieurs sous-projets en plus du système de fichiers distribué de base, MapReduce et HDFS. Ces sous-projets supplémentaires fournissent des capacités de traitement des applications améliorées à l'implémentation Hadoop de base et incluent actuellement Avro, Pig , HBase , ZooKeeper , Hive et Chukwa. L'architecture Hadoop MapReduce est fonctionnellement similaire à l'implémentation Google, sauf que le langage de programmation de base pour Hadoop est Java au lieu de C ++ . La mise en œuvre est destinée à s'exécuter sur des grappes de transformateurs de produits de base.

Hadoop implémente un environnement et un cadre de planification et d'exécution de traitement de données distribués pour les travaux MapReduce. Hadoop inclut un système de fichiers distribué appelé HDFS qui est analogue à GFS dans l'implémentation de Google MapReduce. L'environnement d'exécution Hadoop prend en charge des capacités de traitement de données distribuées supplémentaires conçues pour s'exécuter à l'aide de l'architecture Hadoop MapReduce. Il s'agit notamment de HBase , une base de données distribuée orientée colonnes qui fournit des capacités de lecture / écriture à accès aléatoire; Hive qui est un système d' entrepôt de données construit sur Hadoop qui fournit des capacités de requête de type SQL pour la synthèse des données, les requêtes ad hoc et l'analyse de grands ensembles de données; et Pig - un langage de programmation et un cadre d'exécution de flux de données de haut niveau pour le calcul intensif en données.

Pig a été développé chez Yahoo! pour fournir une notation de langage spécifique pour les applications d'analyse de données et pour améliorer la productivité des programmeurs et réduire les cycles de développement lors de l'utilisation de l'environnement Hadoop MapReduce. Les programmes Pig sont automatiquement traduits en séquences de programmes MapReduce si nécessaire dans l'environnement d'exécution. Pig fournit des fonctionnalités dans la langue pour charger, stocker, filtrer, regrouper, dédupliquer, ordonner, trier, agréger et joindre les opérations sur les données.

HPCC

HPCC (High-Performance Computing Cluster) a été développé et implémenté par LexisNexis Risk Solutions. Le développement de cette plate-forme informatique a commencé en 1999 et les applications étaient en production à la fin de 2000. L'approche HPCC utilise également des grappes matérielles de base exécutant le système d' exploitation Linux . Un logiciel système personnalisé et des composants middleware ont été développés et mis en couches sur le système d'exploitation Linux de base pour fournir l'environnement d'exécution et la prise en charge du système de fichiers distribué requis pour le calcul intensif en données. LexisNexis a également implémenté un nouveau langage de haut niveau pour le calcul intensif en données.

Le langage de programmation ECL est un langage de haut niveau, déclaratif, centré sur les données, implicitement parallèle qui permet au programmeur de définir ce que devrait être le résultat du traitement des données et les flux de données et les transformations nécessaires pour obtenir le résultat. Le langage ECL comprend des fonctionnalités étendues pour la définition, le filtrage, la gestion des données et la transformation des données, et fournit un ensemble complet de fonctions intégrées pour opérer sur des enregistrements dans des ensembles de données qui peuvent inclure des fonctions de transformation définies par l'utilisateur. Les programmes ECL sont compilés en code source C ++ optimisé , qui est ensuite compilé en code exécutable et distribué aux nœuds d'un cluster de traitement.

Pour traiter à la fois les applications de traitement par lots et en ligne à forte intensité de données, HPCC comprend deux environnements de cluster distincts, chacun pouvant être optimisé indépendamment pour son objectif de traitement de données parallèle. La plate-forme Thor est un cluster dont le but est d'être une raffinerie de données pour le traitement de volumes massifs de données brutes pour des applications telles que le nettoyage et l'hygiène des données , l' extraction, la transformation, le chargement (ETL), la liaison d'enregistrements et la résolution d'entités, la publicité à grande échelle analyse ponctuelle des données et création de données clés et d'index pour prendre en charge des requêtes structurées hautes performances et des applications d'entrepôt de données. Un système Thor est similaire dans sa configuration matérielle, ses fonctions, son environnement d'exécution, son système de fichiers et ses capacités à la plate-forme Hadoop MapReduce, mais offre des performances supérieures dans des configurations équivalentes. La plate-forme Roxie fournit un système de requête et d'analyse structuré haute performance en ligne ou un entrepôt de données fournissant les exigences de traitement d'accès aux données parallèles des applications en ligne via des interfaces de services Web prenant en charge des milliers de requêtes et d'utilisateurs simultanés avec des temps de réponse inférieurs à la seconde. Un système Roxie est similaire dans sa fonction et ses capacités à Hadoop avec les capacités HBase et Hive ajoutées, mais fournit un environnement d'exécution et un système de fichiers optimisés pour un traitement en ligne haute performance. Les systèmes Thor et Roxie utilisent le même langage de programmation ECL pour implémenter des applications, augmentant ainsi la productivité des programmeurs.

Voir également

Les références