基于大数据生态的业务优化是目前各行各业的发展趋势,但是面临着最为基础的问题就是来自各业务系统原始数据的融合、交换、集成问题。在数据融合中,数据的ETL,即数据抽取、转换、装载是不可避免的前置操作,首先从原始数据中抽取数据,然后进行数据的转换和初步处理,最后装载到数据仓库中,用以进一步的融合、挖掘、分析等。
目前,数据抽取可以分为实时抽取和非实时抽取,针对大多数的分析场景来看,主要是基于非实时抽取的,此场景下主要包括全量抽取和增量抽取,面向该业务场景,拟建设数据抽取平台。
面对抽取的数据来源主要分为关系型数据库、文档型数据库、列式存储数据库、消息队列、文件、远程服务等。在目前的行业发展情景下,业务产生的数据往往在关系型数据库系统和文件中,为此我们的数据抽取平台需核心针对此类数据来源。
目前已经完成调研数据抽取工作的若干开源工具,为支持实现可视化的数据抽取工具二次开发,主要参考的开源工具有kettle、datax、flume、sqoop。针对不同的数据源,各个抽取工具都有不太一样的抽取功能。如针对关系型数据库的全量抽取时,可以采用sqoop将数据抽取到非结构化数据存储中hive、hbase等,可以采用datax将数据抽取到关系型数据库mysql、oracle或非结构化数据存储hive、hbase中,datax具备更全面更丰富的功能,但是sqoop基于分布式的spark或者hadoop环境可以在抽取速度上占有绝对优势。
针对文档型数据库、列式存储数据库、消息队列等,拟采用datax来进行数据抽取,目前datax支持mongodb、elasticsearch、hive等多种非关系型数据库,此外datax也支持插件的开发,因此在面对复杂的非关系型数据库具有十分良好的扩展性。
在针对文件数据的情景,主要是增量的数据文件,如log文件等,采用flume做文件的数据抽取,把数据从数据源收集过来,再将收集到的数据送到指定的目的地,此类抽取可以是不间断实时抽取的。
在调研中发现, kettle虽然有很好的使用界面,但是二次开发文档稀缺,系统庞大,开发难度较大。特别是面向大数据生态环境中有很大的局限性,不推荐使用kettle来进行再次开发,但是kettle的界面设计比较完备,可以作为我们交互设计的参考。
完成数据的抽取工作中,遵循无侵入抽取,完全不影响业务系统;遵循低耦合,将所有抽取的数据发送到kafka中间件,kafka具有天然的解耦能力,可以应对复杂多变的下游需求,如数据集成、流式计算等需求;遵循一致性,建议所有抽取的数据都采用统一的标准格式支撑,对下游具有较好的数据定义。
基于此思路,建设统一通用的数据抽取平台,是针对未来多领域数据融合、分析的必要服务支撑。