在两年多的技术平台建设中,我们处理数据源主要是来自于通信服务器的原始报文,互联网上的环境相关的数据源,污染源在线监控系统关系数据库的结构化数据,尤其是像垃圾焚烧等行业的实时数据直报后数据量增加的程度很大,就拿垃圾焚烧的炉温来说,全国近400家垃圾焚烧企业的900多个排放监控点的实时数据量,单日达到1千万的增量,对于后续可能展开的钢铁、水泥等行业采用垃圾焚烧行业现行的实时采集上报的方式,数据量将会呈几何级增长。结合环保监控业务需求,对大数据生态技术体系的理解,我们选择了如下的技术栈,通过不断的摸索达到逐步稳定技术体系。
-
在数据采集环节,通信服务器原始报文数据和在线监控业务库数据,我们采用kafka统一进行接入,再通过sparkstreaming进行消费后,写入到基于Hbase的OpenTSDB中,这样的好处是为我们的业务系统提供快速的检索明显数据的功能,比如检索某个企业某个排口某个污染物的一个时间段的浓度以及排放量的快速查询,响应速度基本控制在毫秒级,相比原来用数据库支撑该查询需要几分钟的情况,用户体验非常好,其基本原理主要是基于OpenTSDB基于Hbase对时序数据特殊的处理方式来保证这样的响应速度。同样,对业务系统历史数据的批量采集,我们使用的是基于Sqoop的技术手段,直接将存储于传统数据库的数据抽取到Hive数据仓库中,为基于离线的数据分析业务提供基础支撑。
-
在数据处理环节,我们主要使用Hive 和Spark SQL结合对数据仓库中的历史数据进行清洗和转换处理,对于实时数据则在SparkStreaming中直接进行处理。
-
在数据存储环节,我们主要选择的是基于HDFS的存储和基于Elasticsearch的存储。
-
在数据分析环节,我们使用Kylin作为OLAP引擎,通过空间换时间的原理对数据仓库进行维度建模和构建cube,将业务关注的维度转换成基于Hbase的key-value存储形式,为业务提供基于SQL的海量数据快速检索能力。同时,也使用基于Python和R作为数据分析的入口工具,利用两种语言提供的大量的分析库和现成的包,对数据进行深入分析,并形成数据分析报告。
-
在深度学习环节,我们主要基于一些特定的业务场景,如空气质量未来趋势的预测等,运用基于Tensorflow 循环神经网络方面的模型,基于掌握的历史数据,进行模型训练,并最终用于真实客户项目中。
-
在数据展现环节,我们使用多种可视化的技术,Grafana是和OpenTSDB配合使用的,通过界面配置可以快速观察指标数据,非常方便。Kibana是和ES 配套使用的也可以方便的观测数据。PowerBI是我们购买的微软的服务,可以方便的将数据仓库进行可视化展示,并发布成基于微软云的http url地址,进而可方便的嵌入到应用系统中为客户提供交互式的上钻、下钻以及面向切片的可视化服务,另外,它还提供了大量的可视化组件库,并有第三方开发者可以持续增加新的组件,足见微软是要构建一个大的生态体系。
通过在工作中不断的实践,开源的大数据技术组件,基本都是基于java开发的,基于Linux的环境部署,所以掌握大数据技术栈的前提基础是对JVM和Linux系统有深入的掌握和理解,在工作之余整理在这幅脑图中也列出了JVM和Linux系统,后续再持续跟新这两块的内容。