Hadoop的数据采集框架

摘要:
Hadoop提供了高度容错的分布式存储系统,主要通过JDBC与关系数据库交互。理论上,支持JDBC的数据库可以使用Sqoop和HDFS进行数据交互。这些数据源的大量日志数据被有效地收集、聚合和移动。在重构的Flume NG版本中,代理(数据传输过程)中的源和宿通过通道链接。

问题导读:
Hadoop数据采集框架都有哪些?
Hadoop数据采集框架异同及适用场景?

Hadoop提供了一个高度容错的分布式存储系统,帮助我们实现集中式的数据分析和数据共享。在日常应用中我们比如要将各种数据采集到HDFS存储服务中去,说到将数据采集到HDFS,我们熟知的框架包括:

  • Apache Sqoop
  • Apache Flume
  • Gobblin DataX
  • Kettle

以及其他很多针对特定数据源的采集工具:比如针对Cassandra数据源的Aegisthus,针对mongodb的mongo-hadoop等等。

本文就对以上常见的数据采集服务进行简单的介绍,帮助我们了解各个项目的特点以及适用场景。

Apache Sqoop

Sqoop : SQL-to-Had oop,用于在关系型数据库(RDBMS)和HDFS之间互相传输数据。

Sqoop 启用了一个MapReduce任务来执行数据采集任务,传输大量结构化或半结构化数据的过程是完全自动化的。其主要通过JDBC和关系数据库进行交互,理论上支持JDBC的Database都可以使用Sqoop和HDFS进行数据交互。

Sqoop目前分为两个版本Sqoop1和Sqoop2。这是两个完全不同的版本,完全不兼容。Sqoop1了解的朋友都知道它就是一个命令行脚本,而Sqoop2相比Sqoop1引入了sqoop server,集中化的管理Connector,引入基于角色的安全机制,而且支持多种访问方式:cli客户端,Web ui和Rest API。

Sqoop不支持文件解析入库,适用于关系型数据库与HDFS/Hive/HBase之间互相传输数据。它支持多种关系型数据库如mysql、oracle、postgresql。可以高效可控的进行数据导入导出。

Github Star 462, Fork 362

Apache Flume

Apache Flume是一个分布式、可靠、高可用的日志收集系统,支持各种各样的数据来源,如http,log文件,监听端口数据等等,将这些数据源的海量日志数据进行高效收集、聚合、移动,最后存储到指定存储系统中(可扩展),如kafka、HDFS分布式文件系统、Solr,HBase等。

Flume基于流式数据,适用于日志和事件类型的数据收集,重构后的Flume-NG版本中一个agent(数据传输流程)中的source(源)和sink(目标)之间通过channel进行链接,同一个源可以配置多个channel。多个agent还可以进行链接组合共同完成数据收集任务,使用起来非常灵活。

Github Star 1418, Fork 1092

Gobblin

Gobblin是用来整合各种数据源的通用型ETL框架,在某种意义上,各种数据都可以在这里“一站式”的解决ETL整个过程,专为大数据采集而生。

作为一个通用框架,Gobblin的接口封装和概念抽象做的很好,作为一个ETL框架使用者,我们只需要实现我们自己的Source,Extractor,Conventer类,再加上一些数据源和目的地址之类的配置文件提交给Gobblin就行了。Gobblin相对于其他解决方案具有普遍性、高度可扩展性、可操作性。

Github Star 1381, Fork 540

DataX

DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。

被阿里开源之后的DataX社区并不活跃,但是好在程序的架构设计的好,大部分用户都会选择fork之后基于其进行二次开发。DataX本身由阿里开发对于阿里自身的数据库比如ODPS、ADS等支持更好。

Github Star 1128, Fork 478

Kettle

Kettle是一款开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。

Kettle 中文名称叫水壶,寓意就是希望把各种数据放到一个壶里,然后以一种指定的格式流出。

Kettle是CS架构,拥有自己的管理控制台,同样也可以通过Java代码与我们的工程进行集成,在程序中完成kettle的转换、执行等操作。

Github Star 1956, Fork 1476

本文简单介绍了上面几种数据采集框架,当我们使用的时候需要考虑到业务场景,关系库相关采集的可以首选sqoop。日志文件等实时采集录入则选择Flume,文件和数据库都要兼顾则选择Gobblin。后续会对这三类进行详细介绍。至于DataX可以看看其架构,设计思想非常不错。

欢迎关注我:叁金大数据(不稳定持续更新~~~)
qrcode.jpg

免责声明:文章转载自《Hadoop的数据采集框架》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇会话、服务器ASP.NET中Session的用法by小雨Stanford机器学习笔记-4. 神经网络Neural Networks (part one)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Qt数据库操作

  QtSql模块由驱动层、SQL接口层、用户接口层三部分组成,提供了与平台以及数据库种类无关的访问SQL数据库的接口。这个接口由利用Qt的模型/视图结构将数据库与用户界面集成的一套类来支持,数据库即模型的数据源。对于习惯使用SQL语法的用户,QSqlQuery类提供了直接执行任意SQL语句并处理返回结果的方法;而对于习惯使用较高层数据库接口避免使用SQL...

Django学习系列之django restframework

曾几何时,Ajax已经统治了Web开发中的客户端,而REST成为web世界中最流行的架构风格(architecture style)。所以我们的选择变得很简单:前端ajax访问后端的RESTful API对资源进行操作Django中有一些可选的REST framework,比如django-piston,django-tasypie。 但是我和google...

TCP 的那些事儿(下)

本文转载自TCP 的那些事儿(下) 导语 这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之前,你需要做好准...

SQL注入实例猜密码

sql注入实例分析 什么是SQL注入攻击?引用百度百科的解释: sql注入_百度百科: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个...

在C#中利用Nuget包使用SQLite数据库和Linq to SQLite

本来是学习在VB中使用SQLite数据库和Linq to SQLite,结果先学习到了在C#中使用SQLite数据库和Linq to SQLite的方法,写出来与大家共同学习。(不知道算不算不务正业) 1、建立或打开一个C#项目,如果是新建的项目则需要先保存一下,不然无法安装Nuget包。 2、安装Nuget的Linq to SQLite包,打开Nuget...

一沙框架(yishaadmin) 前端引入VUE的实现方法

一沙框架(yishaadmin) 前端引入VUE的实现方法 1、下载vue.js,加入项目中,如下图 2、页面代码如下,注意注释的内容,数据请求的实现方法 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device...