Apple

Démarrer avec Hadoop: de l'évaluation à votre premier cluster de production

Par Maximus , le 21 juin 2019 - 43 minutes de lecture

Hadoop grandit. Apache Software Foundation (ASF) Hadoop et ses projets et sous-projets associés arrivent à maturité en tant que pile intégrée et faiblement couplée pour stocker, traiter et analyser d’énormes volumes de données variées, semi-structurées, non structurées et brutes. (Mis à jour le 12 mars 2012).

Hadoop a parcouru un long chemin dans un temps relativement court. Google Papers sur le système de fichiers Google (GFS) et MapReduce ont inspiré des travaux sur la co-localisation du stockage de données et du traitement informatique dans des notes individuelles réparties sur un cluster. Puis, début 2006, Doug Cutting a rejoint Yahoo pour y installer un cluster de recherche de 300 nœuds, en adaptant la plateforme informatique distribuée qui faisait auparavant partie du projet de moteur de recherche Apache Nutch. Ce qui a commencé comme une technique d’indexation et de catalogage de contenu Web s’est étendu à diverses applications d’analyse et de science des données, allant de la segmentation de la clientèle de commerce électronique aux tests A / B, en passant par la détection des fraudes, l’apprentissage automatique et la recherche médicale.

Actuellement, les plus grands clusters de production sont 4 000 nœuds avec environ 15 pétaoctets de stockage dans chaque cluster. Par exemple, chez Yahoo, ils exécutent plus de 42 000 nœuds Hadoop stockant plus de 200 pétaoctets de données. Selon une présentation Hortonworks à Hadoop World 2011, avec la nouvelle génération de MapReduce (YARN), les clusters Hadoop peuvent maintenant évoluer entre 6 000 et 10 000 nœuds, avec plus de 100 000 tâches simultanées et 10 000 tâches simultanées.

Au fil du temps depuis que j'ai écrit une introduction à cette pile émergente en août 2011, il est devenu plus facile d'installer, de configurer et d'écrire des programmes pour utiliser Hadoop. Sans surprise, avec une technologie émergente, il reste encore du travail à faire. Comme le note Tom White dans son livre Hadoop: Le guide définitif, deuxième édition:

Pour obtenir une adoption encore plus large, nous devons rendre Hadoop encore plus simple à utiliser. Cela impliquera d’écrire plus d’outils; l'intégration avec plus de systèmes; et écrire de nouvelles API améliorées.

Hadoop: Le guide définitif, troisième édition est disponible en version anticipée.

Cet article fournit des conseils, des pratiques recommandées et des précautions pour une organisation souhaitant évaluer Hadoop et déployer un cluster initial. Il se concentre sur le système de fichiers distribués Hadoop (HDFS) et MapReduce. Si vous recherchez des informations détaillées sur Hive, Pig ou des projets et outils associés, vous serez déçu de cet article, mais je fournis des liens pour vous permettre de trouver plus d'informations. Vous pouvez également consulter les présentations de O’Reilly Strata: Making Data Work à partir du 28 février 2012 à Santa Clara, en Californie, y compris une présentation d’Introduction à Apache Hadoop par la directrice des services éducatifs de Cloudera, Sarah Sproehnle.

Commencez avec une évaluation gratuite en mode autonome ou pseudo-distribué

Si vous ne l'avez pas déjà fait, vous pouvez commencer à évaluer Hadoop en téléchargeant et en installant l'une des distributions gratuites de Hadoop.

Le site Web Apache Hadoop propose un guide d'installation du nœud unique Hadoop version 0.23 ainsi qu'une description plus détaillée dans la documentation de la version 0.22. La communauté Hadoop a regroupé les mises à jour dans Hadoop version 1.0, bien que certaines mises à jour précédentes n'aient jusqu'à présent pas été reflétées dans Hadoop v1. Par exemple, la fédération de nouvelle génération MapReduce (nom du projet YARN) et HDFS (qui partitionne l'espace de noms HDFS sur plusieurs NameNodes afin de prendre en charge les clusters contenant un très grand nombre de fichiers) est incluse dans Hadoop v0.23 mais pas dans Hadoop v1.0. Soyez donc conscient du contrôle de version entre les versions Hadoop.

Vous pouvez commencer une évaluation initiale en exécutant Hadoop en mode autonome local ou pseudo-distribué sur un seul ordinateur. Vous pouvez choisir la saveur de Linux que vous préférez.

Au lieu de Linux ou Solaris, vous avez également la possibilité d’exécuter HDFS et MapReduce sous Microsoft Windows. Microsoft a mis fin à son projet Dryad, prend en charge un connecteur direct Hadoop vers SQL Server en tant qu'extension de Sqoop, a lancé un service Hadoop pour Windows Azure, en partenariat avec Hortonworks, et a annoncé son intention d'inclure la prise en charge de Hadoop dans la version Microsoft SQL Server 2012.

En mode autonome, aucun démon ne s'exécute; tout s'exécute sur une seule machine virtuelle Java (JVM) avec stockage utilisant le système de fichiers standard de votre machine. En mode pseudo-distribué, chaque démon exécute sa propre machine virtuelle Java, mais ils s'exécutent toujours sur un seul ordinateur, le stockage utilisant HDFS par défaut. Par exemple, j'exécute une machine virtuelle Hadoop en mode pseudo-distribué sur mon MacBook à processeur Intel, avec VMWare Fusion, Ubuntu Linux et Cloudera’s Distribution, y compris Apache Hadoop (CDH).

Si ce n’est pas déjà fait, pensez à changer la valeur de réplication HDFS en un, par rapport au facteur par défaut de trois, afin de ne pas voir les messages d’erreur récurrents en raison de l’incapacité de HDFS à répliquer des blocs dans des notes de données alternatives. Les fichiers de configuration résident dans le répertoire nommé «conf» et sont écrits en XML. Vous trouverez le paramètre de réplication à l'adresse dfs.replication. Remarque: certains préfixes ont changé dans les versions 0.22 et 0.23 de Hadoop (mais ne sont pas encore reflétés dans la version 1.0 de Hadoop); voir une explication sur les modifications apportées aux noms de préfixes HDFS.

Même avec une évaluation de base en mode pseudo-distribué, vous pouvez commencer à utiliser les interfaces Web fournies avec les démons Hadoop, telles que celles exécutées sur les ports 50030 et 50070. Ces interfaces Web vous permettent d'afficher les états NameNode et JobTracker. L'exemple de capture d'écran ci-dessous montre l'interface Web NameNode. Pour des rapports plus avancés, Hadoop inclut des connexions intégrées à Ganglia et vous pouvez utiliser Nagios pour planifier des alertes.

Nom Noeud Statut
Profil d'interface Web Hadoop NameNode du système de fichiers distribué Hadoop, des nœuds et de la capacité d'un cluster de test exécuté en mode pseudo-distribué.

Choisissez une distribution

Au fur et à mesure que vous testez un cluster multi-nœuds à l'aide d'une offre hébergée ou d'un matériel sur site, vous souhaiterez choisir une distribution Hadoop. Apache Hadoop a Common, HDFS et MapReduce. Hadoop Common est un ensemble d’utilitaires prenant en charge les sous-projets Hadoop. Cela inclut FileSystem, l'appel de procédure distante (RPC) et les bibliothèques de sérialisation. Des projets et sous-projets Apache supplémentaires sont disponibles séparément d’Apache ou regroupés sous forme de bundle logiciel auprès de fournisseurs tels que Cloudera, EMC Greenplum et Hortonworks ce package distributions de logiciels Hadoop.

Hadoop est un travail en cours, riche en innovations de la part de la communauté Apache Hadoop. Les ajouts à Apache Hadoop en 2011 et 2012 incluent MapReduce de nouvelle génération, des travaux sur la haute disponibilité NameNode, la séparation de la gestion des ressources de cluster et la planification des tâches MapReduce, la prise en charge du format de fichier de données Avro dans tous les composants Hadoop et HCatalog pour la gestion des métadonnées. .

L'un des avantages de choisir une distribution commerciale en plus de la disponibilité des services de support commerciaux est que le fournisseur teste la compatibilité des versions entre toutes les diverses pièces mobiles des projets et sous-projets Apache associés. Ce choix est similaire au choix de Red Hat Linux pris en charge commercialement ou de Canonical Ubuntu Linux, mais peut-être encore plus important compte tenu de la jeunesse relative de Hadoop et du grand nombre de projets et de sous-projets faiblement couplés.

À ce jour, la distribution de Cloudera, y compris Apache Hadoop, est la distribution intégrée la plus complète. Il comprend Apache Hadoop, Apache Hive, Apache Pig, Apache HBase, Apache Zookeeper, Apache Whirr (une bibliothèque pour exécuter Hadoop dans un nuage), Flume, Oozie et Sqoop. CDH3 prend en charge les clouds Amazon EC2, Rackspace et Softlayer. Avec Cloudera Enterprise, Cloudera ajoute une suite de gestion propriétaire et des services d'assistance à la production en plus des composants de CDH3.

Yahoo et Benchmark Capital se sont associés pour financer Hortonworks, qui propose des logiciels, des formations et des services de conseil pour Apache Hadoop. La version deux de la plate-forme Hortonworks Data Platform (HDP) est basée sur Hadoop 0.23 et inclut la nouvelle génération MapReduce et la fédération HDFS. À ce jour, toute la distribution Hortonworks est open source, y compris sa console de gestion Ambari. En février et mars 2012, Hortonworks a remplacé les rôles de deux dirigeants (Rob Bearden est devenu PDG et Eric Baldeschwieler en tant que CTO); John Kreisa (qui occupait auparavant ce poste chez Cloudera) a été embauché par le vice-président marketing; annonce la sortie de la haute disponibilité Apache Hadoop 0.23.1 et HDFS NameNode; a discuté de partenariats nouveaux ou élargis avec Microsoft, Talend et Teradata; et réaffirmé son engagement à soutenir une distribution Hortonworks Hadoop 100% open-source.

En juin 2011, Tom White et Patrick Hunt de Cloudera ont proposé un nouveau projet pour l'incubateur Apache appelé Bigtop. Pour citer leur proposition Bigtop: «Bigtop est un projet de développement d’emballages et de tests de l’écosystème Hadoop. L’objectif est de réaliser des tests à différents niveaux (packaging, plate-forme, exécution, mise à niveau, etc.) développés par une communauté centrée sur le système dans son ensemble, plutôt que sur des projets individuels. »Bigtop a atteint la phase d’incubateur Apache et fournit paquets binaires (paquets RPM et Debian) pour l'installation.

EMC Greenplum HD Community Edition comprend HDFS, MapReduce, Zookeeper, Hive et HBase. EMC a également annoncé la signature d’un fabricant d’origine avec MapR, mais pourrait minimiser son partenariat avec MapR après l’acquisition par EMC du fournisseur de stockage, Isilon.

MapR remplace HDFS par un logiciel propriétaire. Lors du sommet Hadoop 2011, MapR a annoncé la disponibilité générale (GA) de ses éditions M3 et M5, avec des références clients de comScore et de Narus, ainsi que des références de partenaires de CX, Karmasphere et Think Big Analytics. Selon MapR, sa distribution comprend HBase, Pig, Hive, Cascading, la bibliothèque d’apprentissage machine Apache Mahout, l’intégration Nagios et l’intégration Ganglia. Outre le remplacement de HDFS, MapR a travaillé pour accélérer les opérations MapReduce et a ajouté des options de haute disponibilité (HA) pour NameNode et JobTracker. MapR prend en charge la collecte de journaux NFS (Network File System) et NFS, ainsi que l'interopérabilité des données avec HDFS Apache autonome via l'API HDFS, lors de conversations au sommet Hadoop avec le PDG et cofondateur de MapR, John Schroeder, et le vice-président du marketing Jack Norris.

L'édition gratuite M3 est disponible pour une utilisation de recherche et de production illimitée, avec des questions / réponses techniques disponibles via les forums MapR. L'édition M5 payante ajoute la mise en miroir, les instantanés, le contrôle d'accès NFS HA ​​et de l'emplacement des données, ainsi que les services de support commercial. MapR et Informatica ont annoncé la prise en charge d'Informatica Parser dans la distribution MapR Hadoop en mars 2012.

IDAH (IBM Distribution of Apache Hadoop) contient Apache Hadoop, une version Linux 32 bits du SDK IBM for Java 6 SR 8, ainsi qu’un outil d’installation et de configuration pour Hadoop. Au Hadoop Summit 2011, au cours de la séance de questions-réponses suivant l’exposé de Anant Jhingran d’IBM, j’ai interrogé le Dr Jhingran sur l’avenir de la distribution IBM. Il a expliqué à l'auditoire qu'IBM avait publié sa propre distribution à titre temporaire, alors que la technologie et le marché arrivaient à maturité, mais ne prévoyait pas à long terme de continuer à publier une distribution distincte de Hadoop par IBM.

IBM a indiqué qu’il considérait Hadoop comme la pierre angulaire de sa stratégie Big Data, dans laquelle IBM construisait des packages logiciels qui fonctionnaient sur Hadoop. IBM InfoSphere BigInsights prend en charge l'analyse et l'indexation de texte non structuré, ainsi que des fonctionnalités pour la gouvernance des données, la sécurité, les outils de développement et l'intégration d'entreprise. IBM propose BigInsights Basic Edition téléchargeable gratuitement. Les clients IBM peuvent étendre BigInsights pour analyser les données en continu à partir d’IBM InfoSphere Streams. Dans la compétition de jeux télévisés Jeopardy, IBM Watson a utilisé Hadoop pour distribuer la charge de travail destinée au traitement des informations, y compris la prise en charge de la compréhension du langage naturel.

Amazon Elastic MapReduce (EMR) construit des versions propriétaires d'Apache Hadoop, Hive et Pig optimisées pour une exécution sur Amazon Web Services. Amazon EMR fournit une infrastructure Hadoop hébergée s'exécutant sur l'infrastructure à l'échelle Web d'Amazon Elastic Compute Cloud (EC2) ou de Simple Storage Service (S3).

La distribution de HStreaming est une version propriétaire de Hadoop qui prend en charge le traitement de flux et l’analyse en temps réel, ainsi que le traitement par lots standard de MapReduce.

Envisager une formation Hadoop

Les cours de formation peuvent être utiles pour démarrer avec Hadoop et former du nouveau personnel. J'ai eu l'opportunité de suivre un cours d'administrateur système Hadoop de deux jours, dispensé par l'instructeur senior Glynn Durham à Cloudera, et je le recommanderais aux administrateurs système et aux architectes informatiques d'entreprise. Hortonworks propose des abonnements au support et des formations. Pour trouver d'autres organisations proposant des formations et d'autres services d'assistance Hadoop, visitez la page d'assistance Apache Hadoop Wiki.

Pour le cours d’administrateur système Hadoop enseigné par Cloudera, une connaissance préalable de Hadoop n’est pas nécessaire, mais il est important d’avoir au moins une connaissance de base de l’écriture des commandes Linux. Une certaine compréhension de Java est également bénéfique, car chaque démon Hadoop s'exécute dans un processus Java. Une fois le cours terminé, vous pouvez passer un test d'une heure pour devenir administrateur certifié Hadoop Cloudera. La classe et le test admin des systèmes couvrent les opérations, la planification et la gestion du cluster Hadoop; ordonnancement des travaux; surveillance et journalisation.

Planifiez votre architecture Hadoop

Pour un cluster sur site, une fois que vous aurez plusieurs dizaines de nœuds, vous voudrez probablement investir dans trois serveurs de classe entreprise distincts, un pour chacun des démons centraux suivants:

  • NameNode
  • SecondaryNameNode (Noeud de point de contrôle)
  • Gestionnaire de ressources MapReduce

Ces serveurs de niveau entreprise doivent disposer de beaucoup de mémoire RAM, mais ne nécessitent pas beaucoup de leur propre capacité de stockage sur disque – c’est le travail des DataNodes. Pour la mémoire NameNode, considérons une ligne de base de suffisamment de RAM pour représenter 250 octets par fichier plus 250 octets par bloc. Notez que pour les blocs, la plupart des organisations souhaitent modifier la taille de bloc par défaut de 64 Mo à 128 Mo. Vous pouvez changer cela à dfs.block.size.

À partir de Hadoop v0.23, mais pas encore inclus dans Hadoop v1, la fédération HDFS a la possibilité de partager l'espace de nom entre plusieurs NameNodes. Utilisez la fédération HDFS si vous devez stocker un très grand nombre de très petits fichiers. Chaque fichier, répertoire et bloc occupe environ 150 octets de mémoire NameNode, ce qui rend impossible ou impossible le stockage de milliards de fichiers sans utiliser la fédération HDFS.

Pour les grands clusters, une mémoire de 32 Go pour NameNode devrait suffire. Beaucoup plus de 50 Go de mémoire peuvent être contre-productifs, car la machine virtuelle Java exécutant NameNode peut passer des périodes excessivement longues et perturbatrices sur le nettoyage de la mémoire.

La récupération de place fait référence au processus dans lequel la machine virtuelle Java récupère la mémoire RAM inutilisée. Il peut apparaître à tout moment, presque n'importe quelle durée, avec peu d'options pour que les administrateurs système le contrôlent. Comme le souligne Eric Bruno dans un rapport du Dr. Dobb, la spécification RTSJ (Real-Time Specification for Java) peut résoudre le problème de la récupération de place, tout en offrant d’autres avantages permettant aux JVM de mieux prendre en charge les applications en temps réel. Bien que le système Java Real-Time d’Oracle, la machine virtuelle IBM WebSphere Real-Time et l’implémentation de référence Timesys RTSJ prennent en charge RTSJ, cette norme reste au stade pilote, en particulier pour les implémentations Linux.

Si le NameNode est perdu et qu’il n’ya pas de sauvegarde, HDFS est perdu. HDFS est basé sur le système de fichiers Google (GFS), dans lequel il n’ya pas de mise en cache des données. A partir du NameNode, vous devez planifier le stockage d'au moins une ou deux copies synchrones, ainsi qu'une image sur disque montée sur le système de fichiers réseau (NFS). Chez Yahoo et Facebook, ils utilisent deux serveurs de fichiers NetApp pour stocker les données réelles écrites par NameNode. Dans cette architecture, les deux serveurs de fichiers NetApp sont exécutés en mode haute disponibilité avec copie en RAM non volatile (NVRAM). HDFS prend désormais en charge l’option pour un nom de noeud de secours de fournir un basculement à chaud haute disponibilité pour le NameNode. La branche NameNode HA a été fusionnée dans le coffre HDFS. Les organisations disposant d'une version antérieure de Hadoop (0.23.1 ou antérieure) peuvent accéder au code via HDFS-1623.

Le nom secondaire SecondaryNameNode (qui est renommé en tant que nœud de point de contrôle) n’est pas un basculement à chaud, mais un serveur qui empêche le journal du NameNode de devenir de plus en plus volumineux, ce qui entraînerait des délais de redémarrage de plus en plus longs et éventuellement la NameNode pour épuiser la mémoire disponible. Au démarrage, NameNode charge son fichier image de base, puis applique les modifications récentes enregistrées dans son fichier journal. SecondaryNameNode effectue des contrôles périodiques pour le NameNode, dans lequel il applique le contenu du fichier journal au fichier image, produisant une nouvelle image. Même avec ce point de contrôle, les redémarrages de cluster peuvent prendre 90 minutes ou plus sur des clusters de grande taille, car NameNode requiert des rapports de stockage de chacun des DataNodes avant de pouvoir mettre le système de fichiers en ligne.

À partir de la version 0.21 de Hadoop, il est possible d’exécuter un Backup NameNode. Cependant, comme expliqué par MapR Co-Founder et CTO M.C. Dans un blog, même avec un Backup NameNode, si le NameNode échoue, le cluster a besoin d'un redémarrage complet, qui peut prendre plusieurs heures. Il peut être préférable de ressusciter le NameNode original à partir d'une copie de montage synchrone ou NFS plutôt que d'utiliser un Backup NameNode.

Les futures éditions de HDFS auront davantage d'options pour la haute disponibilité de NameNode, telles qu'une paire de NameNodes dans une configuration de veille active (NameNode et StandbyNameNode) ou un système BookKeeper basé sur ZooKeeper. Si vous devez prendre en charge une application entièrement distribuée, pensez à Apache ZooKeeper.

En commençant par YARN (MapReduce de nouvelle génération), le suivi de travaux MapReduce utilise les composants et sous-composants suivants:

Source: graphique adapté par Brett Sheppard de Documentation Apache Hadoop YARN

(1) Gestionnaire de ressources:

1a. Planificateur: Vous pouvez utiliser des files d'attente hiérarchiques ou connecter des planificateurs MapReduce tels que Capacity Scheduler ou Fair Scheduler ou des outils de flux de travaux tels que Azkaban ou Oozie.

1b. Gestionnaire d'applications: Le gestionnaire d'applications est responsable de l'acceptation des soumissions de travail, de la négociation du premier conteneur pour l'exécution du maître d'application et du redémarrage d'un conteneur du maître d'application en cas d'échec.

1c Suivi des ressources: Contient les paramètres tels que le nombre maximal de tentatives du maître d'applications, la fréquence à laquelle vérifier que les conteneurs sont toujours actifs et le délai d'attente jusqu'à ce qu'un gestionnaire de nœuds soit considéré comme mort.

(2) Chaque nœud matériel a un Node Manager agent responsable de la gestion, de la surveillance et de la création de rapports sur les «conteneurs» de ressources (UC, mémoire, disque et réseau) à Resource Manager / Scheduler. Ces conteneurs remplacent les emplacements fixes de carte et de réduction dans les générations précédentes de MapReduce.

(3) Le cas par application, spécifique au paradigme Maître d'application (App Mstr) planifie et exécute les tâches de l'application. Si votre cluster utilise plusieurs paradigmes tels que MapReduce et MPI, chacun aura son propre maître d'applications, tel que le maître d'application MapReduce et le maître d'application MPI (interface de transmission de messages).

Comme pour la terminologie telle que namespace, ces composants YARN sont souvent écrits en tant que Gestionnaire de ressources, NodeManager et Maître d'application. Il est possible que ApplicationMaster puisse communiquer avec plusieurs nœuds matériels. Il n'est donc pas nécessaire de répliquer le maître d'applications sur chaque nœud. Comme indiqué sur ce graphique, certains nœuds ne peuvent contenir que des conteneurs, le maître d'application (App Mstr) résidant sur un nœud adjacent (par exemple, un nœud du même rack utilisant la reconnaissance de rack).

Pour plus d'informations sur MapReduce nouvelle génération, reportez-vous aux notes de publication de YARN.

Hadoop de la génération actuelle ne prend pas en charge IPV6. Pour les organisations avec IPv6, examinez l'utilisation de noms de machine avec un serveur DNS au lieu d'adresses IP pour étiqueter chaque nœud. Tandis que les organisations de marchés en croissance rapide tels que la Chine ont adopté très tôt IPv6 en raison des attributions historiques d'adresses IPv4, IPv6 commence à attirer de plus en plus l'attention en Amérique du Nord et dans d'autres régions.

Pour le DataNodes, attendez-vous à l'échec. Avec HDFS, lorsqu'un cluster DataNode tombe en panne, le cluster ne se bloque pas, mais les performances se dégradent proportionnellement à la quantité de mémoire perdue et à la capacité de traitement lorsque le DataNode encore en activité prend le relais. En général, n’utilisez pas RAID pour les DataNodes et évitez d’utiliser Linux LVM (Logical Volume Manager) avec Hadoop. HDFS offre déjà la redondance intégrée en répliquant des blocs sur plusieurs nœuds.

Facebook a travaillé sur HDFS RAID. Et NetApp est une organisation qui préconise l’utilisation du RAID pour les DataNodes. Selon un échange de courrier électronique avec Val Bercovici, responsable de la planification stratégique de NetApp, le 26 juin 2011: «Les Hadooplers E-Series de NetApp utilisent des configurations RAID HDFS hautement sophistiquées pour DataNodes qui séparent la protection des données de l’achèvement des tâches et des requêtes. Nous constatons une amélioration des performances d’extraction et de chargement pour la plupart des tâches Hadoop ETL, ainsi que l’activation du traitement en pipeline de Map Reduce pour les transformations jusqu’à présent impossible. Les données HDFS à longue queue peuvent également être migrées en toute sécurité vers des nœuds de données protégés par RAID en utilisant un nombre de représentants de 1 pour une efficacité de stockage HDFS à long terme bien supérieure. "

Pour le stockage total par nœud de données, 12 téraoctets sont courants, bien que ce nombre augmente. Selon une présentation Hortonworks à Hadoop World 2011, chaque DataNode peut avoir 16 cœurs (ou plus), des disques 48G / 96G RAM et 24TB / 36TB.

Outre le stockage de fichiers, DataNodes nécessite de réserver environ 30% de la capacité du disque en tant qu'espace disque disponible pour les fichiers éphémères générés lors du traitement MapReduce. Pour la mémoire, une règle de base précédente pour chaque DataNode était de prévoir entre 1 Go et 2 Go de mémoire par emplacement de tâche Carte ou Réduire. Cela change toutefois avec la nouvelle génération MapReduce / YARN, qui remplace les emplacements fixes de carte et de réduction par des conteneurs virtuels.

Hadoop vous offre la possibilité de compresser les données à l'aide du codec que vous spécifiez. Par exemple, chez Facebook, ils utilisent le codec gzip avec un facteur de compression compris entre six et sept pour la majorité de leurs ensembles de données. (Présentation SIGMOD’10, juin 2010, «Infrastructure d’entreposage et d’analyse de données sur Facebook»).

Essayez de normaliser une configuration matérielle pour les DataNodes. Vous pouvez exécuter plusieurs familles de matériel, mais cela complique le provisionnement et les opérations. Lorsque vous avez des nœuds qui utilisent un matériel différent, votre architecture commence à être davantage une grille qu'un cluster.

De même, ne vous attendez pas à utiliser la virtualisation – la capacité est fortement affectée. Hadoop fonctionne mieux lorsqu'un DataNode peut accéder à tous ses disques. Hadoop est une technologie hautement évolutive et non une technologie hautes performances. Compte tenu de la nature de HDFS, les blocs de données et les traitements co-localisés répartis sur des dizaines, des centaines ou des milliers de nœuds indépendants sont bien plus avantageux. Si vous devez utiliser la virtualisation, envisagez d'affecter un ordinateur virtuel à chaque périphérique matériel DataNode. Cela vous donnerait l'avantage de la virtualisation, par exemple pour le provisionnement automatisé ou les mises à jour logicielles automatisées, tout en limitant au maximum les performances.

Plusieurs astuces pour les administrateurs système:

  • Visez les fichiers de grande taille: essayez de ne pas stocker trop de petits fichiers. Il existe une surcharge par fichier dans la mémoire NameNode. Certains petits fichiers sont acceptables – même des centaines voire des milliers -, mais vous devriez essayer d’avoir un nombre non négligeable de fichiers d’une taille égale ou supérieure à 100 mégaoctets.
  • Pas d'espaces dans les listes séparées par des virgules dans les fichiers de configuration: les espaces peuvent introduire des erreurs.
  • Équilibrage de la charge: n'oubliez pas de lancer régulièrement l'équilibreur de charge pour mettre à jour les nœuds sur ou sous-utilisés. Le rééquilibrage n'interfère pas avec les tâches MapReduce.
  • Équiper la connaissance du rack: n'oubliez pas de définir et de mettre à jour les configurations de rack afin de prendre en charge la reconnaissance du rack, afin que HDFS puisse reconnaître les nœuds les plus proches. Notez que cela ne s'applique pas à Amazon Elastic Compute Cloud, qui à ce jour ne prend pas en charge la reconnaissance du rack.
  • Exécutez fsck quotidiennement en dehors des heures de bureau pour vérifier la corruption dans HDFS.
  • Synchronisez les horloges sur les nœuds (étape simple mais facile à oublier).

Sur Facebook, Andrew Ryan, ingénieur des opérations d’application, a partagé les leçons apprises par les administrateurs de cluster Hadoop lors de la réunion du groupe d’utilisateurs Hadoop Bay Area en février 2011 sur le campus Yahoo Sunnyvale. Quelques suggestions de son excellent discours:

  • Maintenez un registre central des clusters, des nœuds et du rôle de chaque nœud dans le cluster, intégré à votre plate-forme de gestion de services / actifs.
  • Le matériel défaillant / défaillant est votre principal ennemi – le fichier «exclure» est votre ami.
  • Ne jamais fsck lecteurs de données ext3 sauf si Hadoop dit que vous devez le faire.
  • Séparez les différentes catégories d'utilisateurs sur différents clusters, avec les niveaux de service et les capacités appropriées.

Cela peut sembler évident avec un cluster, mais il convient de rappeler que Hadoop n'est pas encore bien adapté à l'exécution d'un cluster qui s'étend sur plusieurs centres de données. Même Yahoo, qui gère les plus grands clusters de production Hadoop du secteur privé, n'a pas divisé les systèmes de fichiers Hadoop ni les tâches MapReduce entre plusieurs centres de données. Des organisations telles que Facebook envisagent de fédérer des clusters Hadoop dans plusieurs centres de données, mais cela pose des problèmes en termes de limites temporelles et de temps système pour les données de dimension communes. Expedia exploite des clusters Hadoop de production qui couvrent plusieurs centres de données, selon une présentation Expedia à O’Reilly Strata 2012 par le directeur principal de l’architecture et de l’ingénierie, M. Eddie Satterly.

Importer des données dans HDFS

Quelle que soit la source des données à stocker dans le cluster, l'entrée s'effectue via l'API HDFS. Par exemple, vous pouvez collecter des fichiers de données de journal dans Apache Chukwa, Flume développé par Cloudera ou Scribe développé par Facebook et les transférer via l’API HDFS dans le cluster, pour les diviser en stockage de bloc HDFS. Une approche pour la transmission en continu de données, telles que les fichiers journaux, consiste à utiliser un serveur de transfert pour collecter les données au fur et à mesure de leur arrivée, puis à les transférer dans HDFS à l'aide de charges par lot.

Sqoop est conçu pour importer des données à partir de bases de données relationnelles. Sqoop importe une table de base de données, exécute un travail MapReduce pour extraire des lignes de la table et écrit les enregistrements sur HDFS. Vous pouvez utiliser une table intermédiaire pour isoler les données corrompues. Il peut être utile de commencer par une table d'exportation vide et de ne pas utiliser la même table pour les importations et les exportations. Vous pouvez exporter des bases de données SQL directement vers un entrepôt de données Hive ou des tables HBase. Vous pouvez également utiliser Oozie avec Sqoop pour planifier des tâches d'importation et d'exportation. Vous pouvez télécharger Sqoop directement à partir de la page du projet Apache Sqoop ou dans le cadre de distributions Hadoop telles que Cloudera.

Étant donné que le transfert de données vers / depuis des bases de données relationnelles et Hadoop à l'aide de JDBC ou ODBC peut être lent, de nombreux fournisseurs proposent des connecteurs directs plus rapides qui prennent en charge les outils natifs, souvent via une extension à Sqoop. Les fournisseurs dotés de connecteurs directs incluent notamment EMC Greenplum, IBM Netezza, Microsoft SQL Server, Entrepôt de données parallèle (PDW), Oracle et Teradata Aster Data. Quest a développé un connecteur pour Oracle (disponible en tant que plug-in gratuit pour Sqoop). Plus récemment, Oracle s'est associé à Cloudera pour fournir une distribution Hadoop et une assistance pour Oracle Big Data Appliance.

Gérer les travaux et répondre aux requêtes

Vous avez le choix entre plusieurs planificateurs de tâches pour MapReduce. Fair Scheduler, développé par Facebook, permet des temps de réponse plus rapides pour les petits travaux et une qualité de service pour les travaux de production. Il s’agit d’une mise à niveau du programmateur FIFO (premier entré, premier sorti) définie par défaut par Hadoop MapReduce. Avec Fair Scheduler, les travaux sont regroupés dans des pools. Vous pouvez ainsi affecter aux pools un nombre minimum d'emplacements de carte, réduire les emplacements et limiter le nombre de travaux en cours. Il n’existe pas d’option permettant de limiter le partage maximal pour les logements de carte ou de réduire le nombre de logements (par exemple, si vous craignez qu’un travail mal écrit ne prenne trop de capacité de cluster), mais une solution consiste à donner à chaque pool un minimum garanti. partager qu’ils retiendront l’avalanche d’un travail incontrôlable.

Avec Planificateur de capacité, développé par Yahoo, vous pouvez attribuer des niveaux de priorité aux travaux soumis aux files d’attente. Dans une file d'attente, lorsque des ressources sont disponibles, elles sont affectées au travail le plus prioritaire. Notez qu'il n'y a pas de préemption une fois qu'un travail est en cours d'exécution pour reprendre une capacité déjà allouée.

Yahoo a développé Oozie pour la gestion du flux de travail. Il s’agit d’un service extensible, évolutif et orienté données qui permet d’orchestrer les dépendances entre les travaux exécutés sur Hadoop, notamment HDFS, Pig et MapReduce.

Azkaban fournit un planificateur de lot pour la construction et l'exécution de travaux Hadoop ou d'autres processus hors ligne. Chez LinkedIn, ils combinent Hadoop pour traiter d’énormes charges de travail par lots, Project Voldemort pour un moteur de stockage clé / valeur NoSQL et le système de flux de travail open source Azkaban pour permettre des calculs à grande échelle de plus de 100 milliards de relations par jour. serveur de site à faible latence. LinkedIn soutient Azkaban en tant que projet open source et fournit du code au github d’Azkaban.

Pour les organisations qui utilisent Eclipse en tant qu'environnement de développement intégré, vous pouvez configurer un environnement de développement Hadoop sous un environnement de développement intégré Eclipse. Avec Hadoop Eclipse Plug in, vous pouvez créer des classes Mapper, Reducer et Driver. soumettre des travaux MapReduce; et surveiller l'exécution du travail.

Karmasphere Studio fournit un environnement graphique pour développer, déboguer, déployer et optimiser les tâches MapReduce. Karmasphere prend en charge une édition communautaire gratuite et une édition professionnelle sous licence.

Vous pouvez interroger des ensembles de données volumineux à l'aide d'Apache Pig ou de R à l'aide de RHIPE (R et Hadoop Integrated Processing Environment). Avec Apache Hive, vous pouvez activer des requêtes de type SQL sur des ensembles de données volumineux, ainsi qu'une disposition de stockage en colonnes à l'aide de RCFile.

Tableau et Cloudera se sont associés pour créer un connecteur direct Tableau-à-HDFS fournissant une interface SQL à Hadoop disponible à partir de Tableau Desktop à partir de la version 7. Il prend en charge les objets XML stockés dans HDFS. Dans Tableau Desktop, vous pouvez ajuster les connecteurs pour définir les paramètres de charge de travail des travaux MapReduce. Vous pouvez également exporter de HDFS vers Tableau lorsque vous avez besoin d'analyses plus rapides à l'aide du moteur de données en mémoire de Tableau.

La plate-forme MicroStrategy 9
permet aux développeurs d'applications et aux analystes de données de soumettre des requêtes à l'aide de HiveQL et d'afficher les données Hadoop dans des tableaux de bord MicroStrategy, pour des clusters Hadoop sur site ou des offres cloud telles que Amazon Elastic MapReduce. Groupon a adopté MicroStrategy pour analyser les offres quotidiennes de Groupon, mieux comprendre le comportement des clients et évaluer l’efficacité de la publicité. Le personnel de Groupon peut utiliser des rapports et des tableaux de bord basés sur MicroStrategy pour analyser leurs données dans Hadoop et HP Vertica.

SAS a annoncé en février 2012 son intention de prendre en charge HDFS, notamment un progiciel prêt à l'emploi, conçu pour fonctionner sur des serveurs lames disposant de beaucoup de RAM pour alimenter les analyses en mémoire.

Jaspersoft prend en charge trois principaux modes d’accès aux données dans Hadoop. Tout d’abord, directement via Hive, pour accepter les requêtes de type SQL via HiveQL. This approach can suit IT staff or developers who want to run batched reports, but current-generation Hive can be a rather slow interface, so it’s not ideal for use cases that require a low-latency response.

Second, Jaspersoft provides connectivity directly to HBase. Jaspersoft feeds this data into its in-memory engine through an HBase connector. This approach can work well for a business analyst to explore data stored in Hadoop without the need to write MapReduce tasks.

HBase has no native query language, so there’s no filtering language. But there are filtering APIs. Jaspersoft’s HBase connector supports various Hadoop filters from simple ones such as StartRow and EndRow to more complex ones such as RowFilter, FamilyFilter, ValueFilter, or SkipValueFilter. The Jaspersoft HBase query can specify the ColumnFamilies and/or Qualifiers that are returned; some HBase users have very wide tables, so this can be important for performance and usability. The Jaspersoft HBase connector ships with a deserialization engine (SerDe) framework for data entered via HBase’s shell and for data using Java default serialization; users can plug in their existing deserialization .jars so the connector will automatically convert from HBase’s raw bytes into meaningful data types.

Third, you can use a data integration process through Informatica or other ETL providers into a relational database that Jaspersoft software can then report on directly or perform analysis on through Jaspersoft’s in-memory database or OLAP engine.

To enable applications outside of the cluster to access the file system, the Java API works well for Java programs. For example, you can use a java.net.url object to open a stream. You can use the Thrift API to connect to programs written in C++, Perl, PHP, Python, Ruby or other programming languages.

Strengthen security

There are some ease-of-use advantages to running password-less Secure Shell (SSH) — for example you can start and stop all of the cluster nodes with simple commands — but your organization may have security policies that prevent use of password-less SSH. In general, the start-all.sh and stop-all.sh commands are useful for running a Hadoop evaluation or test cluster, but you probably do not need or want to use them for a production cluster.

Earlier versions of HDFS did not provide robust security for user authentication. A user with a correct password could access the cluster. Beyond the password, there was no authentication to verify that users are who they claim to be. To enable user authentication for HDFS, you can use a Kerberos network authentication protocol. This provides a Simple Authentication and Security Layer (SASL), via a Generic Services Application Program Interface (GSS-API). This setup uses a Remote Procedure Call (RPC) digest scheme with tokens for Delegation, Job and Block Access. Each of these tokens is similar in structure and based on HMAC-SHA1. Yahoo offers an explanation for how to set up the Oozie workflow manager for Hadoop Kerberos authentication.

After the three-step Kerberos ticket exchange, Hadoop uses delegation tokens to continue to allow authenticated access without having to go back each time to contact the Kerberos key distribution center (KDC).

Kerberos authentication is a welcome addition, but by itself does not enable Hadoop to reach enterprise-grade security. As noted by Andrew Becherer in a presentation and white paper for the BlackHat USA 2010 security conference, “Hadoop Security Design: Just add Kerberos? Really?,” remaining security weak points include:

  • Symmetric cryptographic keys are widely distributed.
  • Some web tools for Job Tracker, Task Tracker, nodes and Oozie rely on pluggable web user interface (UI) with static user authentication. There is a jira (HADOOP-7119), which is patch-available, that adds a SPNEGO-based web authentication plugin.
  • Some implementations use proxy IP addresses and a database of roles to authorize access for bulk data transfer to provide a HTTP front-end for HDFS.

Given the limited security within Hadoop itself, even if your Hadoop cluster will be operating in a local- or wide-area network behind an enterprise firewall, you may want to consider a cluster-specific firewall to more fully protect non-public data that may reside in the cluster. In this deployment model, think of the Hadoop cluster as an island within your IT infrastructure — for every bridge to that island you should consider an edge node for security.

In addition to a network firewall around your cluster, you could consider a database firewall or broader database activity monitoring product. These include AppSec DbProtect, Imperva SecureSphere and Oracle Database Firewall. A database firewall enables rules-based determination of whether to pass, log, alert, block or substitute access to the database. Database firewalls are a subset of the broader software category of database monitoring products. Note that most database firewall or activity monitoring products are not yet set up for out-of-the-box Hadoop support, so you may require help from the database firewall vendor or a systems integrator.

Other security steps may also be necessary to secure applications outside of the cluster that are authorized and authenticated to access the cluster. For example, if you choose to use the Oozie workflow manager, Oozie becomes an approved “super user” that can perform actions on behalf of any Hadoop user. Accordingly, if you decide to adopt Oozie, you should consider an additional authentication mechanism to plug into Oozie.

Some of the above security concerns you may be able to address using paid software, e.g. Cloudera Enterprise or Karmasphere Studio, such as the use of management applications in place of the web user interfaces that come with the Hadoop daemons. For example, Cloudera Enterprise 3.5 includes some tools to help simplify configuration of the security features available with current-generation Hadoop. Zettaset (previously GOTO Metrics) bundles security enhancements into its Hadoop Orchestrator, including user-level security and audit tracking, and plans to add encryption options for HDFS.

As noted by Mike Loukides in “What is Data Science?,” “If anything can be called a one-stop information platform, Hadoop is it.” The broad Hadoop ecosystem provides a variety of choices for tools and capabilities among Apache projects and sub-projects, other open source tools, and proprietary software offerings. Ceux-ci incluent les suivants:

  • For serialization, Apache Avro is designed to enable native HDFS clients to be written in languages other than Java. Other possible options for serialization include Google Protocol Buffers (Protobuf) and Binary JSON (BSON).
  • Cascading is an open-source, data-processing API that sits atop MapReduce, with commercial support from Concurrent. Cascading supports job and workflow management. According to Concurrent founder and CTO Chris Wensel, in a single library you receive Pig/Hive/Oozie functionality, without all the XML and text syntax. Nathan Marz wrote db-migrate, a Cascading-based JDBC tool for import/export onto HDFS. At BackType and previously Rapleaf, Nathan also authored Cascalog, a Hadoop/Cascading-based query language hosted in Clojure. Multitool allows you to “grep”, “sed”, or join large datasets on HDFS or Amazon S3 from a command line.

  • Hadoop User Experience (HUE) provides “desktop-like” access to Hadoop via a browser. With HUE, you can browse the file system, create and manage user accounts, monitor cluster health, create MapReduce jobs, and enable a front end for Hive called Beeswax. Beeswax provides Wizards to help create Hive tables, load data, run and manage Hive queries, and download results in Excel format. Cloudera contributed HUE as an open source project.
  • Pervasive TurboRush for Hive allows Hive to generate an execution plan using dataflow graphs as an alternative to MapReduce. It then executes these graphs using Pervasive DataRush distributed across the machines of the cluster.
  • Pentaho offers a visual design environment for data integration, extract transform load (ETL), report design, analytics and dashboards that integrates with HDFS, MapReduce, Hive and HBase, plus Apache Cassandra and MongoDB. Pentaho open-sourced its Kettle ETL project under an Apache version 2.0 license.

  • Karmasphere Analyst provides Visual SQL access to data in Hadoop, that can support visualizations in Tableau or Microsoft Excel. A second product, Karmasphere Studio, provides a graphical environment to develop, debug, deploy and optimize MapReduce jobs, and is available through a free community edition or license-based professional edition. In addition to supporting on-premise Hadoop implementations behind firewalls through SSH tunnels and SOCKS proxies, Karmasphere has integrated with Amazon Elastic MapReduce (EMR) and provides an EMR-friendly pricing option to pay-as-you-go as an alternative to an annual subscription.

  • Datameer offers a spreadsheet-like interface for analysts to work with data in Hadoop as one part of their Datameer Analytics Solution. Additional features include a Wizard tool for loading and transforming large data sets, a dashboard widget to visualize data based on analytic workbooks, support for up to 32 decimal places for high-precision stats, and integration with external LDAP and Active Directory connections to authenticate groups of users. Note that DAS uses a “spreadsheet-like interface” instead of plugging directly into Microsoft Excel.

  • Modeled after Google BigTable, Apache HBase is a distributed column-oriented database built on top of HDFS. With HBase, you can run real-time read and write random access to large data sets. You can use HBase as a back-end for materialized views; according to Facebook, this can support real-time analytics.
  • HCatalog is a metadata tool for Hadoop, built on top of the Hive metastore. It provides read and write interfaces for Pig and MapReduce together with a command line interface for data definitions. HCatalog offers a shared schema and data model for Pig, Hive and MapReduce. HCatalog was promoted to an Apache project.

  • The Hadoop Online Prototype (HOP) is a modified version of Hadoop MapReduce that allows data to be pipelined between tasks and between jobs. This can enable better cluster utilization and increased parallelism, and allows new functionality: online aggregation (approximate answers as a job runs), and stream processing (MapReduce jobs that run continuously, processing new data as it arrives). Note that HOP is a development prototype that is not production-ready at this stage.
  • VMware extended its Spring development framework (from the SpringSource acquisition) with “Spring Hadoop” in February 2012, with support for MapReduce, Streaming, Hive, Pig, and Cascading jobs via a Spring container.

One of the benefits of Hadoop’s loosely coupled architecture is the ability to replace components such as HDFS or MapReduce. As a data-centric architecture with loose coupling, Hadoop supports modular components. As noted by Rajive Joshi in a March 2011 InformationWeek article, “The key to data-centric design is to separate data from behavior. The data and data-transfer constructs then become the primary organizing constructs.” That’s not to say that there is complete plug and play with no integration work needed among Hadoop components (the proposed Apache Bigtop project may help in this area), but there is no requirement for every organization to use the same monolithic stack.

Several startups have emerged recently with offerings that replace elements of the Hadoop stack with different approaches. Ceux-ci incluent les suivants:

Given Hadoop’s increasing market penetration, it’s not surprising to begin to see more alternatives or competitors to Hadoop begin to emerge. These include Spark and LexisNexis HPCC.

Spark was developed in the UC Berkeley AMP Lab, and is used by several research groups at Berkeley for spam filtering, natural language processing and road traffic prediction. The AMP Lab developed Spark for machine learning iterative algorithms and interactive data mining. Online video analytic service provider Conviva uses Spark. Spark is open source under a BSD license. Spark runs on the Mesos cluster manager, which can also run Hadoop applications. Mesos adopters include Conviva, Twitter and UC Berkeley. Mesos joined the Apache Incubator in January 2011.

In June 2011, LexisNexis announced a high performance computing cluster (HPCC) alternative to Hadoop. HPCC Systems announced plans for a free community version along with an enterprise edition that comes with access to support, training and consulting. Sandia National Laboratories uses its precursor technology, the data analytics supercomputer (DAS) platform, to sort through petabytes of data to find correlations and generate hypotheses. According to LexisNexis, configurations by HPCC Systems require fewer nodes to provide the same processing performance as a Hadoop cluster, and are faster in some benchmark tests.

However, it’s unclear what types of semi-structured, unstructured or raw data analysis will perform faster and / or on fewer nodes with LexisNexis / HPCC Systems. LexisNexis may struggle to create as vibrant of an ecosystem of companies and contributors as what the Apache Hadoop community has achieved. And their HPCC technology uses the ECL programming language, which has not been widely adopted outside of LexisNexis or occasional use in government or academia.

To wrap up

Hadoop is maturing as an information platform to store, process and analyze huge volumes of varied semi-structured, unstructured and raw data from disparate sources. Pour commencer:

  • Evaluate one of the free distributions in stand-alone or pseudo-distributed mode.
  • Refer to Tom White’s “Hadoop: The Definitive Guide, Second Edition” (with the Third Edition available as an Early Release) and consider taking one or more of the Hadoop courses from Cloudera, Hortonworks, or another of the service providers listed on the Apache Hadoop wiki support page.
  • For an on-premise cluster, invest in separate enterprise-grade servers for the NameNode, SecondaryNameNode and MapReduce Resource Manager.
  • Remember operation tips for rack awareness, file system checks and load balancing.
  • Beef up security with user authentication, an edge node security firewall and other security measures.

What deployment tips, cautions or best practices would you like to add or comment on based on your own experience with Hadoop?

My thanks for comments on the draft article to Val Bercovici, Michele Chambers, Julianna DeLua, Glynn Durham, Jeff Hammerbacher, Sarah Sproehnle, M.C. Srivas, and Chris K. Wensel.

En relation:

Click to rate this post!
[Total: 0 Average: 0]

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.