当前位置 > CPDA数据分析师 > “数”业专攻 > 进入大数据--数据导入方案选择

进入大数据--数据导入方案选择

来源:数据分析师 CPDA | 时间:2015-08-19 | 作者:admin

由于大数据技术在海量数据处理方面有着得天独厚的优势,中国金融企业竞相引入大数据技术来提升服务质量、创造业务价值,以使企业在互联网+时代和新常态经济环境下处于优势竞争地位。

利用大数据首先要得到数据,数据来源可简单分为两类,一类是传统企业已经运行多年的交易系统,客户资源管理系统等等(以下仅以交易系统代称),另一类是利用大数据技术抓取以前没有能力或者忽略的数据,例如客户点击,日志流数据等等

其中交易系统中的数据大部分存在关系型数据库中,如何将这部同步到大数据平台中是架构设计的第一步。目前主流的大数据平台为Hadoop,以下以Hadoop生态圈中Hbase为例,简单阐述将交易系统数据同步到大数据平台的不同方案及其利弊。

从整体架构设计上,可简单分为两类:源端处理和目标端处理。

第一种方案是利用ETL工具,在源端(或ETL过程中)将数据进行处理。由于在关系型数据库中,存在大量的主外键等关联关系。对于业务逻辑复杂的交易系统,可能存在一对多,多表关联等不同关系的类型。所以需要针对不同的表间关系,设置基本,内嵌,分割或内联的转换关系。在这种情况下,可以在源端(或ETL)过程中,将转换关系进行预处理,导出基本满足key-value对形态的数据文件。

以上方式的好处是,一般对企业交易系统相对的熟悉的工程师,对SQL语句或者ETL工具也相对熟悉,可以快速有效的组织数据,而新组建的大数据团队可能对Hadoop的MR编程相对熟悉,但对业务逻辑不够熟悉,这样不同团队可以各司其职,协调一致提高效率。同时,此方案的业务逻辑也相对清晰,借助已经完全发展成熟的SQL语言,可以以较简单的语句实现复杂的关联关系,形成的数据文件也相对规范,且容易纠错。

另一种方案是利用Mapreduce(MR)程序,先将关系型数据中的表,同构的导入到HDFS中,然后利用MR程序进行组合。数据量较大时,大表间的关联可能会对源端数据库产生较大压力,影响交易系统的正常使用,采用此方案可以减少源端数据库的眼里,同时充分利用HDFS分布式的处理能力,加快运算速度。但如果源系统为大量的小表,由于Hadoop不适宜处理大量小文件,所以这种情况下的MR程序的效率会有所损失。

从技术选型上可选择传统的ETL工具或者分布式的导入导出工具。

成熟的ETL工具例如Datastage,Oracle ODI,SQLserverSSIS,开源的Kettle等等,基本都可简单实现将数据库文件导出到平面文件,并且大部分已经支持对Hadoop提供直接的支持。利用这些工具,可以很容易的将关系型数据中的数据转移到HDFS的集群所在目录中,然后利用Hbase的Client API, Bulkload等不同方式将数据导入到集群中。

另一方面可以选择分布式的数据导入导出工具,例如Apache Sqoop,淘宝Datax,Attunity Replicate,Diyotta DataMover相比于ETL工具,这些工具不支持复杂数据类型转换,计算等,但对Hadoop支持的更完善,并可十分简单的实现MR编程,充分利用Hadoop并行计算的优势。这里主流的工具为Sqoop,其处理流程如下图(摘自Sqoop官方文档)。

1

Sqoop使用元数据模型来判断数据类型并在数据从数据源转移到Hadoop时确保类型安全的数据处理,能够分割数据集并创建Hadoop任务来处理每个区块。

以上从架构设计和技术选型的角度简单分析了数据从关系型数据库同步到大数据平台的几种不同方案,抛砖引玉,供正准备迈入大数据时代的相关人员参考。


(作者:陈学亮)