http://docs.spring.io/spring-hadoop/docs/1.0.1.RELEASE/reference/html/hbase.html 参考网址
SpringSource发布了Spring for Apache Hadoop 1.0。开发者能够通过它编写基于Spring Framework的Hadoop应用,还能很容易地与Spring Batch和Spring Integration集成。Spring for Apache Hadoop是Spring Data大型项目的一个子项目,它基于开源的Apache 2.0许可发布。
Hadoop应用通常是一个命令行工具、脚本和代码的集合。Spring for Apache Hadoop为Hadoop应用开发提供了一个一致性的编程模型和声明式配置模型。开发人员现在能够借助它使用Spring编程模型(依赖注入、POJO和辅助模板)实现Hadoop应用,并且能够以标准的Java应用而不是命令行工具的方式运行它。Spring for Apache Hadoop支持对HDFS的读写操作,支持运行MapReduce、流或者级联工作,还能够与HBase、Hive和Pig交互。
Spring for Apache Hadoop包含以下关键特性:
下面是配置示例和代码片段,大部分来自于Spring for Hadoop博客或者参考手册。
MapReduce
<!-- use the default configuration --> <hdp:configuration /> <!-- create the 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" /> <!-- run the job --> <hdp:job-runner id="word-count-runner" pre-action="cleanup-script" post-action="export-results" job="word-count" run-at-startup="true" />
HDFS
<!-- copy a file using 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
<!-- use default HBase configuration --> <hdp:hbase-configuration /> <!-- wire hbase configuration --> <bean id="hbaseTemplate" class="org.springframework.data.hadoop.hbase.HbaseTemplate" p:configuration-ref="hbaseConfiguration" /> // read each row from HBaseTable (Java) List rows = template.find("HBaseTable", "HBaseColumn", new RowMapper() { @Override public String mapRow(Result result, int rowNum) throws Exception { return result.toString(); } }));
修正:未引入p标签
<hdp:configuration>
fs.default.name=hdfs://172.20.59.47:9000
</hdp:configuration>
<hdp:hbase-configuration zk-quorum="172.20.59.47" zk-port="2181"/>
<bean id="htemplate" class="org.springframework.data.hadoop.hbase.HbaseTemplate" >
<property name="configuration" ref="hbaseConfiguration"></property>
</bean>
Hive
<!-- configure data source --> <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}" /> <!-- configure standard JdbcTemplate declaration --> <bean id="hiveTemplate" class="org.springframework.jdbc.core.JdbcTemplate" c:data-source-ref="hive-ds"/>
Pig
<!-- run an external pig script --> <hdp:pig-runner id="pigRunner" run-at-startup="true"> <hdp:script location="pig-scripts/script.pig"/> </hdp:pig-runner>
如果想要开始,可以下载Spring for Apache Hadoop或者使用org.springframework.data:spring-data-hadoop:1.0.0.RELEASE Maven构件。还可以获取Spring for Hadoop的WordCount示例。在YouTube上还有介绍Spring Hadoop的网络会议。
Spring for Apache Hadoop需要JDK 6.0及以上版本、Spring Framework 3.0及以上版本(推荐使用3.2)和Apache Hadoop 0.20.2 (推荐1.0.4)。现在并不支持Hadoop YARN、NextGen或 2.x。支持所有的Apache Hadoop 1.0.x分布式组件,这些分布式组件包括vanilla Apache Hadoop、Cloudera CDH3、CDH4和Greenplum HD等。