SpringHadoop是通过Spring框架来调用hdfs,跟直接调用hdfs的最大的不同区别是Spring通过依赖注入的方式生成操作hdfs所需要的configuration和filesystem对象,其他所有调用hdfs的api不变

1.在项目的main目录下创建resources文件夹,并将其添加到项目的资源文件中,如图

2.在resources文件夹下创建beans.xml和application.properties文件,分别用来注入对象及管理配置文件

3.添加hadoop和spring-hadoop的依赖


<!--在这里可以定义变量,可以统一管理版本号-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--对hadoop版本进行统一管理-->
<hadoop.version>2.6.0-cdh5.7.0</hadoop.version>
</properties> <repositories>
<!--添加下载hadoop的仓库-->
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
</repository>
</repositories> <dependencies> <!--添加hadoop依赖-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
<!--由于生产环境上已经有这个包,因此不需要打到项目里去-->
<scope>provided</scope>
</dependency> <!--添加spring-hadoop依赖-->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-hadoop</artifactId>
<version>2.5.0.RELEASE</version>
</dependency> </dependencies>

4.配置beans.xml和application.properties文件中的configuration和filesystem对象

beans.xml文件


<!--将属性配置文件application.properties引用进来,这样在该xml文件就可以使用该配置文件里面的属性-->
<context:property-placeholder location="application.properties"/> <!--配置hdfs的configurtion-->
<hdp:configuration id="hadoopConfiguration" >
<!--配置namenode的地址-->
fs.defaultFS=${spring.hadoop.fs-uri}
</hdp:configuration> <hdp:file-system id="fileSystem" configuration-ref="hadoopConfiguration" user="root"/>

application.properties文件

spring.hadoop.fs-uri=hdfs://hadoop01:8020

5.最后是java单元测试代码

package spring;

import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import java.io.IOException; /**
* @author ht
* @create 2018-01-30 23:03
* @desc SpringHadoop测试类
**/
public class SpringHadoopApp { //Spring上下文
private ApplicationContext mContext; //hdfs文件系统对象
private FileSystem mFileSystem; /**
* 测试创建文件夹
*/
@Test
public void mkdir() throws IOException {
mFileSystem.mkdirs(new Path("/test"));
} /**
* 测试从服务器读取文件
*/
@Test
public void text() throws IOException {
FSDataInputStream is = mFileSystem.open(new Path("/test/install.log.syslog"));
IOUtils.copyBytes(is,System.out,1024);
is.close();
} @Before
public void setUp() {
//获取Spring上下文,spring的依赖注入,是将对象注入到beans中,类似dagger2中的moudle,专门负责生成对象
mContext = new ClassPathXmlApplicationContext("beans.xml"); //通过beans.xml文件获取filesystem对象
mFileSystem = (FileSystem) mContext.getBean("fileSystem");
} @After
public void tearDown() throws IOException {
mContext = null;
mFileSystem.close();
}
}

使用Spring-hadoop小结的更多相关文章

  1. spring hadoop 访问hbase入门

    1.  环境准备: Maven Eclipse Java Spring 版本 3..2.9 2. Maven  pom.xml配置 <!-- Spring hadoop --> <d ...

  2. HBase之四--(2):spring hadoop 访问hbase

    1.  环境准备: Maven Eclipse Java Spring 2. Maven  pom.xml配置 <dependency> <groupId>org.apache ...

  3. hadoop小结

    测试小结:1.如果只需要对数据集进行过滤,筛选则只需要编写Mapper类,不需要Reduce类,此时要执行下面一条语句:job.setNumReduceTesk(0);2.如果需要对处理的数据进行分组 ...

  4. Spring归纳小结(山东数漫江湖)

    前言 如果说有什么框架是Java程序员必然会学习.使用到的,那么Spring肯定是其中之一.本篇博客,将根据博主在日常工作中对Spring的使用做一个系统的归纳小结. Spring的一些概念和思想 S ...

  5. Spring MVC小结

    Spring MVC项目搭建 添加依赖 (省略) Spring MVC配置类 @Configuration @EnableWebMvc @ComponentScan("com.sjx.spr ...

  6. Spring AOP小结

    一. AOP介绍 AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP ...

  7. Spring IoC小结

    一. IoC是什么 Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象 ...

  8. Spring JdbcTemplate小结

    提供了JdbcTemplate 来封装数据库jdbc操作细节: 包括: 数据库连接[打开/关闭] ,异常转义 ,SQL执行 ,查询结果的转换 使用模板方式封装 jdbc数据库操作-固定流程的动作,提供 ...

  9. Spring MVC小结1

    由于最近刚开始学Spring MVC,所以来讲一下自己的理解. 首先进行环境配置: 1.jdk 2.myeclipse 3.tomcat 4.maven 配置maven的时候出现了一个小的问题,JAV ...

  10. Spring使用小结2

    之前做过不少spring想过知识点内容的摘录, Spring框架的特点.模块组成.优缺点 spring相关的bean管理想过知识点及依赖注入方式 今天说下近端时间中项目中遇到的相关印象比较深的知识点 ...

随机推荐

  1. 二维码开源库ZBar-windows下编译和使用

    源码 下载最新Zbar源码(http://zbar.sourceforge.net/),网站的WIKI是空白的,所以只能在源码包里找使用说明了,很遗憾Windows下怎么编译没说明,只是说明了Wind ...

  2. Docker-v17 的层级(layer)概念

    html,body { font-size: 12pt } body { font-family: Helvetica, "Hiragino Sans GB", "微软雅 ...

  3. TensorFlow实战之实现自编码器过程

    关于本文说明,已同步本人另外一个博客地址位于http://blog.csdn.net/qq_37608890,详见http://blog.csdn.net/qq_37608890/article/de ...

  4. PHP输出打印方法

    PHP这门语言灵活而充满众多的API和用法,然而在这个技术领域里却缺乏一些系统的总结归纳.或许这与PHP语言的诞生方式有关,衍生,快速变化,原始限制等等,诸多因素决定这门语言变得smarty,却没有人 ...

  5. 使用supervisor 进行进程管理时调整最大文件打开数

    [supervisord]logfile=/tmp/supervisord.log ; 日志文件,默认是 $CWD/supervisord.loglogfile_maxbytes=50MB ; 日志文 ...

  6. memcached 的实践操作

    memcached安装和使用   yum install -y libevent  memcached  libmemcached   启动命令:   /etc/init.d/memcached st ...

  7. 在一台电脑上运行两个或两个以上的tomcat

    前言 在开发过程中,我们可能会同时用到多个tomcat,但以正常安装的形式安装多个tomcat,无论启动哪一个tomcat,打开的都是配置了环境变量的那一个tomcat,所以进行一些设置,以达到我们同 ...

  8. Python自动化--语言基础3--字典、函数、全局/局部变量

    字典 dict1 = {'name':'han','age':18,'class':'first'} print(dict1.keys()) #打印所有的key值 print(dict1.values ...

  9. iOS 添加WKWebView导致控制器无法释放的问题

    在WkWebView与JavaScript交互中,经常会在原生中注入MessageHandler,app中注入MessageHandler的方法 WKWebViewConfiguration *con ...

  10. linux开放80 端口

    1.使用su登录管理员用户 2.编辑防火墙配置文件 vim /etc/sysconfig/iptables 3.在里面加入后保存 #open port 80 -A INPUT -p TCP -m st ...