I. 简介
<!--[if !supportLists]-->1. <!--[endif]-->环境需求
Spring for Apache Hadoop 2.1使用JDK 7、Spring Framework 4.1编译测试,对应的Hadoop版本是2.6。
· Spring for Apache Hadoop 2.1支持如下版本的发布版:
· Apache Hadoop 2.4.1
· Apache Hadoop 2.5.2
· Apache Hadoop 2.6.0
· Pivotal HD 2.1
· Cloudera CDH 5(2.5.0-cdh5.3.0)
· Hortonworks Data Platform 2.2
任何与Apache Hadoop 2.2.x或者后续版本兼容的发布版都是可用的。
Spring for Apache Hadoop 2.1 针对很多发布版本进行常规测试。详情参见测试计划页面(https://build.spring.io/browse/SPRINGDATAHADOOP)。
使用各种支持的发布版建立项目的介绍在Spring for Apache Hadoop wiki 提供( https://github.com/spring-projects/spring-hadoop/wiki)。(译者注:维基提供的repository没有包含Spring for CDH的版本,如果发现可以提醒译者谢谢,QQ:289705018)
关于Hadoop相关的项目,如SDHP支持HBase 0.94.11,Hive 0.11.0和Pig 0.11.0以及后续版本。当使用Hadoop相关项目时例如Hive或者Pig,使用某个需要的Hadoop版本作为基础然后寻找这个基础版本支持的相关项目的版本是一个首要原则。
要发挥Spring for Hadoop所有的作用需要运行一个Hadoop集群。如果你还没有集群环境,第一步最好建立一个单节点集群。安装最近的Hadoop稳定版,Apache项目官方网站的“Getting started”(http://hadoop.apache.org/common/docs/stable/#Getting+Started)页面一般来说是个比较好的指导。那里有单节点集群搭建的内容。
还建议下载一个虚拟机供Hadoop安装和运行。Cloudera,Hortonworks和Pivotal的产品页面都提供了虚拟机和镜像的下载。
<!--[if !supportLists]-->2. <!--[endif]-->其他资源
这个文档作为Spring for Hadoop项目的一个参考,还有其他的一些可选资源提供额外的背景知识和示例代码作为这个文档的补充供读者进行实验和体验。
· Spring for Apache Hadoop 示例。官方知识库有很多SHDP示例演示不同项目的特性。
· 《Spring Data Book》。作为Spring Data的使用指南由项目的提交者编写。不但包含了Spring Data Hadoop的介绍,又有与兄弟项目串联的部分。
· 《Spring Data Book》示例。为《Spring Data Book》编写的完全可运行的代码。其中的一些在Spring for Apache Hadoop的示例中也是可用的。
II. Spring 和 Hadoop
本部分介绍Spring for Apache Hadoop提供给基于Spring的应用的核心功能。
<!--[if !supportLists]-->3. <!--[endif]-->Hadoop配置
描述了Spring支持的Hadoop的通用属性。
使用Hadoop时一个主要任务是与runtime集成--不管是本地模式还是远程集群,正确配置和引导Hadoop程序以便提交job。本章的重点在于如何利用Spring for Apache Hadoop(SHDP)与Spring的轻量级IoC容器,简化与Hadoop的集成以及部署、测试,并便于服务的开通和更具管理的便捷性。
3.1. 使用Spring for Hadoop的命名空间
为了简化配置,SHDP为几乎所有的组件提供了预定义的命名空间。当然也可以选择使用<bean>标签直接定义自己的bean。更多基于XML模式配置Spring的信息在Spring Framework的参考文档中可见(http://docs.spring.io/spring/docs/4.1.x/spring-framework-reference/html/xsd-config.html)。
为了只用SHDP的命名空间,只需将其在配置中引入即可。
① Spring for Hadoop命名空间前缀。任何前缀名都是可以使用的但是在本文档中会一直使用hdp。
②命名空间的URI。
③命名空间URI的位置。即便位置指向外部的地址也是可行的,Spring会在把它当作包含在Spring for Hadoop类库一样本地解析这个schema。
④Hadoop命名空间生命的例子。注意前缀的使用。
命名空间一旦引入,就可以用前面预定义的前缀创建元素。值得注意的是,默认的命名空间可以被修改,例如从<beans>变为<hdp>。当配置主要由Hadoop的组件组成,想要免前缀进行元素声明时很有用。通过交换命名空间前缀定义的位置就可以实现。
<?xml version=”1.0” encoding=”UTF-8”?>
<beans xmlns=”http://www.springframework.org/schema/hadoop”①
Xmlns:xsi=”http://www.23.org/2001/XMLSchema-instance”
xmlns:beans="http://www.springframework.org/schema/beans" ②
Xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schcema/hadoop/spring-hadoop.xsd”>
<beans:bean id .../>③
<configruation .../>④
</beans:beans>
①这个XML文件默认的的命名空间声明指向Spring for Apache Hadoop的命名空间。
②beans命名空间前缀声明。
③使用<beans>命名空间声明Bean。注意前缀。
④使用<hdp>命名空间生命Bean。注意前缀没有了。
为了提高可读性,文档剩余的部分的XML示例都会在没有命名空间生命的情况下使用<hdp>命名空间。
3.2. 使用Spring for Hadoop的JavaConfig
注释配置通过SpringHadoopConfigurerAdapter进行工作,注释是松散的,力图使用与xml同样类型的dsl语言。
<!—merge the local properties, the props bean and the tow properties files-->
<hdp:configuration properties-ref=”props” properties-location=”cfg-1.properties,cfg-2.properties”>
star=chasing
caption=eo
</hdp:configuration>
<util:properties id=”props” location=”props.properties”/>
</beans>