vendredi 20 juin 2014

Migration vers Wordpress

Juste avant l'été et histoire de faire comme les petits copains de la communauté, je migre mon blog vers Wordpress.

Vous pouvez donc me retrouver à l'adresse suivante (mettez à jour vos favoris, si jamais j'y étais :p)

www.djuber.net

jeudi 12 juin 2014

[Big Data] Installation Hortonworks Data Platform (HDP) sur Windows en mode multi noeuds

Pour faire suite à mon article précédent qui présentait l'installation d'HDP en mode simple noeud, on va s'intéresser ici à l'installation en mode multi-noeuds (histoire de ne pas usurper l'appellation cluster :p)

L'idée du test est d'avoir une machine maître et 2 machines esclaves.
Pour cela, en premier lieu, on se crée un réseau dans Azure afin d'y faire communiquer nos 3 machines (On peut vraiment créer beaucoup de choses dans Azure, je n'avais jusque là pas trop pratiqué, mais je suis déjà fan de la plateforme)
Petite attention : je vous conseille de les créer sur le même service cloud histoire de faciliter la résolution de noms dans Azure :
http://msdn.microsoft.com/fr-fr/library/azure/jj156088.aspx
C'est un conseil plus que recommandé, car sur les tests que j'ai pu faire, l'installation fonctionne beaucoup mieux avec les hostnames qu'avec des IP :p

J'ai pris le même sizing que dans l'article précédent (format de base, A2, Windows Server 2012, etc)

Les noms des machines et leurs IP :
CH-MASTER : 192.168.0.4
CH-SLAVE1 : 192.168.0.5
CH-SLAVE2 : 192.168.0.6

Pré-requis

Les pré-requis restent les mêmes que sur une installation simple noeud : vous n'échapperez donc pas à l'installation de Java, Python et Visual C++ sur toutes les machines.

Les points d'attention d'une installation simple noeud restent vrais : variables d'environnements pour Java, exécutable pour Python.

Pour une machine de test et ne pas se créer de souci supplémentaire, on désactive aussi les firewall de toutes les machines, dans la vraie vie, il conviendrait de mapper les ports.

Installation HDP

On peut ensuite passer à l'installation d'HDP.

Pour cela, on a besoin du fichier clusterproperties.txt suivant :

#Log directory
HDP_LOG_DIR=c:\hadoop\logs

#Data directory
HDP_DATA_DIR=c:\hdpdata

#hosts
NAMENODE_HOST=CH-MASTER
SECONDARY_NAMENODE_HOST=CH-MASTER
RESOURCEMANAGER_HOST=CH-MASTER
HIVE_SERVER_HOST=CH-MASTER
OOZIE_SERVER_HOST=CH-MASTER
WEBHCAT_HOST=CH-MASTER
SLAVE_HOSTS=CH-SLAVE1,CH-SLAVE2
ZOOKEEPER_HOSTS=CH-MASTER
CLIENT_HOSTS=CH-MASTER

#Database host
DB_FLAVOR=DERBY
DB_HOSTNAME=CH-MASTER
DB_PORT=1527

#Hive properties
HIVE_DB_NAME=hive_db
HIVE_DB_USERNAME=hive
HIVE_DB_PASSWORD=hive

#Oozie properties
OOZIE_DB_NAME=oozie_db
OOZIE_DB_USERNAME=oozie
OOZIE_DB_PASSWORD=oozie


On exécute ensuite la commande suivante :

msiexec /qn /i  "hdp-2.1.1.0.winpkg.msi" /lv "log.txt" HDP_USER_PASSWORD="Password01" HDP_LAYOUT="C:\HDP_INSTALL\clusterproperties.txt" HDP_DIR="C:\HDP" DESTROY_DATA=yes HDP=no


Attention le /qn qui permet de passer outre l'interface graphique est obligatoire, sinon votre fichier clusterproperties ne sera pas utilisé. Et je n'ai pas réussi à passer de la configuration multi-noeuds avec cette interface.
L'autre point gênant, c'est que cette commande rend la main dès son exécution : on ne sait donc pas où en est l'avancement de l'installation à moins de fouiller dans les logs (qui ne sont pas toujours explicites)
L'installation est finie lorsque sur le bureau, vous avez un raccourci vers les 3 pages web de suivi du cluster et un raccourci vers une invite de commande hadoop.



Cette commande est à exécuter sur les 3 machines avec le même fichier de configuration.

Il ne reste plus qu'à lancer les services par la commande suivante sur les 3 machines :
C:\HDP>start_local_hdp_services.cmd
Sur un noeud esclave

Sur le noeud maitre
A noter qu'il existe une commande start_remote_hdp_services.cmd à exécuter sur le noeud maitre pour lancer les services sur les noeuds esclaves. Mais je ne suis pas parvenu à la faire fonctionner. J'ai différentes pistes :
- la première est qu'elle ne fonctionnait pas sur d'anciennes versions d'HDP et je ne sais pas si cela a été corrigé (http://hortonworks.com/community/forums/topic/cant-start-on-windows/)
- la deuxième serait sur un problème d'exécution de powershell à distance (http://hortonworks.com/community/forums/topic/install-ok-but-trouble-validating/). Je n'ai pas eu beaucoup de succès dans mes essais de configuration à ce sujet, et je n'ai pas eu le courage d'installer un contrôleur de domaine pour aller plus loin.

Toujours est-il que le cluster est fonctionnel :


Il ne vous reste qu'à lancer un Run-SmokeTests.cmd pour vérifier que tout marche bien :






vendredi 6 juin 2014

[Big Data] Installation Hortonworks Data Platform (HDP) sur Windows

Hortonworks est l'un des acteurs majeurs dans le domaine de la distribution Hadoop dans le monde, et le seul pour le moment à s'intéresser à l'écosystème Microsoft, en proposant 2 offres orientées Cloud ou On-Premise :


  • Hortonworks Data Platform (HDP), à installer soit-même, et donc plutôt on-premise (rien ne vous empêche cependant de stocker les machines dans le cloud), version qui nous intéresse aujourd'hui.
  • HDInsight, basé sur HDP, produit par Microsoft et disponible dans Azure.


HDInsight est facile à mettre en oeuvre car il ne nécessite aucune installation à proprement parler, il suffit juste de créer des stockage et le cluster dans Azure. Ce qui se fait en quelques clics (on trouve pas mal de tuto sur les blogs, celui de Romain par exemple)

L'idée, dans cet article, est de regarder comment se passe l'installation d'HDP sur un serveur Windows Server 2012. On va rester sur le cas simple d'un serveur simple nœud.

Commençons par créer la machine virtuelle dans Azure (Windows Server 2012 Datacenter, Taille A2)


Une fois la machine créée, on y uploade :
  • le zip contenant les fichiers d'install d'HDP (à downloader ici)
  • le JDK de Java (mini version 7), Python (mini version 2.7) et les packages Visual C++ distributable, tous étant des pré-requis à l'installation
La version 4.0 du Framework .NET est également requise, mais une version plus récente est déjà installée sur Windows Server 2012.

Installer les pré-requis 

Visual C++ s'installe par double-clic.



Pour Java, il est impératif de ne pas avoir d'espace dans le path du répertoire d'installation (et donc de ne pas garder le répertoire par défaut en "Program Files")


De même, une fois Java installé, il faut créer une variable d'environnement qui mappe le répertoire, et rajouter le \bin au PATH :

   



Pour Python, c'est du double-clic aussi, juste faire attention à rajouter l'installation de l'exe qui n'est pas sélectionnée par défaut.


Enfin pour finir les pré-requis et ne pas se générer de problème supplémentaire, on va désactiver le pare-feu Windows :



Installer Hortonworks Data Platform

On est enfin prêt à passer à l'installation effective de HDP.
Dans une commande prompt, il faut lancer l'instruction suivante :
runas /user:djuber "cmd /C msiexec /lv c:\hdplog.txt /i C:\HDP_INSTALL\hdp-2.1.0.0.winpkg.msi"  

où djuber doit être votre compte administrateur et C:\HDP_INSTALL le dossier où vous avez extrait le zip d'HDP que vous aviez téléchargé.
Cela ouvre la page de setup d'HDP :


Si les répertoires d'installation par défaut vous conviennent, n'y touchez pas. Choisissez "Configure Single Node".
Le "Delete existing HDP Data" n'est pas forcément nécessaire dans notre cas, mais il assure que le HDFS sera formaté.
Enfin la dernière partie concerne la configuration des bases Hive et Oozie (Pensez à choisir DERBY comme base de données si vous n'avez pas de SQL Server sous la main).
On peut enfin lancer l'installation.

Un panneau Warning pour vous dire que l'installation a réussi, c'est assez original
Votre cluster Hadoop (simple noeud) est désormais fonctionnel, il ne vous reste plus qu'à lancer les services et lancer un batch pour vérifier qu'il fonctionne

Lancer les services :
Placer vous dans le répertoire c:\HDP (si vous n'avez pas touché aux répertoires par défaut) et lancer l'instruction suivante :
start_local_hdp_services.cmd

Sur les 13 services, 1 ne démarre pas : hwi pour Hive Web Interface, l'interface graphique de Hive. Apparemment, un problème connu, peut-être du à IIS, le sujet semble être encore ouvert (voir http://hortonworks.com/community/forums/topic/hdp-2-1-hwi-start-failure/).

On peut désormais vérifier que le serveur est actif en cliquant sur la page web disponible sur le bureau (Hadoop Name Node Status)


Lancer un batch 

Il ne reste qu'à lancer un petit batch de map/reduce (fourni par HDP) pour tester notre cluster :
il faut lancer la console Hadoop (créée sur le bureau également) en mode administrateur et exécuter la commande suivante :
Run-SmokeTests.cmd

Quelques tests plantent car je n'ai pas installé tous les add-in.

En bref

L'installation n'est donc pas compliquée en soit, il faut bien respecter les pré-requis. Néanmoins quelques erreurs peuvent se produire, et il n'est pas toujours évident de trouver de la littérature sur le sujet.

C'est là où HDInsight est vraiment intéressant en permettant d'outrepasser toute difficulté d'installation.