基于Hadoop平台的海量数据高效抽取方法及应用

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于Hadoop 平台的海量数据高效抽取方法及应用

徐金玲1,金 璐1,李昆明2,熊 政2,仲春林2,方 超2

(1.江苏省南京供电公司,江苏南京,210008;2.江苏方天电力技术有限公司,江苏南京,211102)

摘要:本文从数据抽取过程的本质出发,论述了传统数据抽取过程与大数据平台数据抽取过程的异同,以基于Hadoop 的大数据平台为例,结合传统的关系型数据库和非关系型数据库(NoSQL)的特点,提出了一种从关系型数据库到大数据平台的高效数据抽取方法,实现了对数据源系统资源占用的最小化,并在电力公司用电大数据抽取中得到广泛应用。关键词:海量数据;数据抽取;NoSQL;大数据平台

Method and application of efficient extraction of mass data based

on Hadoop platform

Xu Jinling 1,Jin Lu 1,Li Kunming 2,Xiong Zheng 2,Zhong Chunlin 2,Fang Chao 2 (1.Jiangsu Nanjing power supply company,Jiangsu Nanjing,210008;2.Jiangsu Fangtian Power Technology Co. Ltd.,Jiangsu Nanjing,211102)

Abstract :This article from the essence of data extraction process,discusses the similarities and differences between traditional data extraction process and the data platform,data extraction process, the data platform based on Hadoop as an example,combining the traditional relational database and non relational database(NoSQL)characteristics,proposes a from relational database to efficient data extraction method of data platform,thereby minimizing the occupancy of the data source of the system resources, and the power companies in large data extraction has been widely applied in. Keywords :data;data extraction;NoSQL;data platform

0 引言

对于大数据的抽取,一般通过使用Sqoop 来实现。但是Sqoop 组件自身的局限性导致其对于特定的场景并不适用(例如,进行TB 级大数据量数据抽取时效率较低,进行增量数据抽取需改变源数据库表结构,对源数据库性能也有较大影响)。因此,本文提出了基于大数据平台的一种海量数据抽取的高效方法,该方法可以快速、高效、可靠地将海量数据从关系型数据库抽取到大数据平台中。同时,由于通过对数据源日志文件的分析实现对增量数据的抽取,因此该方法在抽取数据时对源数据库的影响非常小。

1 系统开发环境

系统开发环境采用CentOS 6.5操作系统,以Cloudera CDH 5.0为大数据平台框架,并结合Tomcat 作为Web Server。集群由20台服务器组成,划分为2个机架,每台服务器配置32核CPU、64GB 内存和10块磁盘。Cloudera 是全球领先的Hadoop 服务提供商,其CDH 5.0是最新的Hadoop 发行版,提供了高度的稳

定性和使用便捷性。数据源采用Oracle 数据库,抽取工具采用Golden Gate。

2 系统结构和处理流程

2.1 技术架构

系统以Oracle 为数据源,以CDH 5.0为大数据平台框架,结合Tomcat 作为Web Server 提供Web 层的访问服务。在大数据平台中,以MapReduce 作为大数据的计算引擎,以HDFS 分布式文件系统存储非结构化和半结构化的数据,以HBase

分布式数据库存

图1. 系统技术架构

储结构化数据。在Oracle 端,采用Golden Gate 提取源数据。

(1)利用Golden Gate 提取变化数据。Golden Gate 可实现秒级的数据捕捉、转换和投递,提供了一种基于日志的结构化数据复制方式,可以从在线日志中准实时地抓取变化的数据,并将变化的数据保存在Trail 格式的文件中。其优势在于通过对日志文件的分析实现变化数据的抓取只会占用很小的系统资源,特别是当Oracle 中存储的数据量极大、Oracle 系统负载很重时基本不会影响Oracle 的运行效率。

(2)在大数据平台实现数据的清洗、转换和存储。对于Golden Gate 提取出的数据,首先将其以半结构化的数据形式存储在HDFS 中,然后根据规则对数据进行清洗和转换、过滤异常数据,并转换成更适合HBase 存储的格式。为了加快数据装载到HBase 的速度,采用了批量导入(Bulkload)数据的方式,即利用MapReduce 并行计算引擎直接生成HBase 能够识别的HFile 文件,大大缩短了数据入库的时间。

(3)使用Tomcat 作为Web Server 提供Web 层的访问服务。由于Oracle 和CDH 大数据平台处于两个不同的集群中,因此以Web 服务作为中间通道可以方便地连接这两个集群,例如在集群间传递指令、查询并展现集群中的数据等。

2.2 抽取流程

对于存储在关系型数据库中的数据,被抽取出来后最终将被存储在NoSQL(以HBase 为例)数据库中。我们的思路是,将关系型数据库中的数据首先抽取出来并以中间格式(如Text File)导入到大数据平台后,再将其导入到NoSQL 数据库中。当将数据从Oracle 以中间格式文件的形式导出后,按照一定的策略将其导入到HBase 中。

数据抽取流程可细分为三个部分,分别为利用Golden Gate 提取数据、用MapReduce 并行计算引擎加快处理速度、将数据装载进

HBase。

图2. 数据抽取流程图

2.2.1 使用Golden Gate 提取数据

利用Golden Gate 解析Oracle 的日志文件,提取出初

始数据及发生变化的增量数据。Golden Gate 并没有提供对Hadoop 集群的直接支持,但是提供了将Trail 文件解析为平面文件(Flat File)的功能。而平面文件是可以被Hadoop 识别的。Oracle 中数据的变化情况一般可以分为三类:插入数据、更新数据和删除数据。因此,对于这三类情况,我们在解析Oracle 的变化数据时,将这三类数据分别解析到各自的文件中,例如用后缀I 代表插入的数据(Insert),用后缀D 代表删除的数据(Delete),用U 代表更新的数据(Update)。

2.2.2 利用MapReduce 引擎加快处理

由于导出的原始数据往往非常大,如果继续使用传统的串行方法进行数据装载,那么装载过程将会很漫长。因此,我们使用Hadoop 大数据平台的MapReduce 并行计算框架,来加速装载抽取出的数据。MapReduce 计算框架将输入的数据分为多个块(block)存储在多个计算节点上,每个节点只计算本节点上的数据。在每个节点的计算完成之后,将结果输出到MapReduce 框架中。MapReduce 框架自动汇聚(Aggregate)这些数据并进行排序,最后将最终的结果输出到HDFS 中。在这一过程中,多个节点的计算过程是同时进行的,因此整个计算与串行计算相比,速度会大大提高,且计算的时间将与计算节点的数量成反比。

2.2.3 使用Bulkload 装载数据

NoSQL 数据库可以存储相当大的数据,但是如果采用单客户端来加载数据,则吞吐量会受到单机的带宽及磁盘等硬件的限制。此外,NoSQL 数据库往往采取复杂的机制来保证数据的健壮性及一致性,数据的写入会经历一个复杂而耗时的过程。例如,HBase 在写入数据时,会首先将数据写入预写日志文件(WAL, Write-Ahead Log),然后将数据写入到缓存区域(MemStore)中,等到缓存区域满了之后才将其中的数据一次性地写入到磁盘里。因此,为了加快数据导入的速度,我们一方面采用多节点并行写入,另一方面直接生成HBase 数据的存储格式文件,即采取批量导入(Bulkload)的方法来装载数据。

1. 串行数据装载与并行批量导入数据比较

3 系统开发与实现

基于上述的架构思想与流程,开发并实现了一套大数据平台数据抽取系统,用于对江苏全省用户用电数据的抽取。该系统以

相关文档
最新文档