对于大数据分析可以说是大数据平台的一个核心内容,如果我们把大数据的价值发挥分为两个阶段的话,数据分析是第一个阶段,对应传统的ODS库,重点是解决业务应用统计分析报表功能,需要具备可变性,准实时性,数据结构也基本和业务系统数据表一致;第二个阶段是数据挖掘和决策分析,模型导入阶段,在这个阶段将对应到传统的DW层面,往往需要对数据进行重新建模以支撑各种需要的维度分析和层次分析,在DW阶段往往不会再有太高的实时性要求,重点是数据挖掘和数据分析决策模型引入。
对于数据分析层,我们可以看到,其核心重点是针对海量数据形成一个分布式可弹性伸缩的,高查询性能的,支持标准sql语法的一个ODS库。我们看到对于Hive,impala,InfoBright更多的都是解决这个层面的问题,即解决数据采集问题,解决采集后数据行列混合存储和压缩的问题,然后形成一个支撑标准sql预防的数据分析库。所以对于大数据分析层是一个偏底层的东西,核心是解决数据ETL,数据存储,数据能力的开放。
对于数据采集我们看到各种大数据分析方案基本都是解决数据数据批量导入问题,而不是解决ETL问题,对于Hive方案下拓展了Sqoop来解决数据采集和集成的问题,对于InfoBright本身还要依赖于其它采集集成方案。但是一般不会做负责的数据转换,映射,清理和聚合等ETL支撑的操作。对于oracle的ODI-ELT工具,informatic的ETL工具可以看到,informatic工具更加容易来实现数据层的适配,和适配后在内存中进行的各种清理转换。
对于数据采集和入库,最高效的方式不是jdbc或odbc直接连接下的数据获取和写入,而是能够使用数据库本身的原生接口下的批量数据导出和批量数据装载。类似sql
server和sybase的BCP工具,oracle 的 import工具,mysql的load
data工具等。但是这种模式下仍然存在ETL中的transform操作无法去做的问题。对于导入导出这种模式,对于oracle的ODI的知识模块设计思路相当值得借鉴,即对于一个数据集成的过程根据导出,导入,转换等拆分为多个单独的步骤进行处理,每个单独的步骤都是可以复用的模块具备相应的适配功能。可以看到对于DataX工具基本也沿用了类似的数据库适配下的Reader和Writer的思路来进行大数据量集成和传输。
ODS中的数据我们讲一般是满足准实时性要求,而非完全的实时性。对于数据的采集同样应该基本两个核心功能,一个是数据采集的分段并行采集和处理,一个是数据采集的增量获取和导入。在这种模式下以满足相应的准实时数据获取和更新的业务需求。对于传统BI里面的ODS库本身是允许一定的后续数据处理和CRUD操作,即允许数据的可变性,而对于当前的Hive,InfoBright的社区版而言这方面功能相对来说偏弱,这就导致数据分析层真正能发挥作用还是得有一个前置的数据处理层,数据处理完成后再导入到InfoBright中。
这些问题都解决了基本有一个高扩展,可性能的分布式ODS库,支持常见的各种sql关联汇总语句。但是还无法算上一个完整意义上的大数据平台层。而更加重要的则是分析库,可复用的算法模型等各种模块的植入,以使大数据分析层具备更强的数据挖掘能力。对于DW和决策分析层,则是后话。
参考资料收集:
ODS和DW的区别:http://hi.baidu.com/bystander1983/item/f6e1ce480f74e40de935045b
InfoBright架构分析:http://www.cnblogs.com/inmanhust/archive/2010/05/07/Inmanhust.html
秒级大数据分析:http://wenku.baidu.com/view/fb660ce9f8c75fbfc77db287.html
MySQL的LoadData命令:http://wheat.diandian.com/post/2011-05-15/6997730
Sqoop使用基础:http://dacoolbaby.iteye.com/blog/1868305
青春就应该这样绽放 游戏测试:三国时期谁是你最好的兄弟!! 你不得不信的星座秘密