Outils pour étalonner Apache Hadoop

L’ensemble des métriques pour étalonner un cluster Hadoop sont disponibles dans les consoles du jobtracker.

jobtracker

jobtracker1

jobtracker2

Malheureusement ces métriques ne sont pas conservés. Ils sont effacés progressivement et seuls les derniers jobs Hadoop sont conservés.

Il existe plusieurs solutions disponibles en opensource pour pallier ce problème et réaliser facilement ses graphiques et ses rapports d’execution :

Voici les avantages/inconvénients de ces différentes solutions :

Solutions Technologie Web GUI Agent Stockage
Apache Chukwa Java Portail configurable JSP/Servlet Apache HBase
Starea et fluxua Java MySQL ou PostGRES
MetricFactory avec Graphite Java Graphite frontend (Python) Agent collecteur Python Carbon Graphite MySQL ou PostGRES
JMXTrans avec Graphite Java Graphite frontend (Python) Agent collecteur Java JMX (JMXTrans) + Agent collecteur Python Carbon Graphite MySQL ou PostGRES
Apache Ambari Java et Node.js Frontend NodeJS A votre choix

Utiliser le connecteur MongoDB avec Pig

Le connecteur MongoDB for Hadoop et Pig est disponible sous GitHub.

MongoDB utilise l’outil de makefile SBT de la communauté SCALA. Pour compiler et packager SBT :

Créer un fichier .bat de lancement de SBT

set SCRIPT_DIR=%~dp0
java -Xmx512M -jar "%SCRIPT_DIR%sbt-launch.jar" %*


Dans le répertoire mongo-hadoop après un git clone https://github.com/mongodb/mongo-hadoop.git , lançer sbt et utiliser les commandes

compile : pour compiler
package : pour créer les fichiers jars
publish : pour publier dans votre repository local ivy2 (~/.ivy2)

Vous devez alors mettre dans votre distribution PIg, 3 jars :
– mongo-hadoop-core-1.1.0-SNAPSHOT.jar
– mongo-hadoop-pig-1.1.0-SNAPSHOT.jar
– mongo-java-driver-2.7.1.jar

et dans votre fichier PIG :

/* MongoDB libraries and configuration */
REGISTER lib/mongo-java-driver-2.7.1.jar /* MongoDB Java Driver */
REGISTER lib/mongo-hadoop-core-1.1.0-SNAPSHOT.jar
REGISTER lib/mongo-hadoop-pig-1.1.0-SNAPSHOT.jar

/* Shortcut */
DEFINE AVROSTORAGE org.apache.pig.piggybank.storage.avro.AvroStorage();
DEFINE MONGOSTORAGE com.mongodb.hadoop.pig.MongoStorage();

avros = load '/tmp/data/referential.avro' using AVROSTORAGE();
store avros into 'mongodb://mobgodb/referential.db' using MONGOSTORAGE();

Alimenter au fil de l’eau Apache Hadoop

Contrairement à l’import massif de données comme évoqué dans le dernier billet, Apache Hadoop peut être alimenté par 2 autres applications Apache au fil de l’eau.
Apache Kafka : développé initialement par Linkedin, Kafka est un système de messagerie asynchrone (broker de messages) s’appuyant sur Zookeeper pour synchroniser les différentes instances.
Kafka est plus rapide que les classiques brokers JMS (Apache ActiveMQ, JBossMQ, Websphere MQ, …) car la distribution des messages se fait sans garantie d’ordre et sans confirmation du la réception du message (acknowledge).
Apache Flume: developpé pour alimenter initialement Hadoop des fichiers de logs, il existe plusieurs connecteurs permettant de collecter d’autres sources d’information (JMS, IRC,…)

Intégration base de données – Apache Hadoop

Il existe de plus en plus de connecteurs permettant d’importer massivemment les données d’un SGBD vers Apache Hadoop et réciproquement d’exporter les données vers la base de données après traitement sur le système de fichiers distribués HDFS d’Hadoop.
La solution par défaut proposée par la communauté Apache est Apache SQOOP. Toutes les bases de données avec un driver JDBC v2.0 sont supportées. Du code spécifique pour MySQL a été développé pour le support du mode direct et Quest Software a développé un connecteur sur Apache SQOOP permettant d’accélérer les imports dans Oracle.
De même Teradata essaye de suivre le mouvement en proposant des connecteurs avec leur nouvelle suite Teradata Aster.

Oracle Data Integrator Application Adapter for Hadoop

Oracle a développé un produit de type ETL basé sur Apache Hive : Oracle Data Integrator Application Adapter for Hadoop.
Les développements sont en SQL et Hive génére un job de Map/Reduce permettant d’exploiter les données sous Apache Hadoop.

D’autres produits ETL intégrent aussi maintenant un générateur de Map/Reduce :
Talend Big Data qui est en fait le produit ETL Talend Open Studio avec des composants comme Apache Pig dans la palette. Le gros apport de cette solution est de pouvoir générer des executables java (librairie jar) qui ne nécessite pas de runtime Talend sur les serveurs.
– Informatica a aussi intégré une version Big Data à leur produit PowerCenter

L’élément principal à regarder lors du choix d’un de ces produits est de vérifier que le produit ETL reste juste un IDE et que le code généré ne demande pas un produit à installer sur les serveurs. Seul Talend Big Data semble respecter cette règle