作为Java攻城狮,以后不免要和Spring结下很深的情节,正式工作之后一定会基于Spring的许多内容做一系列的开发。还好,让我发现了基于Spring,已经有了和我喜欢的Hadoop相结合的项目。
在今年三月份的时候,Vmware发布了Spring Hadoop software,在Spring框架下支持编写 Hadoop 应用。Spring-hadoop这个项目应该是在Spring Data项目的一部分(Srping data其余还包括把Spring和JDBC,REST,主流的NoSQL结合起来了)。其实再一想,Spring和Hadoop结合会发生什么呢,其实就是把Hadoop组件的配置,任务部署之类的东西都统一到Spring的bean管理里去了。
开门见山
话不多说,先来个例子看看吧。MapReduce里有个类似与"Hello World"的example,就是"Word Count",在Spring Hadoop里,它长这样:
<!-- configure Apache Hadoop FS/job tracker using defaults -->
<hdp:configuration />
<!-- define 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"/>
<!-- execute the job -->
<bean id="runner" class="org.springframework.data.hadoop.mapreduce.JobRunner"
p:jobs-ref="word-count"/>
可以看到任务的参数配置和提交都由IoC容器来管理。Mapper和Reducer里需要额外参数的话,也可以进行配置。
同时,Spring Hadoop并不要求MapReduce程序必须由Java编写,你用别的语言编写的Streaming job都可以无缝结合在Spring配置里跑起来,这些jobs都是objects,对于Spring来说,都是beans
<hdp:streaming id="streaming-env"
input-path="/input/" output-path="/ouput/"
mapper="${path.cat}" reducer="${path.wc}">
<hdp:cmd-env>
EXAMPLE_DIR=/home/example/dictionaries/
</hdp:cmd-env>
</hdp:streaming>
此外现有的其他的Hadoop实现工具也支持。比如下面这个Twitter的
Scalding(它是一个用来写MapReduce任务的Scala库)
<!-- the tool automatically is injected with 'hadoop-configuration' -->
<hdp:tool-runner id="scalding" tool-class="com.twitter.scalding.Tool">
<hdp:arg value="tutorial/Tutorial1"/>
<hdp:arg value="--local"/>
</hdp:tool-runner>
关键特性
- Spring Hadoop支持MapReduce、Streaming、Hive、Pig和级联工作能够通过Spring容器执行。
- HDFS的数据访问能通过JVM支持的脚本语言,如Groovy,JRuby,Jython等等。
- 支持声明式配置HBase
- 对于客户端连接Hadoop,提供强大的Hadoop配置选项和模板机制
- 还计划支持Hadoop工具,包括FsShell和DistCp等。
总之能把Hadoop各成员的配置,创建都和Spring的容器结合起来,得到统一的管理。
继续例子
再来看几个代表性的例子。
HBase和Pig:
<!-- HBase configuration with nested properties -->
<hdp:hbase-configuration stop-proxy="false" delete-connection="true">
foo=bar
</hdp:hbase-configuration>
<!-- create a Pig instance using custom properties
and execute a script (using given arguments) at startup -->
<hdp:pig properties-location="pig-dev.properties" />
<script location="org/company/pig/script.pig">
<arguments>electric=tears</arguments>
</script>
</hdp:pig>
Hive的:
<!-- basic Hive driver bean -->
<bean id="hive-driver" class="org.apache.hadoop.hive.jdbc.HiveDriver"/>
<!-- wrapping a basic datasource around the driver -->
<bean id="hive-ds"
class="org.springframework.jdbc.datasource.SimpleDriverDataSource"
c:driver-ref="hive-driver" c:url="${hive.url}"/>
<!-- standard JdbcTemplate declaration -->
<bean id="template" class="org.springframework.jdbc.core.JdbcTemplate"
c:data-source-ref="hive-ds"/>
下面例子是用Groovy进行HDFS上的文件操作,目的是说明能将JVM支持的语言同HDFS进行交互操作。
<hdp:script language="groovy">
inputPath = "/user/gutenberg/input/word/"
outputPath = "/user/gutenberg/output/word/"
if (fsh.test(inputPath)) {
fsh.rmr(inputPath)
}
if (fsh.test(outputPath)) {
fsh.rmr(outputPath)
}
fs.copyFromLocalFile("data/input.txt", inputPath)
</hdp:script>
总结
更具体的说明和使用可以参看github上的spring-hadoop项目。
(全文完)
分享到:
相关推荐
Desktop.zip,基于文档的桌面应用程序库桌面上scala的应用程序框架。https://git.iem.at/sciss/desktop镜像
joda-stopwatch.zip,Joda时间库的简单秒表对象Joda时间库的简单秒表对象
Spring for Apache Hadoop 提供了 Spring...如果你需要简单的基于 Hadoop 进行作业调度,你可添加 Spring for Apache Hadoop 命名空间到你的 Spring 项目即可快速使用 Hadoop 了,使用该项目无需了解过多 Hadoop 技巧。
Hadoop短视频流量网站-Hadoop短视频流量网站代码-Hadoop短视频流量平台-Hadoop短视频流量平台代码-Hadoop短视频流量项目-Hadoop短视频流量项目代码-Hadoop短视频流量代码 1、技术栈:java,springboot,vue,ajax,...
基于Web的Hadoop的高校固定资产系统设计与实现-Hadoop的高校固定资产网站-Hadoop的高校固定资产网站代码-Hadoop的高校固定资产平台-Hadoop的高校固定资产平台代码-Hadoop的高校固定资产项目-Hadoop的高校固定资产...
基于Web的“Hadoop的物品租赁系统设计与实现-“Hadoop的物品租赁网站-“Hadoop的物品租赁网站代码-“Hadoop的物品租赁平台-“Hadoop的物品租赁平台代码-“Hadoop的物品租赁项目-“Hadoop的物品租赁项目代码-“Hadoop...
简单的工作流程 简单的工作流 MapReduce 示例。... 此示例依赖于wordcount-hadoop项目,因此您必须首先构建并安装它。 在本示例中,使用master主机名作为 Hadoop 服务器的 IP。 此示例与 Hadoop 2 或更高版本兼容
基于Web的基于Hadoop的物品租赁系统设计与实现-基于Hadoop的物品租赁网站-基于Hadoop的物品租赁网站代码-基于Hadoop的物品租赁平台-基于Hadoop的物品租赁平台代码-基于Hadoop的物品租赁项目-基于Hadoop的物品租赁...
第五节 SpringBoot集成hadoop开发环境(复杂版的WordCount)前言环境清单创建SpringBoot项目创建包创建yml添加集群主机名映射hadoop配置文件环境变量HADOOP_HOME编写代码添加hadoop依赖jar包编译项目造数据IDEA远程...
基于SpringMVC+Spring+HBase+Maven搭建的Hadoop分布式云盘系统.zip 语言:Java 框架:springMVC 数据库:HBASE 可以作为毕业设计
现有的大数据平台Hadoop、Spark等都在处理文本数据方面具有很好的支持,并且效率也经过了各种优化,所以在利用分布式框架来处理日志类数据,工作难度往往是如何对这些数据进行逻辑上的处理。但是对于非结构化数据,...
#计划安排,集成spring cloud aliababa ,hadoop,前端vue 集成 email(完成,后期集成数据库) 日志配置logback实现了slf4j,指定日志目录,分片,日志查询脚本grep.sh(完成) 集成mvc完成,...
该项目使用 Hadoop-Mapreduce 对大约 3000 只纳斯达克股票进行了股票波动率计算。 该项目是作为纽约州立大学布法罗大学 Vipin Chaudhary 博士的 CSE587-数据密集型计算(2015 年Spring)课程的一部分实施的
本项目前端采用渐进式框架Vue实现,后端采用SpringCloud微服务提供服务,这样一来不仅前后端可以实现分离,并行开发而且采用微服务架构,服务与服务之间更易相互协调,相互配合,为用户提供最终价值,每个服务都围绕...
当前项目包含以下功能: 使用spring-data-jpa从mariadb或mysql加载数据 弹簧靴支持 大数据分析的火花 hadoop集成 用于发布Spark作业进度的Redis 来自图挖掘的graphx(例如页面排名) 将Java和Scala代码都集成在一...
基于SpringCloud+Hadoop+Vue的企业级网盘系统设计与实现源码 华东交通大学,优秀毕业设计分享 前端:vue-projectManage 后台:mycloud-admin 提供前端服务:mycloud ps:springcloud实现 文件在线预览服务:file...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
基于Spring Boot与Hadoop生态圈构建的大数据平台+源代码+文档说明 -------- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96...