Spark同时支持复杂的批处理、互操作和流计算,而且兼容支持HDFS和Amazon S3等分布式文件系统。Spark是否可以替换现有运营商的数据批处理工作?
运营商的数据仓库一直以来采用的小型机+关系型数据库的方式的建设,随着大数据技术在互联网的使用,运营商也在考虑逐步用大数据平台替换现有的数据仓库建设方式。但始终在探索,要真正的落地实施还有一段很长的路要走。
某省运营商的数据仓库离线数据处理数据架构分为五层,分别是接口层,负责接口的装载,设计原则是与原系统结构保持相同;存储层,负责全量数据的存储,这层只做少量的转换工作,其主要的动作是增量转全量;汇总层,负责数据颗粒度的降低,在纵向上,按照业务的要求,把海量数据的单表的数据颗粒度降低。在横向上,进行关联,把单表的字节数减少;中心区,负责计算口径和业务口径的固化,大量的口径和复杂算法是在本层实现的;最后一层是应用层,负责应用表的展示,核心思想是对应用展现的缓冲。目前集成商在对数据仓库通过大数据技术进行优化时,考虑接口层和存储层放在Hadoop平台上实现,通过ETL工具将文件数据加载到HDFS上,HIVE完成存储层数据的处理。汇总层和中心区因涉及到大量的关联迭代操作,将这两层放到MPP中。应用层用关系型数据库进行处理。但这样存在一个问题,因为跨库的数据传输导致的数据处理效率的低下。既然Spark能够支持复杂的批处理,而且兼容支持HDFS,是否可以将其中的汇总层和中心区用spark进行处理,减少跨库的数据传输导致的效率问题。同时建立增量处理模型,实时呈现当日的关键数据指标。
另一问题是否还有必要建立五层的数据架构模式?个人觉得五层的数据架构不能很好体现大数据技术的优势。需要好好考虑,如果改变数据架构,整个数据仓库等于进行了重构,运营商是否有魄力进行改变。