BT

Spring pour Apache Hadoop 1.0

| par Bienvenido David III Suivre 0 Abonnés , traduit par Benoît Nouyrigat Suivre 0 Abonnés le 27 mai 2013. Durée de lecture estimée: 4 minutes |

SpringSource a sorti Spring for Apache Hadoop 1.0. Spring for Apache Hadoop permet aux développeurs d'écrire des applications Hadoop avec le framework Spring. Il facilite aussi l'intégration avec Spring Batch et Spring Integration. Spring for Apache Hadoop est un sous-projet de Spring Data, publié sous la licence open source Apache 2.0.

Les applications Hadoop sont en général une collection d'utilitaires en ligne de commande et de scripts. Spring for Apache Hadoop propose un modèle de programmation cohérent et une configuration déclarative pour développer des applications Hadoop. Les applications Hadoop peuvent maintenant être implémentées en utilisant le modèle de programmation Spring (Injection de Dépendances, POJOs, Templates Helper) et exécutées comme une application Java standard plutôt qu'en ligne de commande comme les utilitaires. Spring for Apache Hadoop supporte le système de fichiers distribué HDFS en lecture et en écriture, exécute des Jobs type MapReduce, Streaming ou Cascading, et interagit avec la base de données HBase, l'entrepôt de données Hive et la plate-forme d'analyse Pig.

Les éléments clés de Spring for Apache Hadoop incluent :

  • une configuration déclarative pour créer, configurer et paramétrer la connectivité Hadoop, ainsi que les jobs MapReduce, Streaming, Hive, Pig, et Cascading. Il existe des classes "Runner" pour exécuter différents types d'interaction Hadoop : JobRunner, ToolRunner, JarRunner, HiveRunner, PigRunner, CascadeRunner et HdfsScriptRunner.
  • Un support d'accès complet à HDFS depuis n'importe quel langage de script basé sur la JVM comme : Groovy, JRuby, Jython et Rhino.
  • Des classes Template pour Pig et Hive. PigTemplate et HiveTemplate simplifient l'accès aux données, convertissent les exceptions et gèrent automatiquement la création des ressources.
  • Une configuration déclarative pour HBase, ainsi que HBaseTemplate pour un support DAO.
  • Un support déclaratif et programmatique pour Hadoop Tools qui inclut FsShell (File System Shell) et DistCp (Distributed Copy).
  • Un support pour la sécurité. Spring for Apache Hadoop prend en compte les contraintes de sécurité liées à l'exécution d'un environnement Hadoop et facilite le passage d'un environnement de développement local vers un cluster entièrement sécurisé avec le protocole Kerberos.
  • Un support de Spring Batch. Plusieurs étapes peuvent être coordonnées d'une manière stateful et administrées avec une API REST. Par exemple, des fichiers volumineux peuvent être importés depuis ou exportés vers HDFS.
  • Un support de Spring Integration. Spring Integration permet le traitement de flux d'événements qui peuvent être transformés ou filtrés avant d'être lu et écrit sur HDFS ou un autre stockage.

Voici des exemples de configuration et des extraits de code issus du blog de Spring for Hadoop ou du manuel de référence.

MapReduce

<!-- Utilisation de la configuration par défaut -->
<hdp:configuration />

<!-- Création du job -->
<hdp:job id="word-count" 
    input-path="/input/" output-path="/ouput/"
    mapper="org.apache.hadoop.examples.WordCount.TokenizerMapper"
    reducer="org.apache.hadoop.examples.WordCount.IntSumReducer" />

<!-- Exécution du job -->
<hdp:job-runner id="word-count-runner" pre-action="cleanup-script" post-action="export-results" job="word-count" run-at-startup="true" />

HDFS

<!-- Copier un fichier en utilisant Rhino -->
<hdp:script id="inlined-js" language="javascript" run-at-startup="true">
    importPackage(java.util)

    name = UUID.randomUUID().toString()
    scriptName = "src/main/resources/hadoop.properties"
    // fs - Instance de type FileSystem basée sur le bean 'hadoopConfiguration'
    fs.copyFromLocalFile(scriptName, name)
</hdp:script>

HBase

<!-- Utiliser la configuration HBase par défaut -->
<hdp:hbase-configuration />

<!-- Brancher la configuration HBase -->
<bean id="hbaseTemplate" class="org.springframework.data.hadoop.hbase.HbaseTemplate" p:configuration-ref="hbaseConfiguration" />

// lire chaque ligne de HBaseTable (Java)
List rows = template.find("HBaseTable", "HBaseColumn", new RowMapper() {
    @Override
    public String mapRow(Result result, int rowNum) throws Exception {
        return result.toString();
    }
});

Hive

<!-- Configurer la source de données -->
<bean id="hive-driver" class="org.apache.hadoop.hive.jdbc.HiveDriver" />
<bean id="hive-ds" class="org.springframework.jdbc.datasource.SimpleDriverDataSource" c:driver-ref="hive-driver" c:url="${hive.url}" />

<!-- Déclarer un JdbcTemplate avec la configuration standard -->
<bean id="hiveTemplate" class="org.springframework.jdbc.core.JdbcTemplate" c:data-source-ref="hive-ds"/>

Pig

<!-- Lancer l'exécution d'un script Pig externe -->
<hdp:pig-runner id="pigRunner" run-at-startup="true">
    <hdp:script location="pig-scripts/script.pig"/>
</hdp:pig-runner>

Pour commencer, vous pouvez télécharger Spring for Apache Hadoop, ou utiliser l'artefact Maven org.springframework.data:spring-data-hadoop:1.0.0.RELEASE. L'exemple WordCount est aussi disponible. Une introduction à Spring Hadoop est visible sur YouTube.

Le JDK 6.0, ou supérieur, est requis par Spring for Apache Hadoop, ainsi que Spring Framework 3.0 (3.2 recommandé) , et Apache Hadoop 0.20.2 (1.0.4 recommandé). Hadoop YARN, NextGen or 2.x (la nouvelle version MapReduce), n'est pas supporté actuellement. N'importe quelles distributions Apache Hadoop 1.0.x devraient être supportées, et cela inclut les distributions vanilla Apache Hadoop, Cloudera CDH3 et CDH4, Greenplum HD.

Pour une information plus complète, vous pouvez lire le manuel de référence de Spring for Apache Hadoop et la Javadoc. Le code source de Spring for Apache Hadoop et les exemples sont sur GitHub.

Evaluer cet article

Pertinence
Style

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Se connecter à InfoQ pour interagir sur ce qui vous importe le plus.


Récupérer votre mot de passe

Follow

Suivre vos sujets et éditeurs favoris

Bref aperçu des points saillants de l'industrie et sur le site.

Like

More signal, less noise

Créez votre propre flux en choisissant les sujets que vous souhaitez lire et les éditeurs dont vous désirez suivre les nouvelles.

Notifications

Restez à jour

Paramétrez vos notifications et ne ratez pas le contenu qui vous importe

BT