前言
最近在公司接到一个任务,是关于数据采集方面的。
需求主要有3个:
- 通过web端上传文件到HDFS;
- 通过日志采集的方式导入到HDFS;
- 将数据库DB的表数据导入到HDFS。
正好最近都有在这方面做知识储备。正所谓养兵千日,用兵一时啊。学习到的东西只有应用到真实的环境中才有意义不是么。
环境
这里只做模拟环境,而不是真实的线上环境,所以也很简单,如果要使用的话还需要优化优化。
- OS Debian 8.7
- Hadoop 2.6.5
- SpringBoot 1.5.1.RELEASE
说明一下,这个系统OS最好使用Linux的,然后Hadoop也推荐使用CDH发行版的,因为在兼容性、安全性、稳定性都要好于开源的版本。比如说CDH的易于升级维护,已解决好Hadoop生态其他产品的版本兼容问题,补丁更新比开源要及时(毕竟商业公司支持)等等
还有之所以使用SpringBoot是因为快捷,方便,不用做一大堆的配置,不管是作为演示还是生产开发都挺好的。
项目搭建
这里只是做一个很简单的演示,就是在Web页面提供一个上传按钮,使用户可以将本地文件上传至Hadoop集群平台。
pom.xml
首先看下pom文件的依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.infosys.hadoop</groupId>
<artifactId>upload</artifactId>
<version>1.0-SNAPSHOT</version>
<name>upload</name>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<hadoop.version>2.6.5</hadoop.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency</