BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Spring for Apache Hadoop 1.0发布

| 作者 Bienvenido David III 关注 0 他的粉丝 ,译者 孙镜涛 关注 2 他的粉丝 发布于 2013年3月19日. 估计阅读时间: 11 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

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包含以下关键特性:

  • 支持声明式配置,能够创建、配置和参数化Hadoop连接,支持MapReduce、流、Hive、Pig和级联工作。有不同的“runner”类执行不同的Hadoop交互类型,它们分别是JobRunner、ToolRunner、 JarRunner、 HiveRunner、 PigRunner、CascadeRunner和HdfsScriptRunner。
  • 全面的HDFS数据访问支持,可以使用所有基于JVM的脚本语言,例如Groovy、JRuby、Jython和Rhino。
  • 支持 Pig和Hive的模板类PigTemplate和HiveTemplate。这些辅助类提供了异常转化、资源管理和轻量级对象映射功能。
  • 支持对HBase的声明式配置,同时为Dao层支持引入了HBaseTemplate。
  • 声明和编程支持Hadoop工具,包括文件系统Shell(FsShell)和分布式复制(DistCp)。
  • 安全支持。Spring for Apache Hadoop清楚运行Hadoop环境的安全约束,因此能够透明地从一个本地开发环境迁移到一个完全Kerberos安全的Hadoop集群。
  • 支持Spring Batch。通过Spring Batch,多个步骤能够被调整为有状态的方式并使用REST API进行管理。例如,Spring Batch处理大文件的能力就可以被用于向HDFS导入或者从HDFS导出文件。
  • 支持Spring Integration。Spring Integration允许对那些在被读取并写入HDFS及其他存储之前能够被转换或者过滤的事件流进行处理。

下面是配置示例和代码片段,大部分来自于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();
    }
}));

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等。

想要获取更深入的信息,你可以阅读Spring for Apache Hadoop 参考手册Javadoc。Spring for Apache Hadoop 的源代码示例托管在GitHub上。

查看英文原文Spring for Apache Hadoop 1.0

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

spring的速度可真够快的 by leo leo

spring的速度可真够快的!!!

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT