Mise en place d’un Cluster HDP 2.6 sous Ubuntu

Hortonworks Data Platform est une distribution Open Source d’Apache Hadoop qui comprend la plupart des composants Apache de base d’un Cluster Big Data Hadoop tels que HDFS, Yarn, MapReduce, Spark, Hive, HBase… L’objectif de cet article est de présenter étape par étape le processus d’installation de la dernière version 2.6 d’un cluster HDP sur une distribution Ubuntu. Celui-ci a été testé à plusieurs reprises sur cinq machines sous Ubuntu 16.

Il s’agit d’un guide que l’on utilise régulièrement dans notre Lab Big Data Analytics, regroupant plusieurs informations utiles par rapport aux différents soucis ou blocages que l’on peut rencontrer dans cette opération.

 

Prérequis sur toutes les machines :

Prérequis généraux :

  • Vérifier l’espace disque et les ressources des machines : Essayer d’allouer au moins 50Gb d’espace mémoire, 8Gb de RAM, et une bonne capacité de calcul (2 à 4 cores)
  • Vérifier que Python 2.7.X minimum est bien installé :
    sudo apt update
    sudo apt dist-upgrade
    sudo apt install python2.7 python-pip
  • Vérifier que scp, curl, unzip, tar, openssl et wget sont bien installés :
    sudo apt install scp curl tar unzip tar openssl wget
  • Installer JDK 1.8.0 sur toutes les machines ; et s’assurer d’installer la même version :
    sudo apt-get install openjdk-8-jdk
  • Syncrhoniser le time server NTP sur toutes les machines :
    sudo apt-get install ntp
    sudo update-rc.d ntp defaults
  • Vérifier qu’il y a assez de descripteurs de fichiers disponibles ; les assigner à 10 000 s’il y en a moins :
    ulimit -Hn
    ulimit -n 10000
  • Télécharger le repo de Hortonworks et sa clé publique :
    sudo wget -O /etc/apt/sources.list.d/ambari.list http://public-repo-1.hortonworks.com/ambari/ubuntu16/2.x/updates/2.6.1.5/ambari.list
    sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CAD
    sudo apt-get update

Sécurité :

  • Désactiver le Pare-Feu UFW et iptables ; le temps d’installer HDP :
    sudo ufw disable
    sudo iptables -X
    sudo iptables -t nat -F
    sudo iptables -t nat -X
    sudo iptables -t mangle -F
    sudo iptables -t mangle -X
    sudo iptables -P INPUT ACCEPT
    sudo iptables -P FORWARD ACCEPT
    sudo iptables -P OUTPUT ACCEPT
  • Désactiver Transparent Huge Pages:
    sudo apt install hugepages
    sudo hugeadm --thp-never

Configuration des hôtes :

  • Configurer les différents noms d’hôte comme la capture suivante : Une ligne localhost, et une ligne de plus pour chaque machine y compris la machine courante :
    sudo nano /etc/hosts
  • Assigner le nom d’hôte de chaque machine pour qu’il corresponde à celui qui est utilisé dans le fichier précédent ; puis vérifier que le résultat des deux commandes suivantes est le même :
    sudo hostname <fully.qualified.domain.name>
    sudo hostname && sudo hostname -F

 

Prérequis spécifiques par machine :

Le processus d’installation de HDP nécessite d’assigner un Serveur Ambari sur une Machine, et un agent Ambari sur chaque machine dans le cluster qui s’y connecte. Il faudra donc choisir une machine qui va abriter Ambari Server, sur laquelle il faudra certains préparatifs, puis installer l’agent sur toutes les machines désirées.

Il est tout à fait possible d’installer un agent sur la machine serveur, c’est d’ailleurs ce qui a été fait et testé sur ce guide : Une Machine ayant Ambari Server & Agent, et 4 Machines ayant Ambari Agent.

N/B : Il est possible d’outrepasser la configuration manuelle des agents en permettant au serveur de les installer lui-même par SSH. Je déconseille personnellement cette approche car elle a rarement fonctionné durant mes tests.

Prérequis Serveur :

  • Installer Ambari Server et commencer sa configuration :
    sudo apt-get install ambari-server
    sudo ambari-server setup
  • Toujours choisir les options par défaut sauf pour le choix JDK : choisir la troisième option et spécifier une custom JDK.
  • Il va falloir spécifier le path du JDK installé ; pour cela il faut exécuter sur une autre console : which java puis  ls -ltr sur le résultat, puis encore ls -ltr sur le dernier résultat. Le path Java est tout ce qui est avant /jre.
  • Démarrer le serveur :
    sudo ambari-server start
  • Sous Mozilla Firefox 51 mini ou Chrome 56 mini ; naviguer vers l’UI du serveur Ambari sous le port 8080.

Prérequis Agents :

  • Installer Ambari Agent et commencer sa configuration :
    sudo apt-get install ambari-agent
    sudo nano /etc/ambari-agent/conf/ambari-agent.ini
  • Modifier le nom d’hôte du serveur avec celui du serveur lancé :
  • Relancer l’agent pour qu’il puisse s’authentifier au serveur :
    sudo service ambari-agent restart

 

 

Installation du Cluster sous Ambari :

Une fois tous les prérequis réalisés, on peut commencer l’installation sous l’UI de Ambari.

  • S’authentifier avec le compte admin par défaut : User : « admin » & password : « admin ». Vous pouvez, et il vaut mieux, modifier ce login par défaut sur l’onglet gestion d’utilisateurs Ambari.
  • Démarrer le « Cluster Installation Wizard » puis spécifier le nom de votre cluster.
  • Choisir le version HDP désirée ; et s’assurer que le repository d’installation pour Ubuntu 16 est bien coché dans la liste affichée ; vous pouvez décocher le reste. Alternativement, il est possible de préparer à l’avance un repo local et l’utiliser.
  • Spécifier les noms d’hôte de toutes les machines ayant un agent, tel qu’ils le sont sur le fichier hosts, puis valider. Si vous n’aviez commis aucune erreur durant les étapes concernant les noms d’hôte, les agents devraient être enregistrés correctement.
  • Une fois les agents enregistrés, vérifier et résoudre tout « warning » affiché dans l’interface. Ne procéder que s’il n’y a aucune erreur ou warning comme sur la capture d’écran ci-dessous :
  • Choisir les services à installer ; résoudre leurs configurations manquantes (souvent juste des mots de passe à assigner) ; puis répartir les services sur vos différents nœuds selon votre architecture. Vous pouvez aussi laisser la répartition par défaut.
  • Ambari se mettra à installer tous les services un par un avant de les démarrer. Tout devrait bien se passer du moment qu’il n’y avait aucune erreur ou warning comme à la capture précédente. Si toutefois l’opération se bloque après l’installation des composants et durant le démarrage, vous pouvez quand même procéder et lancer plus tard les services un par un. Vous aurez à la fin un cluster fonctionnel qui ressemble à ceci :

 

Astuces utiles :

  • Boucle NameNode : Durant le démarrage d’un NameNode ; il se peut qu’il reste bloqué une bonne trentaine de minutes dans le « Safe Mode » ce qui l’empêche de redémarrer. Si cela subsiste, vous pouvez forcer la sortie de cet état en exécutant ces commandes sur l’hôte qui abrite HDFS NameNode :
    sudo -u hdfs hdfs dfsadmin -safemode leave
    sudo -u hdfs hdfs fsck / -delete
  • Verrou dpkg : Parfois durant l’installation d’un package quelconque sous Ubuntu ou durant la dernière étape de l’installation du Cluster, on peut retrouver une erreur stipulant que « dpkg est déjà en cours d’utilisation ». Il faudra dans ce cas exécuter les commandes suivantes :
    sudo rm /var/lib/apt/lists/lock
    sudo rm /var/cache/apt/archives/lock
    sudo rm /var/lib/dpkg/lock
  • Python SSL lock : Si Python force l’utilisation de SSL sur le serveur Ambari (souvent Python 2.7.9+), bloquant l’enregistrement des agents Ambari, il faudra ajouter la ligne suivante dans le fichier de configuration de chaque agent, sous l’onglet Security :
    force_https_protocol=PROTOCOL_TLSv1_2
  • Tracage de logs : Pour débuguer un composant quelconque dans le cluster, il est très utile de vérifier ses logs en temps réel grâce à la commande « tailf » ; comme par exemple sur un Datanode :
    sudo tailf /var/log/hadoop/hdfs/hadoop-hdfs-datanode-<hostname>.log

 

Reset complet du Cluster :

L’un des plus gros inconvénients d’un cluster Hortonworks est la difficulté à effacer ses traces pour en redémarrer un autre. Il reste en pratique toujours des traces indésirables qui brouillent toute prochaine installation. Pour pouvoir tout effacer sous de bases saines ; il faudra passer par les étapes suivantes :

Sur les machines des agents :

  • Arrêter dans chaque machine l’agent et lancer le script de nettoyage :
    sudo service ambari-agent stop
    sudo python /usr/lib/python2.6/site-packages/ambari_agent/HostCleanup.py -s -k users
  • Supprimer tous les dossiers installés :
    sudo rm -rf /var/log/ambari-metrics-monitor /var/log/hadoop /var/log/hbase /var/log/hadoop-yarn /var/log/hadoop-mapreduce /var/log/hive /var/log/oozie /var/log/zookeeper /var/log/flume /var/log/hive-hcatalog /var/log/falcon /var/log/knox /var/lib/hive /var/lib/oozie /grid*/hadoop /usr/hdp /usr/bin/hadoop /tmp/hadoop /var/hadoop /hadoop/* /local/opt/hadoop /etc/hadoop /etc/hbase /etc/oozie /etc/phoenix /etc/hive /etc/zookeeper /etc/flume /etc/hive-hcatalog /etc/tez /etc/falcon /etc/knox /etc/hive-webhcat /etc/mahout /etc/pig /etc/hadoop-httpfs /var/run/hadoop /var/run/hbase /var/run/hadoop-yarn /var/run/hadoop-mapreduce /var/run/hive /var/run/oozie /var/run/zookeeper /var/run/flume /var/run/hive-hcatalog /var/run/falcon /var/run/webhcat /var/run/knox /local/home/zookeeper/* /usr/lib/flume /usr/lib/storm /var/lib/hadoop-hdfs /var/lib/hadoop-yarn /var/lib/hadoop-mapreduce /var/lib/flume /var/lib/knox /var/tmp/oozie

Sur la machine du Serveur :

  • Arrêter le serveur :
    sudo ambari-server stop
  • Supprimer tous les dossiers installés :
    sudo rm -rf /var/run/tez /var/log/tez /var/lib/hive-hcatalog /etc/slider /etc/storm-slider-client /var/run/spark /var/log/spark /var/lib/slider
  • Effacer toutes les données du serveur :
    sudo ambari-server reset

 

Pour plus de détails sur l’installation ; n’hésitez pas à consulter la documentation officielle HDP :
https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.5/bk_command-line-installation/content/ch_getting_ready_chapter.html

Étiquettes:

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.