1.大数据平台总体架构
大数据平台是为了计算,所产生的越来越大的数据量,以存储、运算、展现作为目的的平台。大数据技术是指从各种各样类型的数据中,快速获得有价值信息的能力。适用于大数据的技术,包括大规模并行处理(MPP)数据库,数据挖掘,分布式文件系统,分布式数据库,云计算平台,互联网,和可扩展的存储系统。
1.1.大数据平台应用架构
基于多年来环保监测平台的研发经验及智慧园区项目的建设,并借鉴行业大数据分析平台的实施、管理和应用方面的成功经验,结合公司实际信息化情况,我们大数据平台实际为三层架构,其中:
基础数据源层:目前应用的数据主要来源于在线监测系统,第三方系统接口,工控机/PLC/物联网盒子主动上报,FTP文件导入,网页爬取等方式接入系统。
大数据处理层:由于数据源类型的多样性,传统关系型数据仓库架构或者分布式存储架构各有优劣,单独使用都无法很好的满足对结构化和非结构化数据的存储和应用需求,因此采用传统数据仓库架构与大数据分布式数据仓库架构两者相结合的架构设计,两者紧密配合共同承担大数据处理任务,为大数据应用提供数据接口、数据交换、数据查询、数据分析和数据挖掘提供数据基础;
大数据应用层:随着信息化的发展,对大数据的应用方式也越来越多,大数据分析平台应用层需要满足:固定报表、OLAP分析、指标监控、即席查询(自助式分析)、决策支持、消息推送、预警预测(数据挖掘)等多种展现方式,但不局限于此。
1.2.大数据平台技术架构
平台系统构架通过数据采集(包括数据源)、数据存储与管理(数据仓库和Hadoop)和数据共享三部分技术来实现。
1.2.1.数据采集
1)结构化数据采集:现有的数据主要来自于在线监测系统和文件都属于结构化数据,采用ETL工具-kettle和Flume作为采集结构化数据的手段。ETL(Extract, Transform, Load)是建立大数据分析平台的重要组成部分,它将大数据分析平台中所需的数据按数据仓库建立的方法每天或定期从各个业务系统中采集详尽的业务数据,并根据各自的需求进行数据调整,数据迁移过程中需将原始数据进行抽取、清洗、合并和装载。在此过程中必须保证数据的完备性和数据的一致性。当业务数据量过大,未避免Mysql数据仓库压力过大,亦可将业务数据通过kettle迁移到hadoop平台的数据库Hbase中。能够序列们均数据.直接存放到HDFS中;不能够序列化的数据,通过数据整理后统一存放在分布式数据库环境中,再经过序列化化后再存放到HDFS中,整理后还不能序列化的数据也直接存放到HDFS。
2)非/半结构化数据采集:随着信息化建设的发展和监管力度加强,摄像头视频文件、传感器采集的设备数据、移动端收集的数据以及其他流数据等非结构化数据,我们将通过socket接口、视频接入设备、网络爬虫工具和流处理程序等方式分别进行采集并存储到MYSQL,HDFS和Hbase中。各种日志数据(通常序列化半结构化数据)直接存放到HDFS中;PLC/数采仪/物联网盒子和数据接口中的数据(通常序列化半结构化数据) 直接存放到MYSQL,HDFS 中;非结构化的数据直接存放到HDFS中。
3)数据源类型不同采用不同的采集方式:
Sqoop用于从关系型数据库中采集数据。
Flume用于日志数据采集。
Netty 进行socket 通讯基于T212协议数据采集。
网络资源采用爬虫工具进行采集。
其他格式文件(Excel,XML,JSON) 采用kettle进行数据解析采集。
实时计算由于对时效性要求比较高,它一般采用Kafka和业务系统建立实时数据通道,完成数据传输。
1.2.2.大数据存储和管理
Hadoop HDFS分布式文件系统中存放海量的结构化和半结构化数据,需要合理化组织数据的存储:
目前我们主要的数据类型是在线监测数据及设备状态数据属于结构化数据,后续也会对视频监控这类非结构化数据采集存储。
1.相关业务结构化数据和有一定格式关系的半结构化的数据。为方便其管理和满足未来发展的性能要求,选择以关系型数据库MySQL和hadoop的Hbase数据库共同承担对结构化的数据的存储和管理。以MySQL建立传统数据仓库来实现对用于结构化数据和元数据的集中存储与管理,并根据需求建立面向主题的数据集市,中央数据仓库将被划分为三个逻辑存储区间: ODS(Operational Data Store)、DW(Data Warehourse)、DM(Data Mart):ODS将存放各业务系统的原始数据,包括与原结构相同的业务数据以及经过初步整理后的业务数据;DW区域存放经过整理过的数据,是大数据分析平台真正的数据中心;DM区域存放各个应用系统(web应用、BI、OLAP、Data Mining等)所需的综合数据。与此同时在MySQL和Hbase数据库之间建立连接,利用Kettle定时进行数据交换,俩种数据仓库共同为大数据应用提供数据支撑,从而实现数据共享,分摊压力和数据备份的目的。
2.相关业务中半结构化的数据直接存放在HDFS 分布式文件系统中,一定格式关系的半结构化数据存放在 Hadoop Hbase 列簇数据库中和其他 NoSQL(MongoDB) 数据库中。由于Mysql不支持对非结构化数据的存储,利用大数据应用框架Hadoop平台的数据仓库作为传统数据仓库的补充,实现对非结构化数据的存储和管理,并对来自网络的大量数据查询提供支撑。
1.2.3.应用与分析
大数据分析平台为满足不同用户的需求,需要提供多种不同的应用与分析方式。支持利用java等开发语言编写程序实现对Hadoop平台和MySQL数据仓库中数据的应用;同时采用第三方的工具进行数据挖掘及分析。
目前涉及到的主要分析业务包含:1.设备的运行状态及故障分析 2.环境空气质量预警预报 3.水环境水质情况预警预报 4.突发环境类事件的推演及影响评估。有实时要求高的但是大部分对于实时要去不是很高。前期可以采用spark,spark streaming 进行计算分析,后续实时要求更高的可引入storm。Spark是一个分布式计算框架,是一个用来实现快速而通用的集群计算的平台。扩展了广泛使用的MapReduce计算模型,而且高效地支持更多的计算模式,包括交互式查询和流处理。在处理大规模数据集的时候,速度是非常重要的。Spark的一个重要特点就是能够在内存中计算,因而更快。即使在磁盘上进行的复杂计算,Spark依然比MapReduce更加高效。
大数据搜索使用Elasticsearch,Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
数据分析工具选Zeppelin。Apache Zeppelin是一个让交互式数据分析变得可行的基于网页的开源框架。Zeppelin提供了数据分析、数据可视化等功能。Zeppelin 是一个提供交互数据分析且基于Web的笔记本。方便你做出可数据驱动的、可交互且可协作的精美文档,并且支持多种语言,包括 Scala(使用 Apache Spark)、Python(Apache Spark)、SparkSQL、 Hive、 Markdown、Shell等等
大数据挖掘工具Mahout,Mahout也是Apache的一个开源项目,提供一些机器学习领域经典算法的实现,包括聚类、分类、推荐过滤、频繁子项挖掘。
Hadoop集群资源管理采用YARN。YARN, Apache YARN(Yet Another Resource Negotiator)是hadoop的集群资源管理系统。YARN在Hadoop2时被引入,最初是为了改善MapReduce的实现,但它具有足够的通用性,也支持其他的分布式计算模式。
4.大数据技术栈
下面自底向上介绍各个层的主要项目。