Sqoop Apache提供的Sqoop工具可以实现Hadoop和关系型数据库之间的数据交换。Sqoop既能从关系型数据库(例如Mysql、Oracle)导出数据到Hadoop的HDFS中,也可以从HDFS导出数据到关系型数据库中[6]。图1。1描述了Sqoop的工作流,Sqoop将单个表从RDBMS导入到HDFS中时,表中的每一行被视为一条HDFS的记录,所有记录以文本数据的形式被存储在文本文件中或以二进制数据的形式被存储在序列文件中。Sqoop将文件从HDFS导出到RDBMS时,作为输入的HDFS文件包含着在数据库表中被称为行的记录。这些文件被读取和解析为一组记录,与指定的分隔符分隔。Sqoop作为实现Hadoop和RDBMS数据交换的一种工具,比使用DB接口进行数据交换有着更高的效率[7]。Sqoop充分地利用了MapReduce的并行计算特性,根据用户设置的参数,Sqoop可以把大任务切分成多个小任务,每个Map任务一行一行地读取数据,然后写入到HDFS或HBase中。通过实验测试,Sqoop在8g内存的机器下,从Mysql数据库导出数据到HDFS的速率可以达到6m/s。73280
Sqoop工作流
如上图所示,Sqoop目前支持的RDBMS有:Mysql、Oracle、Postgresql、DB2;支持的Hadoop文件系统有HDFS、Hive、HBase。
1。3。2 Plumber
Plumber是京东大数据平台部门开发的一个海量数据交换工具。京东每天要处理上TB的数据进出Hadoop平台,进行上千的数据传输任务。然而这些数据既有来自mysql、sqlserver、oracle和hive的结构化数据,也有来自mongodb、HBase和log的非结构化数据。同时京东在全国各地有很多仓库,每天需要把仓库的数据进行入库处理,所以数据交换的场景变得十分复杂。因此京东开发了Plumber数据交换工具,对数据传输的流程进行了优化。传统的数据传输流程要经过三次传输,三次落地,一次清洗,如图1。2所示,这拉长了整个数据处理的时间。当数据量越来越大时,传统数据交换流程已经无法满足需求。而通过Plumber流程优化,可以实现不落地的抽取。Plumber在内存中一次传输,无落地,实时清洗,大大提高了数据传输的效率。采用Plumber后的流程如图1。3所示。论文网
传统数据传输流程 Plumber数据传输流程
Plumber由于要处理的数据源种类较多,所以采用了读写分离的插件化方式,各种数据源的读取和写入以插件化的方式嵌入到了Plumber内。目前Plumber支持的插件如下:
Reader : mysql、sqlserver、oracle、mongodb、hive、log。
Writer : hive、mysql、oracle、HBase。
Plumber通过JDBC读写关系型数据库文件,通过API读写Nosql,通过http断点续传的读取Log日志。
Plumber还支持多线程并行执行,能够并行执行分库分表任务,库表库名sql拆分任务,并且能够根据系统资源增加线程数,实现了资源有效利用,大大提高了数据传输的速度。
参考文献[1] 覃雄派, 王会举, 杜小勇,等。 大数据分析--RDBMS与MapReduce的竞争与共生[J]。 软件学报, 2012, 23(1):32-45。
[2] 戴君。 基于Hadoop的作业调度算法的研究和改进[D]。 武汉理工大学, 2013。
[3] 王琨。 基于HDFS的云技术信息资源整合研究[J]。 硅谷, 2013(18):51-51。
[4] 范辰生。 基于Hadoop的海量数据分析系统的设计与实现[D]。 西安电子科技大学, 2012。
[5] 孙知信, 黄涵霞。 基于云计算的数据存储技术研究[J]。 南京邮电大学学报:自然科学版, 2014, 34(4):13-19。
[6] Vohra, Deepak。 Using Apache Sqoop。 Pro Docker。 Apress, 2016。
[7] 于金良, 朱志祥, 梁小江。 一种基于Sqoop的数据交换系统[J]。 物联网技术, 2016(3)。
[8] 曲伟峰, 赵晓燕, 于智。 文本信息抽取技术研究[J]。 辽宁师专学报:自然科学版, 2014, 16(2):1-3。