您好, 访客   登录/注册

一种基于Sqoop的数据交换系统

来源:用户上传      作者: 于金良 朱志祥 梁小江

  摘 要:Hadoop是一个可开源提供分布式服务的平台,由于其具有高可靠、高效、高容错性和很强的横向扩展性,因此在大数据领域应用非常广泛,是当今大数据行业的热门。为了将关系型数据库中的数据导入到Hadoop集群中,以达到利用Hadoop本身的优点对数据进行存储、分析、处理的目的,并且在数据传输过程中兼顾传输效率和数据质量。本系统使用一种开源的数据传输工具Sqoop将关系型数据库中的数据导入到Hadoop平台上的分布式文件系统(HDFS)、非关系型数据库(HBase)、关系型数据仓库(Hive)中存储,从而实现数据交换。经测试,该系统可以完成数据交换的功能,系统总的传输速度可以达到20 000条/秒。在网络畅通的条件下,没有数据丢失,保证了数据质量,可实现数据的高效、可靠传输。
  关键词:Sqoop;数据交换;Hadoop;大数据
  中图分类号:TP274.2 文献标识码:A 文章编号:2095-1302(2016)03-00-03
  0 引 言
  在过去的20年里,信息技术迅猛发展,在各个领域中,各式各样的数据都出现了大规模增长,其中在互联网、金融、银行等行业中生成的用户数据增长更是迅速。根据统计数据,2015年中国的互联网用户达到8.5亿人,仅这些用户的个人信息就是非常大的数据量。国际数据公司(IDC)报告称,2011年全球被创建和复制的数据总量为1.8 ZB(1 ZB≈221 B),在短短的五年间增长了近9倍,而且预计这一数字将每年至少翻一番。如此大量的数据已经很难使用传统的单机服务系统来存储、分析和处理,集群式的服务系统是解决此问题的一个重要途径。Hadoop是一个由Apache基金会所开源的分布式系统基础架构,其中两个最核心的设计就是HDFS和MapReduce。HDFS为海量数据提供了存储,而MapReduce则提供了海量数据的计算。若要使用Hadoop对数据进行存储、分析、处理,就要将数据先交换到Hadoop平台上。
  本文介绍一种基于Sqoop的数据交换系统,本系统可以将数据在关系型数据库和Hadoop平台之间进行数据交换。
  1 Sqoop简介
  Sqoop是一款开源的工具,开发的目的就是在Hadoop和关系数据库之间交换数据。它不仅可以将数据从一个关系型数据库系统(如MySQL、Oracle等)导入到Hadoop分布式文件系统(HDFS)、非关系型数据库(HBase)中,还可以将Hadoop中的数据导出到关系型数据库中。它是基于MapReduce进行数据处理的,所以Sqoop必须依赖Hadoop的集群环境。Sqoop项目始于2009年,现在是Apache基金会中的一个项目。目前分为两个版本:Sqoop1的版本号为1.4.x;Sqoop2的版本号为1.99.x。这两个版本完全不兼容,在架构和用法上也完全不同。
  在架构上,Sqoop2引入了Sqoop Server(具体服务器为Tomcat),对每一个数据库连接(Connector)进行集中管理。它的访问方式也变得更加多样化,可以通过REST API、Java API、Web UI以及CLI控制台等方式控制数据交换的进程。另外,Sqoop2在安全方面也做的更出色,在Sqoop1中以命令行控制台的方式在关系型数据库与Hadoop之间进行数据交换时,在命令中需要显性的指定关系型数据库的用户名和密码,无安全性可言。在新版本Sqoop2中,如果同样的采用命令行控制台的方式,它会有一个交互界面,输入的密码信息不会被看到。通过图示对两者架构进行对比,可以直观的看出两者在访问方式上的区别,Sqoop2明显更加多样化。其中图1代表Sqoop1的架构,图2代表Sqoop2的架构。
  2 系统设计
  本系统是基于Sqoop的数据交换系统,可以在关系型数据库与Hadoop之间进行数据交换。系统可以读取关系型数据库(以MySQL为例)中的数据,将数据导入到Hadoop集群中的HDFS、HBase、Hive中,以达到关系型数据库与Hadoop之间进行数据交换的目的。
  3 系统测试
  硬件环境为:Hadoop集群为3台相同的戴尔服务器。配置为:两颗4核Inter(R)Xeon(R)E5606 CPU,主频为2.13 GHz;内存为16 GB;硬盘为300 GB。
  软件环境为:Hadoop的版本为2.6.0;Sqoop采用1.4.5.2.2版本;HDFS采用2.6.0版本;HBase采用0.98.4版本;Hive采用0.14.0版本;MySQL的版本为5.6.0。
  本测试将数据分别导入HDFS、HBase、Hive中,并分开进行。
  3.1 导入到HDFS
  HDFS是Hadoop分布式文件系统,它拥有高容错性的特点,可以部署在廉价的机器上,并保持数据的高可靠性。它支持流式访问数据,提高了系统的吞吐量,适合那些有着超大数据集的应用。
  3.2 导入Hive
  Hive是一个构建于Hadoop上的数据仓库,注意不是数据库。Hive可以看作是用户编程接口,它本身不存储和计算数据;它依赖HDFS来存储数据、MapReduce来处理数据,将元数据存储在关系型数据库中。它提供了丰富的SQL查询方式――HQL来分析存储在HDFS中的数据。
  3.2.1 创建Hive表
  3.3 导入HBase
  HBase是运行在Hadoop上的非关系型(NoSQL)数据库,它是一个分布式的、可扩展的数据库。HBase依托于Hadoop的分布式文件系统(HDFS)作为最基本的数据存储单元,可以通过使用HDFS客户端查看这些数据,还可以通过Hadoop分布式计算框架MapReduce对HBase进行操作,如查询、插入数据等。HBase不同于一般的关系型数据库,它是一个适合于非结构化数据存储的数据库。所谓非结构化数据存储即HBase是基于列存储而不是基于行存储的。且其没有关系型数据库表中那么多的关联关系,采用稀疏的存储结构。即HBase中的表创建的可以看做是一张很大的表,这个表的属性可以根据需求去动态增加,在HBase中没有表与表之间的关联查询,只需要告诉用户其数据存储在哪个列族就可以了。
转载注明来源:https://www.xzbu.com/8/view-7859939.htm