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 ;
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
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
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
Enregistrer un commentaire