http://www.paper.edu.cn
- 1 -
中国科技论文在线
基于 Hadoop 的大规模数据交换的研究
佘影,吴斌
**
作者简介:佘影,男。
通信联系人:吴斌,男,副教授,基于分布式的数据挖掘. E-mail: bwu@tseg.org
(北京邮电大学计算机学院,北京 100876)
摘要:随着“大数据”的持续增长和信息货币化越来越重要,越来越多的企业加入到构建数5
据仓库和寻求数据分析解决方案的队伍中来。Hadoop 由于其出色的非结构话和半结构话数
据的分析能力,以及其廉价的大规模集群解决方案使其成为了大多数企业青睐的对象。然而
另一方面,关系数据库对于结构化数据的快速查询的能力却是 Hadoop 没有的。因此,企业
的数据总是存储于关系型数据库中,以满足快速查询的需要。尽管同时使用 Hadoop 和关系
数据库可以弥补彼此的不足。然而令人无奈的是,当使用一方作为数据源时,我们无法从另10
一方自由地进行查询。终于在 Hadoop 0.19 版本时,新增的 DBInputFormat 组件可以轻松地
在 Hadoop 与许多关系型数据库之间导入导出数据。与此同时,许多第三方的数据交换工具
如雨后春笋般出现在人们的视野中。本文将着重阐述几种数据交换工具间的差异和不足,进
而分析优化的方式,最后从性能上比较上述几种数据交换工具。
关键词:Hadoop;关系型数据库;数据交换 15
中图分类号:TP311
An Research on Hadoop-based Massive Data Migration
SHE Ying, WU Bin
(Beijing University of Posts and Telecommunications, School of Computer Science, 20
Beijing 100876)
Abstract: As “big data” growth and the importance of monetizing this information continue, more
companies are joining a growing ecosystem of data warehousing and analytics solutions. Hadoop
becomes the winner of all. There’s been a flurry of announcements recently in the Hadoop world.
But Hadoop’s strength is that it enables ad-hoc analysis of unstructured or semi-structured data. 25
Relational databases, by contrast, allow for fast queries of very structured data sources. A point of
frustration has been the inability to easily query both of these sources at the same time. The
DBInputFormat component provided in Hadoop 0.19 finally allows easy import and export of data
between Hadoop and many relational databases. Meanwhile, There are some other Data Exchange
tools. In this paper, we compare several Data Exchange Tools, and finally, we will propose a new 30
Data Exchange Tool for Hadoop to access RDBMS.
Keywords:
Hadoop; RDBMS; Data Exchange
0 引言
Hadoop MapReduce[1]是非常强大的工具;它在处理和分析非结构和办结构数据的灵活35
性使很多创新应用成为可能。但是 Hadoop 的强大分析功能是建立在数据可用的基础上。在
很多的企业中,大量有用的信息被锁在独立分散的数据库中。尽管 Hadoop 的分布式文件系
统——HDFS[2],可以将所有数据集中起来。然而这么做的工作量是非常巨大的。
在 Java 或是其他编程语言中使用 JDBC 和 ODBC 来连接数据库对于大多数程序员来说
是再熟悉不过的了。然而处理 Hadoop 和关系型数据库间的数据交换时,有两个至关重要的40
问题是不得不考虑的:规模和负载均衡。对于 Hadoop 集群拥有成百上千的节点数量那是再
正常不过了,每次操作都可能会涉及几十或者上百 TB 的数据。对于无共享的架构来说,每
个节点都是独立的,为了达到最大的吞吐量,计算任务和数据必须跨执行线程分割,否则将
有某个节点工作过多而造成总时间拖慢。因此,数据交换的模块必须要支持一种并行的策略。