Installation de HIVE sur Archlinux

Nous avons vu dans un précédent article l'installation de HADOOP sur une architecture ARCH. Pour aller plus loin et profiter du système MapReduce, intéressons-nous à HIVE, une base de données schemaless s'appuyant sur MapReduce pour échanger des données sur HDFS, profitant ainsi des données distribuées sur clusters et de la tolérence de panne en découlant.

Nous resterons sur l'architecture ARCH, solide, pour déployer HIVE. Nous utiliserons une version stable en accord avec HADOOP, la version 2.3.4. Il est très déconseillé de s'aventurer pour l'instant dans des versions supérieures (V3), car buggées et pas assez éprouvées.

A ce stade, Archlinux a été pleinement configuré, à savoir ;
  • l'utilisateur hadoop a été créé
  • le fichier hosts a été configuré proprement
  • ssh a été installé et configuré
  • le jdk java a été installé dans sa version 1.8
  • les outils additionnels ont été installés
  • HDFS est accessible en lecture et en écriture
Si ce n'est forcément pas le cas, se référer à l'installation de HADOOP, une lecture ne fait pas de mal.

S'assurer d'être authentifié en tant qu'utilisateur hadoop.

Téléchargement et décompression :

    wget https://archive.apache.org/dist/hive/hive-2.3.4/apache-hive-2.3.4-bin.tar.gz
    tar -xzvf apache-hive-2.3.4-bin.tar.gz


Un lien symbolique pour faciliter l'accès ;

    ln -s /home/hadoop/apache-hive-2.3.4-bin/ ~/hive

Ajouter les variables d'environnement nécessaires dans bashrc

    nano .bashrc
        # Set HIVE_HOME
        export HIVE_HOME=$HOME/hive
        export PATH=$PATH:$HIVE_HOME/bin


Copier et renommer toutes les configurations "sample" ou "template" nécessaires ;

    cp ~/hive/conf/hive-default.xml.template ~/hive/conf/hive-site.xml
    cp ~/hive/conf/hive-env.sh.template ~/hive/conf/hive-env.sh
    cp ~/hive/conf/hive-exec-log4j2.properties.template ~/hive/conf/hive-exec-log4j2.properties
    cp ~/hive/conf/hive-log4j2.properties.template ~/hive/conf/hive-log4j2.properties


Puis configurer les deux fichiers site et env ;

    nano ~/hive/conf/hive-env.sh
        Trouver : HADOOP_HOME=
        Remplacer par : HADOOP_HOME=/home/hadoop/hadoop
       
    nano ~/hive/conf/hive-site.xml
        Trouver : ${system:java.io.tmpdir}
        Remplacer par : /tmp

Cette dernière configuration évitera des erreurs avec la compilation JAVA. Attention, il y a plusieurs occurences à remplacer.

Dernière opération, mettre en place le warehouse, ou ferme de données, sur HDFS pour que HIVE puisse y lire et écrire.

    hadoop fs –mkdir –p /user/hive/warehouse
    hadoop fs -ls /user/hive/warehouse
    hadoop fs –chmod 765 /user/hive/warehouse


Il ne reste plus qu'à initialiser et créer le "metastor_db" derby avec schematool ;

     $HIVE_HOME/bin/schematool -initSchema -dbType derby

Cette opération pouvant échouer, il est de rigueur de vérifier avec :

    cd ~/hive
    ll


et s'assurer que metastore_db/ est bien présent. Sinon, relancer la commande précédente de création. En cas de problème, ne pas hésiter à le supprimer pour recommencer ;

    rm -fr ./metastore_db/

Voilà, le plat est prêt à être dégusté. S'assurer que HADOOP est lancé au préalable avec la commande start-dfs.sh, ou simplement en le vérifiant en lançant jps.

Pour intéragir avec HIVE en mode shell (server1), lancer simplement ;

     $HIVE_HOME/bin/hive

Le shell s'ouvrira laissant place à des commandes type SQL. Par exemple create database test;

Si vous souhaitez vous interfacer avec HIVE depuis une machine distante et un logiciel tiers et un pilote jdbc (Dbeaver par exemple), dans ce cas la commande sera ;

     $HIVE_HOME/bin/hive --service hiveserver2 --hiveconf hive.server2.thrift.port=10000

Avec cette commande (server2), HIVE est accessible via le port 10000. On peut le vérifier gràce à la commande;

    netstat -tnlpa | grep 10000

En cas de problème d'accès de l'extérieur sur le port 10000 (parfeu), deux solutions à expérimenter ;

    sudo ufw allow 10000/tcp
ou
    sudo iptables -A INPUT -p tcp --dport 10000 -j ACCEPT

En cas de problème de démarrage de HIVE, une commande de démarrage alternative bien utile pour vérifier l'ensemble des processus ;

    $HIVE_HOME/bin/hive --service hiveserver2 --hiveconf hive.server2.thrift.port=10000 --hiveconf hive.root.logger=INFO,console

On pourra remplacer INFO par ERROR par exemple.

Dans le prochain billet, utilisation de Dbeaver pour s'interfacer avec HIVE à distance.

Auteur : Michael Nandzik

Commentaires

Posts les plus consultés de ce blog

AJAX du point de vue PHP - PHP Route

Installation de Apache Spark sur Archlinux avec yaourt