BT

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

por Bienvenido David III , traduzido por Marcelo Cenerino em 25 Mar 2013 |

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

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

site de big data by Mauricio Ortiz Ciglio

bigdatabrasil.net

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

1 Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.