BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Spring para Apache Hadoop 1.0: Big Data mais perto do Spring

Spring para Apache Hadoop 1.0: Big Data mais perto do Spring

A SpringSource lançou a versão 1.0 do Spring para Apache Hadoop. Esse projeto permite que desenvolvedores escrevam aplicações Hadoop de forma integrada ao Spring Framework; também facilita a integração com o Spring Batch e o Spring Integration. O Spring para Apache Hadoop é um subprojeto do Spring Data e é lançado sob a licença open source Apache 2.0.

Aplicações Hadoop normalmente são compostas de uma coleção de utilitários de linha de comando, scripts e código. O Spring para Apache Hadoop fornece um modelo de programação consistente e um modelo de configuração declarativa para desenvolver aplicações Hadoop.

As aplicações Hadoop agora podem ser implementadas utilizando o modelo de programação do Spring (injeção de dependências, POJOs, Helper Templates), e rodar como uma aplicação Java padrão, em vez de como utilitários de linha de comando. O Spring para Apache Hadoop suporta leitura e escrita no sistema de arquivos HDFS, execução de MapReduce, jobs Streaming (utilitário para criar e rodar tarefas MapReduce com qualquer executável ou script atuando como mapper e/ou reducer) ou Cascading (framework que permite criar e executar fluxos de processamento de dados em qualquer linguagem baseada na JVM, como Java e JRuby), além de interagir com HBase, Hive e Pig.

Entre as principais funcionalidades do projeto estão:

  • Configuração declarativa para criar, configurar e parametrizar a conectividade do Hadoop e dos jobs MapReduce, Streaming, Hive, Pig e Cascading. Há também classes "runner" que executam os diferentes tipos de interação Hadoop: JobRunner, ToolRunner, JarRunner, HiveRunner, PigRunner, CascadeRunner e HdfsScriptRunner.
  • Suporte abrangente para acesso de dados HDFS utilizando qualquer linguagem de script baseada na JVM, como Groovy, JRuby, Jython e Rhino.
  • Classes de template para Pig (PigTemplate) e Hive (HiveTemplate). Essas classes utilitárias oferecem tradução de exceções, gerenciamento de recursos e funcionalidades leves de mapeamento de objetos.
  • Configuração declarativa para HBase e introdução do HBaseTemplate para suporte DAO.
  • Suporte declarativo e programático para Hadoop Tools, incluindo File System Shell (FsShell) e Distributed Copy (DistCp).
  • Suporte a segurança. O Spring para Apache Hadoop leva em conta requisitos de segurança de um ambiente de execução do Hadoop. Sendo assim, a mudança de um ambiente de desenvolvimento local para um cluster Hadoop totalmente protegido por Kerberos é feita de forma transparente.
  • Suporte ao Spring Batch. Com o Batch, múltiplos passos podem ser coordenados de maneira statefull (com estado) e administrados por meio de uma API REST. Por exemplo, a habilidade do Spring Batch em gerenciar o processamento de grandes arquivos pode ser usada para importar e exportar arquivos de um sistema HDFS.
  • Suporte ao Spring Integration. O Spring Integration permite o processamento de fluxos de eventos que podem ser transformados ou filtrados antes de serem lidos e escritos em um sistema HDFS ou outro tipo de armazenamento.

A seguir são mostrados alguns exemplos de configurações e trechos de código, a maioria obtida no blog ou no manual de referência do Spring para Hadoop.

MapReduce:

    <!-- utiliza a configuração padrão -->
    <hdp:configuration />

    <!-- cria o 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" />

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

HDFS:

    <!-- copia um arquivo utilizando 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 - FileSystem instance based on 'hadoopConfiguration' bean
        fs.copyFromLocalFile(scriptName, name)
    </hdp:script>

HBase:

    <!-- utiliza a configuração padrão do HBase -->
    <hdp:hbase-configuration />
       
    <!-- faz a ligação com a configuração hbase -->
    <bean id="hbaseTemplate" class="org.springframework.data.hadoop.hbase.HbaseTemplate" p:configuration-ref="hbaseConfiguration" />

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

Hive:

    <!-- configura a fonte de dados -->
    <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}" />

    <!-- configura a declaração JdbcTemplate padrão -->
    <bean id="hiveTemplate" class="org.springframework.jdbc.core.JdbcTemplate" c:data-source-ref="hive-ds"/>

Pig:

    <!-- roda um script pig externo -->
    <hdp:pig-runner id="pigRunner" run-at-startup="true">
        <hdp:script location="pig-scripts/script.pig"/>
    </hdp:pig-runner>

Para começar com o Spring para Apache Hadoop, baixe o projeto ou utilize o artefato Maven org.springframework.data:spring-data-hadoop:1.0.0.RELEASE. Há um exemplo disponível (Wordcount) no site oficial e também um webinar no YouTube (Introducing Spring Hadoop).

O Spring para Apache Hadoop requer o JDK 6.0 ou superior, Spring Framework 3.0 ou mais recentec (recomenda-se a versão 3.2) e o Apache Hadoop 0.20.2 (recomenda-se a versão 1.0.4). As versões Hadoop YARN, NextGen ou 2.x não são suportadas. Qualquer distribuição do Apache Hadoop 1.0.x deve ser suportada; isso inclui distribuições como Apache Hadoop padrão, Cloudera CDH3 e CDH4, e Greenplum HD.

Para informações mais detalhadas, consulte o Manual de Referência e o Javadoc do projeto. O código-fonte e exemplos estão disponíveis no GitHub.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT