大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

Spring for Apache Hadoop 1.0 发布

  • 2013-03-18
  • 本文字数:2172 字

    阅读完需:约 7 分钟

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

2013-03-18 07:446015
用户头像

发布了 321 篇内容, 共 132.8 次阅读, 收获喜欢 19 次。

关注

评论

发布
暂无评论
发现更多内容

推荐 6 个前后端分离项目

Java 程序员 后端

懊悔!早一点遇到这份1399页Nginx笔记,我绝不会错过阿里offer!

Java 程序员 后端

成为架构师之前,你一定要懂的-CAP-定理

Java 程序员 后端

我所理解的Java锁

Java 程序员 后端

我这么回答对Spring的理解,面试官狂问我什么时候入职?

Java 程序员 后端

手把手教你,从零开始搭建Spring Cloud Alibaba!这份笔记太牛了

Java 程序员 后端

拥有阿里P8推荐的SpringBoot笔记,备战金九银十,吊打面试官不是梦

Java 程序员 后端

排序二叉树JAVA版实现

Java 程序员 后端

教女朋友学习 vue中的组件

Java 程序员 后端

教妹学Java(二十五):搞懂 Java 中的构造方法

Java 程序员 后端

我上高中的弟弟都能看懂的Docker学习教程,你看看讲的怎么样

Java 程序员 后端

手写线程池实战

Java 程序员 后端

想搞清楚ZooKeepe?这篇入门你必须了解!

Java 程序员 后端

什么是 TypeScript

HoneyMoose

教妹学Java(二十 七):this 关键字的用法(1)

Java 程序员 后端

教妹学Java(二十 七):this 关键字的用法

Java 程序员 后端

手把手带你用数据库中间件Mycat+SpringBoot完成分库分表

Java 程序员 后端

抽象工厂模式

Java 程序员 后端

拿了 30K 的 offer!

Java 程序员 后端

掌握了2-3-4树也就掌握了红黑树,不信进来看看,建议收藏!

Java 程序员 后端

Docsify 脚本执行权限问题

HoneyMoose

教妹学Java(二十一):一文带你了解面向对象编程的所有概念

Java 程序员 后端

教妹学Java(二十四):一文了解 Java 中的方法

Java 程序员 后端

我来告诉你解决死锁的100种方法

Java 程序员 后端

我用了3年,从小厂干到美团L8技术专家!分享一下面经!

Java 程序员 后端

手撕ArrayList底层,透彻分析源码

Java 程序员 后端

捕获异常&指令重塑

Java 程序员 后端

手把手教学妹CompletableFuture异步化,性能关系直接起飞!

Java 程序员 后端

我猜你还没明白如何利用好Redis、Redisson使用实现分布式锁?

Java 程序员 后端

我的Serverless实战——能掰扯面试官的SSVM超详细解析!

Java 程序员 后端

接口文档:第二章:使用Swagger接口的文档在线自动生成

Java 程序员 后端

Spring for Apache Hadoop 1.0发布_Java_Bienvenido David_InfoQ精选文章