À quoi sert Hadoop? (Meilleures utilisations, alternatives et outils)

Jetons un coup d’œil au projet Hadoop – ce qu’il est et quand son utilisation pourrait convenir à votre projet. Hadoop est utilisé par une liste impressionnante de sociétés, notamment Facebook, LinkedIn, Alibaba, eBay et Amazon.


En bref, Hadoop est idéal pour l’analyse de données MapReduce sur d’énormes quantités de données. Ses cas d’utilisation spécifiques incluent: la recherche de données, l’analyse de données, la communication de données, l’indexation à grande échelle de fichiers (par exemple, les fichiers journaux ou les données des robots d’indexation), et d’autres tâches de traitement de données utilisant ce qui est familièrement connu dans le monde du développement comme «Big Data . “

Dans cet article, nous allons couvrir: quand utiliser Hadoop, quand NE PAS utiliser Hadoop, les bases de Hadoop (HDFS, MapReduce et YARN), les outils liés à Hadoop et les alternatives Hadoop.

Une fois que nous avons passé en revue tous les sujets ci-dessus, vous devriez pouvoir répondre en toute confiance à la question: Hadoop a-t-il quelque chose à offrir à mon entreprise?

Quand utiliser Hadoop

HadoopAvant de discuter du fonctionnement de Hadoop, examinons quelques scénarios dans lesquels Hadoop pourrait être la réponse à vos besoins de traitement des données. Après cela, nous couvrirons les situations où NE PAS utiliser Hadoop.

Gardez à l’esprit que l’infrastructure Hadoop et la programmation des tâches MapReduce basées sur Java nécessitent une expertise technique pour une configuration et une maintenance appropriées. Si ces compétences sont trop coûteuses à embaucher ou à entretenir vous-même, vous voudrez peut-être envisager d’autres options de traitement des données pour vos Big Data. (Passer aux alternatives à Hadoop!)

1. Pour le traitement de données vraiment GRANDES:

Si vos données sont sérieusement volumineuses – nous parlons au moins de téraoctets ou de pétaoctets de données – Hadoop est fait pour vous. Pour d’autres ensembles de données pas si grands (pensez gigaoctets), il existe de nombreux autres outils disponibles avec un coût d’implémentation et de maintenance beaucoup plus faible (par exemple, divers RDBM et systèmes de base de données NoSQL). Peut-être que votre ensemble de données n’est pas très important pour le moment, mais cela pourrait changer à mesure que la taille de vos données augmente en raison de divers facteurs. Dans ce cas, une planification minutieuse peut être nécessaire – en particulier si vous souhaitez que toutes les données brutes soient toujours disponibles pour un traitement flexible des données.

2. Pour stocker un ensemble diversifié de données:

Hadoop peut stocker et traiter toutes les données de fichier: grandes ou petites, que ce soit des fichiers texte ou des fichiers binaires comme des images, même plusieurs versions différentes d’un format de données particulier sur différentes périodes. Vous pouvez à tout moment modifier la façon dont vous traitez et analysez vos données Hadoop. Cette approche flexible permet des développements innovants, tout en traitant d’énormes quantités de données, plutôt que des migrations de données traditionnelles lentes et / ou complexes. Le terme utilisé pour ces types de magasins de données flexibles est lacs de données.

3. Pour le traitement parallèle des données:

L’algorithme MapReduce nécessite que vous puissiez paralléliser votre traitement de données. MapReduce fonctionne très bien dans les situations où les variables sont traitées une par une (par exemple, le comptage ou l’agrégation); cependant, lorsque vous devez traiter des variables conjointement (par exemple, avec de nombreuses corrélations entre les variables), ce modèle ne fonctionne pas.

Tout traitement de données basé sur un graphique (c’est-à-dire un réseau complexe de données dépendant d’autres données) ne convient pas à la méthodologie standard de Hadoop. Cela étant dit, le cadre Apache Tez associé permet l’utilisation d’une approche basée sur les graphiques pour le traitement des données à l’aide de YARN au lieu du flux de travail MapReduce plus linéaire..

Quand NE PAS utiliser Hadoop

Passons maintenant en revue certains cas où il ne serait PAS approprié d’utiliser Hadoop.

1. Pour l’analyse des données en temps réel:

Hadoop fonctionne par lot (pas tout à la fois!), Traitant des travaux de longue durée sur de grands ensembles de données. Ces travaux prendront beaucoup plus de temps à traiter qu’une requête de base de données relationnelle sur certaines tables. Il n’est pas rare qu’un travail Hadoop prenne des heures voire des jours pour terminer le traitement, en particulier dans le cas de très gros ensembles de données.

La mise en garde: Une solution possible à ce problème consiste à stocker vos données dans HDFS et à utiliser le cadre Spark. Avec Spark, le traitement peut être effectué en temps réel en utilisant des données en mémoire. Cela permet une accélération de 100x; cependant, une accélération de 10x est également possible lors de l’utilisation de la mémoire du disque, en raison de son approche de travail MapReduce «en plusieurs étapes».

2. Pour un système de base de données relationnelle:

En raison des temps de réponse lents, Hadoop ne doit pas être utilisé pour une base de données relationnelle.

La mise en garde: une solution possible à ce problème consiste à utiliser le moteur SQL Hive, qui fournit des résumés de données et prend en charge les requêtes ad hoc. Hive fournit un mécanisme pour projeter une certaine structure sur les données Hadoop, puis interroger les données à l’aide d’un langage de type SQL appelé HiveQL.

3. Pour un système de fichiers réseau général:

Les temps de réponse lents excluent également Hadoop en tant que système de fichiers général en réseau potentiel. Il existe également d’autres problèmes de système de fichiers, car il manque à HDFS la plupart des fonctionnalités standard du système de fichiers POSIX que les applications attendent d’un système de fichiers réseau général. Selon la documentation Hadoop, «les applications HDFS ont besoin d’un modèle d’accès en écriture et en lecture-multiple pour les fichiers. Un fichier une fois créé, écrit et fermé ne doit pas être modifié, sauf pour les ajouts et les tronques. » Vous pouvez ajouter du contenu à la fin des fichiers, mais vous ne pouvez pas mettre à jour à un point «arbitraire».

4. Pour le traitement de données non parallèle:

MapReduce n’est pas toujours le meilleur algorithme pour vos besoins de traitement de données. Chaque opération MapReduce doit être indépendante de toutes les autres. Si l’opération nécessite de connaître un grand nombre d’informations provenant de travaux précédemment traités (état partagé), le modèle de programmation MapReduce n’est peut-être pas la meilleure option.

Diagramme du flux de travail Hadoop MadReduce

Hadoop et son modèle de programmation MapReduce sont mieux utilisés pour traiter les données en parallèle.

La mise en garde: ces problèmes de dépendance à l’état peuvent parfois être partiellement résolus en exécutant plusieurs tâches MapReduce, la sortie de l’une étant l’entrée pour la suivante. C’est quelque chose que le framework Apache Tez fait en utilisant une approche graphique pour le traitement des données Hadoop. Une autre option à considérer consiste à utiliser HBase pour stocker tout état partagé dans ce grand système de table. Ces solutions, cependant, ajoutent de la complexité au flux de travail Hadoop.

Qu’est-ce que Hadoop? – 3 composants de base

Hadoop se compose de trois composants principaux: un système de fichiers distribué, un cadre de programmation parallèle et un système de gestion des ressources / travaux. Linux et Windows sont les systèmes d’exploitation pris en charge pour Hadoop, mais BSD, Mac OS / X et OpenSolaris sont également connus pour fonctionner.

1. Système de fichiers distribués Hadoop (HDFS)

Hadoop est une implémentation open source basée sur Java d’un système de fichiers en cluster appelé HDFS, qui vous permet de faire un calcul distribué rentable, fiable et évolutif. L’architecture HDFS est hautement tolérante aux pannes et conçue pour être déployée sur du matériel à faible coût.

Contrairement aux bases de données relationnelles, le cluster Hadoop vous permet de stocker toutes les données de fichiers, puis de déterminer plus tard comment vous souhaitez les utiliser sans avoir à reformater au préalable lesdites données. Plusieurs copies des données sont répliquées automatiquement sur le cluster. La quantité de réplication peut être configurée par fichier et peut être modifiée à tout moment.

2. Hadoop MapReduce

Hadoop se concentre sur le stockage et le traitement distribué d’ensembles de données volumineux sur des clusters d’ordinateurs à l’aide d’un modèle de programmation MapReduce: Hadoop MapReduce.

Avec MapReduce, l’ensemble de fichiers d’entrée est divisé en morceaux plus petits, qui sont traités indépendamment les uns des autres (la partie «carte»). Les résultats de ces processus indépendants sont ensuite collectés et traités en groupes (la partie «réduire») jusqu’à ce que la tâche soit terminée. Si un fichier individuel est si volumineux qu’il affectera les performances de temps de recherche, il peut être divisé en plusieurs «divisions Hadoop».

MapReduce Hadoop Diagram

L’écosystème Hadoop utilise un modèle de programmation MapReduce pour stocker et traiter de grands ensembles de données.

Voici un exemple de programme WordCount MapReduce écrit pour Hadoop.

3. Hadoop YARN

La structure Hadoop YARN permet de planifier des travaux et de gérer les ressources du cluster, ce qui signifie que les utilisateurs peuvent soumettre et supprimer des applications via l’API REST Hadoop. Il existe également des interfaces utilisateur Web pour surveiller votre cluster Hadoop. Dans Hadoop, la combinaison de tous les fichiers JAR Java et des classes nécessaires pour exécuter un programme MapReduce est appelée un travail. Vous pouvez soumettre des travaux à un JobTracker à partir de la ligne de commande ou en les publiant via HTTP sur l’API REST. Ces travaux contiennent les «tâches» qui exécutent la carte individuelle et réduisent les étapes. Il existe également des moyens d’incorporer du code non Java lors de l’écriture de ces tâches. Si, pour une raison quelconque, un nœud de cluster Hadoop tombe en panne, les travaux de traitement affectés sont automatiquement déplacés vers d’autres nœuds de cluster.

Outils Hadoop

Vous trouverez ci-dessous une liste des projets liés à Hadoop hébergés par la fondation Apache:

Ambari: Un outil Web pour l’approvisionnement, la gestion et la surveillance des clusters Apache Hadoop, Ambari inclut la prise en charge de Hadoop HDFS, Hadoop MapReduce, Hive, HCatalog, HBase, ZooKeeper, Oozie, Pig et Sqoop. Ambari fournit également un tableau de bord pour afficher les facteurs d’intégrité du cluster, avec des cartes thermiques et la possibilité de visualiser visuellement les applications MapReduce, Pig et Hive, ainsi que des fonctionnalités pour diagnostiquer les caractéristiques de performance de manière conviviale.

Avro: Avro est un système de sérialisation de données.

Cassandra: Cassandra est une base de données multi-maître évolutive sans point de défaillance unique.

Chukwa: Un système de collecte de données, Chukwa est utilisé pour gérer de grands systèmes distribués.

HBase: Une base de données évolutive et distribuée, HBase prend en charge le stockage de données structuré pour les grandes tables.

Ruche: Hive est une infrastructure d’entrepôt de données qui fournit des résumés de données et des requêtes ad hoc.

Cornac: Mahout est une bibliothèque évolutive d’apprentissage automatique et d’exploration de données.

Porc: Ceci est un langage de flux de données de haut niveau et un cadre d’exécution pour le calcul parallèle.

Étincelle: Moteur de calcul rapide et général pour les données Hadoop, Spark fournit un modèle de programmation simple et expressif qui prend en charge un large éventail d’applications, notamment l’ETL, l’apprentissage automatique, le traitement de flux et le calcul de graphiques.

Tez: Tez est un cadre de programmation de flux de données généralisé basé sur Hadoop YARN qui fournit un moteur puissant et flexible pour exécuter un DAG arbitraire de tâches pour traiter les données pour les cas d’utilisation par lots et interactifs. Tez est adopté par Hive, Pig et d’autres cadres de l’écosystème Hadoop, ainsi que par d’autres logiciels commerciaux (par exemple, les outils ETL), pour remplacer Hadoop MapReduce comme moteur d’exécution sous-jacent..

ZooKeeper: Il s’agit d’un service de coordination performant pour les applications distribuées.

Alternatives à Hadoop

Pour les meilleures alternatives à Hadoop, vous pouvez essayer l’une des options suivantes:

Apache Storm: Voici le Hadoop du traitement en temps réel écrit en langage Clojure.

BigQuery: Plateforme à faible coût entièrement gérée de Google pour les analyses à grande échelle, BigQuery vous permet de travailler avec SQL et de ne pas vous soucier de la gestion de l’infrastructure ou de la base de données.

Apache Mesos: Mesos résume le processeur, la mémoire, le stockage et d’autres ressources de calcul à distance des machines (physiques ou virtuelles), permettant aux systèmes distribués tolérants aux pannes et élastiques de se construire facilement et de fonctionner efficacement.

Apache Flink: Flink est une plate-forme pour le traitement distribué de flux et de données par lots qui peut être utilisée avec Hadoop.

Pachyderme: Pachyderm prétend fournir la puissance de MapReduce sans la complexité de Hadoop en utilisant des conteneurs Docker pour implémenter le cluster.

Revue du didacticiel Hadoop

L'éléphant Hadoop donne un tutorielHadoop est un élément robuste et puissant de la technologie Big Data (y compris les outils quelque peu déroutants et en évolution rapide qui y sont liés); cependant, tenez compte de ses forces et de ses faiblesses avant de décider de l’utiliser ou non dans votre centre de données. Il peut y avoir des solutions meilleures, plus simples ou moins chères disponibles pour répondre à vos besoins spécifiques de traitement des données.

Si vous voulez en savoir plus sur Hadoop, consultez sa documentation et le wiki Hadoop.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me