Introduction aux concepts et à la terminologie Big Data

introduction

  • Big Data * est un terme générique désignant les stratégies et technologies non traditionnelles nécessaires pour collecter, organiser, traiter et recueillir des informations à partir de vastes ensembles de données. Bien que le problème de l’utilisation de données dépassant la puissance de calcul ou le stockage d’un seul ordinateur ne soit pas nouveau, l’omniprésence, l’ampleur et la valeur de ce type d’informatique se sont considérablement accrues ces dernières années.

Dans cet article, nous aborderons le Big Data à un niveau fondamental et définirons les concepts communs que vous pourriez rencontrer lors de vos recherches. Nous examinerons également certains des processus et des technologies actuellement utilisés dans cet espace.

Qu’est-ce que le Big Data?

Il est difficile de définir avec exactitude la définition exacte du «big data», car les projets, les fournisseurs, les praticiens et les professionnels l’utilisent de manière très différente. Dans cet esprit, * en gros, le Big Data * est:

  • grands ensembles de données

  • la catégorie de stratégies et de technologies informatiques utilisées pour gérer de grands ensembles de données

Dans ce contexte, «grand jeu de données» signifie un jeu de données trop volumineux pour être raisonnablement traité ou stocké avec un outillage traditionnel ou sur un seul ordinateur. Cela signifie que l’échelle commune aux grands ensembles de données évolue constamment et peut varier considérablement d’une organisation à l’autre.

Pourquoi les systèmes Big Data sont-ils différents?

Les exigences de base pour travailler avec le Big Data sont les mêmes que celles pour travailler avec des jeux de données de toute taille. Toutefois, l’énorme volume, la rapidité d’ingestion et de traitement et les caractéristiques des données à traiter à chaque étape du processus posent de nouveaux défis lors de la conception de solutions. L’objectif de la plupart des systèmes de données volumineuses est de faire ressortir des informations et des connexions à partir de grands volumes de données hétérogènes qui ne seraient pas possibles avec les méthodes classiques.

En 2001, Doug Laney, de Gartner, a présenté pour la première fois ce que l’on appelle désormais les «trois composantes du big data», afin de décrire certaines des caractéristiques qui différencient le big data des autres traitements de données:

Le volume

L’ampleur des informations traitées permet de définir les systèmes Big Data. Ces jeux de données peuvent avoir des ordres de grandeur supérieurs à ceux des jeux de données traditionnels, ce qui demande plus de réflexion à chaque étape du cycle de vie du traitement et du stockage.

Souvent, du fait que les exigences de travail dépassent les capacités d’un seul ordinateur, la mise en commun, l’allocation et la coordination des ressources provenant de groupes d’ordinateurs deviennent un défi. La gestion des grappes et des algorithmes capables de décomposer des tâches en éléments plus petits deviennent de plus en plus importants.

Rapidité

Une autre différence entre les mégadonnées et les autres systèmes de données réside dans la rapidité avec laquelle l’information circule dans le système. Les données arrivent fréquemment dans le système à partir de sources multiples et doivent souvent être traitées en temps réel pour obtenir des informations et mettre à jour la compréhension actuelle du système.

Cette focalisation sur le retour quasi instantané a conduit de nombreux praticiens du Big Data à abandonner une approche par lots et à se rapprocher d’un système de streaming en temps réel. Les données sont constamment ajoutées, massées, traitées et analysées afin de faire face à l’afflux de nouvelles informations et de révéler rapidement des informations précieuses dès qu’elles sont pertinentes. Ces idées nécessitent des systèmes robustes avec des composants hautement disponibles pour se prémunir contre les défaillances le long du pipeline de données.

Variété

Les problèmes liés aux mégadonnées sont souvent uniques en raison du large éventail de sources traitées et de leur qualité relative.

Les données peuvent être ingérées à partir de systèmes internes tels que les journaux des applications et des serveurs, des flux de médias sociaux et d’autres API externes, à partir de capteurs de périphériques physiques et d’autres fournisseurs. Le Big Data cherche à traiter des données potentiellement utiles, quelle que soit leur origine, en consolidant toutes les informations dans un système unique.

Les formats et les types de supports peuvent également varier considérablement. Les médias enrichis, tels que les images, les fichiers vidéo et les enregistrements audio, sont intégrés aux fichiers texte, aux journaux structurés, etc. Alors que les systèmes de traitement de données plus traditionnels peuvent s’attendre à ce que les données entrent dans le pipeline déjà étiqueté, formaté et organisé, les systèmes de données volumineuses acceptent et stockent généralement les données plus près de leur état brut. Idéalement, toute transformation ou modification des données brutes se produira en mémoire au moment du traitement.

Autres caractéristiques

Diverses personnes et organisations ont suggéré d’élargir les trois V originaux, bien que ces propositions aient eu tendance à décrire les défis plutôt que les qualités du Big Data. Certains ajouts courants sont:

  • * Véracité *: La variété des sources et la complexité du traitement peuvent poser des problèmes lors de l’évaluation de la qualité des données (et par conséquent de la qualité de l’analyse résultante)

  • * Variabilité *: La variation des données entraîne une grande variation de qualité. Des ressources supplémentaires peuvent être nécessaires pour identifier, traiter ou filtrer des données de mauvaise qualité afin de les rendre plus utiles.

  • * Valeur *: Le défi ultime du Big Data est de générer de la valeur. Parfois, les systèmes et processus en place sont suffisamment complexes pour que l’utilisation des données et l’extraction de la valeur réelle deviennent difficiles.

À quoi ressemble un cycle de vie de Big Data?

Alors, comment les données sont-elles réellement traitées dans le cas d’un système Big Data? Bien que les approches de mise en œuvre diffèrent, il existe des points communs dans les stratégies et les logiciels dont nous pouvons parler en général. Bien que les étapes présentées ci-dessous puissent ne pas être vraies dans tous les cas, elles sont largement utilisées.

Les catégories générales d’activités impliquées dans le traitement de données volumineuses sont les suivantes:

  • Acquisition de données dans le système

  • Persistance des données en stockage

  • Calcul et analyse des données

  • Visualiser les résultats

Avant d’examiner en détail ces quatre catégories de flux de travail, nous allons prendre quelques instants pour parler de * l’informatique en cluster *, une stratégie importante utilisée par la plupart des solutions Big Data. La mise en place d’une grappe informatique est souvent à la base de la technologie utilisée à chacune des étapes du cycle de vie.

Informatique en cluster

En raison des qualités du Big Data, les ordinateurs individuels sont souvent insuffisants pour traiter les données à la plupart des étapes. Pour mieux répondre aux besoins de stockage et de calcul élevés du Big Data, les grappes d’ordinateurs sont mieux adaptées.

Le logiciel de clustering de données volumineuses combine les ressources de nombreuses petites machines et cherche à fournir un certain nombre d’avantages:

  • * Regroupement des ressources *: La combinaison de l’espace de stockage disponible pour stocker des données est un avantage évident, mais le regroupement de la CPU et de la mémoire est également extrêmement important. Le traitement de grands ensembles de données nécessite de grandes quantités de ces trois ressources.

  • * Haute disponibilité *: les clusters peuvent fournir différents niveaux de tolérance aux pannes et de garantie de disponibilité pour empêcher les pannes matérielles ou logicielles d’affecter l’accès aux données et au traitement. Cela devient de plus en plus important au fur et à mesure que nous insistons sur l’importance de l’analyse en temps réel.

  • * Evolutivité facile *: les grappes facilitent la mise à l’échelle horizontale en ajoutant des machines supplémentaires au groupe. Cela signifie que le système peut réagir aux modifications des besoins en ressources sans développer les ressources physiques sur une machine.

L’utilisation de clusters nécessite une solution pour gérer l’appartenance à un cluster, coordonner le partage des ressources et planifier le travail réel sur des nœuds individuels. L’appartenance à un cluster et l’allocation de ressources peuvent être gérées par des logiciels tels que * Hadoop’s YARN * (qui signifie Yet Another Resource Negotiator) ou * Apache Mesos *.

Le cluster informatique assemblé sert souvent de base aux interfaces logicielles avec lesquelles le logiciel traite les données. Les machines impliquées dans le cluster informatique sont également généralement impliquées dans la gestion d’un système de stockage distribué, ce dont nous parlerons quand nous parlerons de la persistance des données.

Intégration de données dans le système

L’ingestion de données est le processus consistant à prendre des données brutes et à les ajouter au système. La complexité de cette opération dépend fortement du format et de la qualité des sources de données et de la distance qui sépare les données de l’état souhaité avant leur traitement.

Les données peuvent être ajoutées à un système de données volumineuses grâce à des outils d’ingestion dédiés. Des technologies telles que * Apache Sqoop * peuvent extraire des données existantes de bases de données relationnelles et les ajouter à un système Big Data. De même, * Apache Flume * et * Apache Chukwa * sont des projets conçus pour agréger et importer des journaux d’application et de serveur. Les systèmes de file d’attente tels que * Apache Kafka * peuvent également être utilisés comme interface entre divers générateurs de données et un système Big Data. Les cadres d’ingestion tels que * Gobblin * peuvent aider à agréger et à normaliser les résultats de ces outils à la fin du pipeline d’ingestion.

Au cours du processus d’ingestion, un certain niveau d’analyse, de tri et d’étiquetage a généralement lieu. Ce processus est parfois appelé ETL, qui signifie extraire, transformer et charger. Bien que ce terme se réfère conventionnellement aux processus d’entreposage de données hérités, certains des mêmes concepts s’appliquent aux données qui entrent dans le système Big Data. Les opérations typiques peuvent inclure la modification des données entrantes pour les formater, la catégorisation et l’étiquetage des données, le filtrage des données inutiles ou erronées ou la validation éventuelle du respect de certaines exigences.

En gardant à l’esprit ces capacités, idéalement, les données capturées devraient être conservées aussi brutes que possible pour une plus grande flexibilité à long terme.

Persistance des données en stockage

Les processus d’ingestion transfèrent généralement les données aux composants qui gèrent le stockage, afin de pouvoir les conserver de manière fiable sur le disque. Bien que cela semble être une opération simple, le volume de données entrantes, les exigences de disponibilité et la couche informatique répartie rendent nécessaires des systèmes de stockage plus complexes.

Cela signifie généralement qu’il faut utiliser un système de fichiers distribué pour le stockage de données brutes. Des solutions telles que le système de fichiers HDFS * * d’Apache Hadoop permettent d’écrire de grandes quantités de données sur plusieurs nœuds du cluster. Cela garantit que les données sont accessibles aux ressources informatiques, peuvent être chargées dans la mémoire vive du cluster pour les opérations en mémoire et permettent de gérer correctement les défaillances des composants. D’autres systèmes de fichiers distribués peuvent être utilisés à la place de HDFS, notamment * Ceph * et * GlusterFS *.

Les données peuvent également être importées dans d’autres systèmes distribués pour un accès plus structuré. Les bases de données distribuées, en particulier les bases de données NoSQL, conviennent parfaitement à ce rôle car elles sont souvent conçues avec les mêmes considérations de tolérance aux pannes et peuvent gérer des données hétérogènes. Vous pouvez choisir parmi de nombreux types de bases de données distribuées en fonction de la manière dont vous souhaitez organiser et présenter les données. Pour en savoir plus sur certaines des options et sur le but qu’elles servent le mieux, lisez notre NoSQL guide de comparaison.

Calcul et analyse des données

Une fois les données disponibles, le système peut commencer à les traiter pour afficher les informations réelles. La couche de calcul est peut-être la partie la plus diverse du système car les exigences et la meilleure approche peuvent varier considérablement en fonction du type d’informations souhaité. Les données sont souvent traitées à plusieurs reprises, soit de manière itérative par un seul outil, soit en utilisant un certain nombre d’outils pour faire apparaître différents types d’informations.

  • Le traitement par lots * est une méthode de calcul sur un grand ensemble de données. Le processus consiste à diviser le travail en plusieurs parties plus petites, à planifier chaque pièce sur une machine individuelle, à redistribuer les données en fonction des résultats intermédiaires, puis à calculer et à assembler le résultat final. Ces étapes sont souvent désignées individuellement comme fractionnement, mappage, réorganisation, réduction et assemblage, ou collectivement comme algorithme de réduction de carte distribuée. C’est la stratégie utilisée par MapReduce * de Apache Hadoop. Le traitement par lots est particulièrement utile pour traiter de très grands ensembles de données nécessitant beaucoup de calcul.

Bien que le traitement par lots convienne bien à certains types de données et de calculs, les autres charges de travail nécessitent davantage de * traitements en temps réel *. Le traitement en temps réel exige que les informations soient traitées et préparées immédiatement et que le système réagisse à mesure que de nouvelles informations deviennent disponibles. Un moyen d’y parvenir est le * traitement de flux *, qui opère sur un flux continu de données composé d’éléments individuels. Une autre caractéristique commune des processeurs temps réel est l’informatique en mémoire, qui utilise des représentations des données dans la mémoire du cluster pour éviter d’avoir à écrire sur le disque.

  • Apache Storm *, * Apache Flink * et * Apache Spark * offrent différents moyens d’obtenir un traitement en temps réel ou quasi réel. Il existe des compromis entre chacune de ces technologies, ce qui peut affecter l’approche la mieux adaptée à un problème donné. En général, le traitement en temps réel convient mieux à l’analyse de petits morceaux de données qui changent ou sont ajoutés au système rapidement.

Les exemples ci-dessus représentent des cadres de calcul. Cependant, il existe de nombreuses autres façons de traiter ou d’analyser des données dans un système Big Data. Ces outils se connectent fréquemment aux cadres ci-dessus et fournissent des interfaces supplémentaires pour interagir avec les couches sous-jacentes. Par exemple, * Apache Hive * fournit une interface de stockage de données pour Hadoop, * Apache Pig * fournit une interface de requête de haut niveau, tandis que des interactions de type SQL avec des données peuvent être obtenues avec des projets tels que * Apache Drill *, * Apache Impala *, * Apache Spark SQL * et * Presto *. Pour l’apprentissage automatique, des projets tels que * Apache SystemML *, * Apache Mahout * et * Apache Spark’s MLlib * peuvent être utiles. Pour la programmation analytique directe qui prend largement en charge l’écosystème du Big Data, * R * et * Python * sont des choix courants.

Visualiser les résultats

En raison du type d’informations traitées dans les systèmes Big Data, il est souvent plus important de reconnaître les tendances ou les modifications des données au fil du temps que les valeurs elles-mêmes. La visualisation des données est l’un des moyens les plus utiles de repérer les tendances et de donner un sens à un grand nombre de points de données.

Le traitement en temps réel est fréquemment utilisé pour visualiser les métriques des applications et des serveurs. Les données changent fréquemment et les deltas importants dans les métriques indiquent généralement des impacts significatifs sur la santé des systèmes ou de l’organisation. Dans ces cas, des projets tels que * Prometheus * peuvent être utiles pour traiter les flux de données sous forme de base de données chronologiques et pour visualiser ces informations.

Un moyen populaire de visualiser les données est le * Elastic Stack *, anciennement connu sous le nom de pile ELK. Composée de Logstash pour la collecte de données, d’Elasticsearch pour l’indexation des données et de Kibana pour la visualisation, la pile Elastic peut être utilisée avec des systèmes Big Data pour établir une interface visuelle avec les résultats de calculs ou de mesures brutes. Une pile similaire peut être obtenue en utilisant * Apache Solr * pour l’indexation et un fork de Kibana appelé * Banana * pour la visualisation. La pile créée par ceux-ci s’appelle * Silk *.

Une autre technologie de visualisation généralement utilisée pour les travaux de science des données interactifs est un «cahier» de données. Ces projets permettent une exploration et une visualisation interactives des données dans un format propice au partage, à la présentation ou à la collaboration. Les exemples courants de ce type d’interface de visualisation sont * Jupyter Notebook * et * Apache Zeppelin *.

Glossaire Big Data

Bien que nous ayons essayé de définir les concepts tels que nous les avons utilisés tout au long du guide, il est parfois utile de disposer de la terminologie spécialisée disponible à un seul endroit:

  • * Big Data *: Big Data est un terme générique pour des ensembles de données qui ne peuvent pas être raisonnablement gérés par des ordinateurs ou des outils traditionnels en raison de leur volume, de leur vitesse et de leur variété. Ce terme s’applique aussi généralement aux technologies et stratégies permettant de travailler avec ce type de données.

  • * Traitement par lots *: Le traitement par lots est une stratégie informatique qui implique le traitement de données dans de grands ensembles. Ceci est généralement idéal pour les travaux non sensibles au facteur temps qui fonctionnent sur de très grands ensembles de données. Le processus est lancé et les résultats sont renvoyés ultérieurement par le système.

  • * Informatique en cluster *: L’informatique en cluster consiste à mettre en commun les ressources de plusieurs machines et à gérer leurs capacités collectives pour effectuer des tâches. Les clusters d’ordinateurs nécessitent une couche de gestion des clusters qui gère la communication entre les nœuds individuels et coordonne l’attribution des tâches.

  • * Lac de données *: Lac de données est un terme désignant un vaste référentiel de données collectées à l’état relativement brut. Ceci est fréquemment utilisé pour faire référence aux données collectées dans un système de données volumineuses qui peuvent être non structurées et changent fréquemment. Cela diffère en esprit des entrepôts de données (définis ci-dessous).

  • * Exploration de données *: L’exploration de données est un terme général désignant la pratique consistant à essayer de trouver des modèles dans de grands ensembles de données. Il s’agit d’essayer d’affiner une masse de données en un ensemble d’informations plus compréhensible et cohérent.

  • * Entrepôt de données *: Les entrepôts de données sont de grands référentiels de données ordonnés pouvant être utilisés pour l’analyse et la création de rapports. Contrairement à un lac de données, un entrepôt de données est composé de données nettoyées, intégrées à d’autres sources et généralement bien ordonnées. Les entrepôts de données sont souvent mentionnés en relation avec le Big Data, mais sont généralement des composants de systèmes plus conventionnels.

  • * ETL *: ETL signifie extraire, transformer et charger. Il fait référence au processus de prise de données brutes et de préparation pour l’utilisation du système. Il s’agit généralement d’un processus associé aux entrepôts de données, mais on en trouve également les caractéristiques dans les pipelines d’ingestion de systèmes Big Data.

  • * Hadoop *: Hadoop est un projet Apache qui a été le premier succès open-source du big data. Il consiste en un système de fichiers distribué appelé HDFS, avec un gestionnaire de cluster et un planificateur de ressources appelé YARN (Yet Another Resource Negotiator). Les capacités de traitement par lots sont fournies par le moteur de calcul MapReduce. D’autres systèmes de calcul et d’analyse peuvent être utilisés parallèlement à MapReduce dans les déploiements Hadoop modernes.

  • * Calcul en mémoire *: le calcul en mémoire est une stratégie qui consiste à déplacer entièrement les jeux de données de travail dans la mémoire collective d’un cluster. Les calculs intermédiaires ne sont pas écrits sur le disque, mais conservés en mémoire. Cela confère aux systèmes informatiques en mémoire comme Apache Spark un avantage considérable en termes de rapidité par rapport aux systèmes liés aux E / S tels que MapReduce de Hadoop.

  • * Apprentissage machine *: L’apprentissage machine est l’étude et la pratique de la conception de systèmes capables d’apprendre, d’ajuster et d’améliorer en fonction des données qui leur sont fournies. Cela implique généralement la mise en œuvre d’algorithmes prédictifs et statistiques capables de détecter en permanence le comportement et les informations «corrects» à mesure que davantage de données circulent dans le système.

  • * Réduction de la carte (algorithme Big Data) *: La réduction de la carte (l’algorithme Big Data, et non le moteur de calcul MapReduce de Hadoop) est un algorithme permettant de planifier le travail sur un cluster de calcul. Le processus implique la division de la configuration du problème (en la mappant sur différents nœuds) et leur calcul pour produire des résultats intermédiaires, en mélangeant les résultats pour les aligner, puis en réduisant les résultats en générant une valeur unique pour chaque jeu.

  • * NoSQL *: NoSQL est un terme générique faisant référence à des bases de données conçues en dehors du modèle relationnel traditionnel. Les bases de données NoSQL ont des compromis différents par rapport aux bases de données relationnelles, mais sont souvent bien adaptées aux systèmes de données volumineuses en raison de leur flexibilité et de leur architecture fréquente en premier lieu.

  • * Traitement de flux *: Le traitement de flux consiste à analyser des éléments de données individuels au fur et à mesure qu’ils se déplacent dans un système. Cela permet une analyse en temps réel des données envoyées au système et est utile pour les opérations sensibles au facteur temps utilisant des métriques à grande vitesse.

Conclusion

Le Big Data est un sujet vaste et en évolution rapide. Bien qu’il ne soit pas adapté à tous les types d’informatique, de nombreuses entreprises se tournent vers le Big Data pour certains types de charges de travail et l’utilisent pour compléter leurs outils d’analyse et de gestion existants. Les systèmes de données volumineuses sont particulièrement bien adaptés pour faire émerger des motifs difficiles à détecter et donner un aperçu des comportements impossibles à détecter par les moyens conventionnels. En mettant correctement en œuvre des systèmes traitant du Big Data, les entreprises peuvent tirer une valeur incroyable des données déjà disponibles.