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.
site de big data
by Mauricio Ortiz Ciglio,
site de big data
by Mauricio Ortiz Ciglio,
Seu comentário está aguardando aprovação dos moderadores. Obrigado por participar da discussão!
bigdatabrasil.net