随着数字化进程的不断提升,智慧城市建设需求越来越迫切,中移物联OneNET城市物联网平台的落地项目也越来越多。同时,接入城市物联网平台的设备增多,平台上的数据量也越来越大。面对这么多复杂海量的数据,我们如何有效利用它们,达到不浪费资源,对这些数据进行统一管理成为我们应该考虑的问题,于是大数据技术应运而生。
大数据技术就是对数据进行收集,经过分析后来做一些有意义的事情,其中包括数据采集、数据存储、数据处理、数据共享等。
数据采集
数据采集是什么?
大数据采集技术就是指对数据进行提取、转换、加载,通过这些操作将不同数据源的数据整合成一个新的数据集,为后面的数据分析提供依据。城市物联网平台的数据主要包括离线数据和实时数据两个部分,现在需要对这两个部分的数据进行采集。
离线数据采集
离线数据主要来源于MongoDB、MySQL、Postgresql,采用的方法是将数据库中的数据导出为Bson、CSV、Txt文件,再统一对导出的文件进行管理。
实时数据采集
实时数据主要来源于Kafka,采用Flume进行采集。Flume由Source(数据源)、Sink(数据接收方)、Channel(缓冲区)几部分组成。Flume是一个分布式、可靠、高可用的海量日志采集系统,具有可横向扩展、延展性、可靠性等优势,此外Flume 针对特殊场景也具备良好的自定义扩展能力,因此Flume可以适用于大部分的日常数据采集场景。平台通过对Flume进行简单配置实现Kafka的数据采集。
数据存储
数据存储是什么?
大数据存储是非常关键一步,将采集的数据进行存储,再进行后续的加工分析。平台数据量大,单机容量无法存储大量数据,需要多个机器储存,HDFS具有高容错性、适合批处理、流式访问、大数据处理等优点,因此采用分布式文件系统HDFS对数据进行存储。
数仓规范
数仓模型中有原始数据层(ODS)、维表层(DIM)、数据汇总层(DW)、数据应用层(ADS)。层次加工顺序:按照ODS清洗->DW、DIM加工->ADS数据应用层的层次顺序依序加工数据,禁止数据逆向流动。
当数据仓库表创建、修改时需要说明用途和字段含义。表名统一采用蛇形命名法(snake_case_naming_style),并由以下三部分组成:
{所在分层}_{业务模型名称}_{表后缀名}
其中,业务模型名称不超过20个字符,当字符数量超过可采用缩写,表后缀由数据加工频率和数据加工类型各一个英文字母共同构成。
数仓分层结构
数据处理
DolphinScheduler是什么?
DolphinScheduler是一个分布式易扩展的可视化DAG工作流任务调度开源系统。
DolphinScheduler的优势
DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度平台,采用DAG监控界面,所有流程定义都是可视化,一键部署;去中心化的多Master和多Worker, 自身支持HA功能, 采用任务队列来避免过载,不会造成机器卡死;支持暂停恢复操作,支持多租户,更好的应对大数据的使用场景.,支持更多的任务类型;支持自定义任务类型,调度器使用分布式调度,调度能力随集群线性增长,Master和Worker支持动态上下线。
选用DolphinScheduler原因
DolphinScheduler可以解决数据研发ETL 错综复杂的依赖关系,不能直观监控任务健康状态等问题。DolphinScheduler以DAG流式的方式将Task组装起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及Kill任务等操作。因此平台采用DolphinScheduler对大数据进行分析加工。
数据开发流程
1.基于ETL工具采集物联网基础信息数据至ODS层,主要包含平台用户信息、产品信息、设备档案信息、告警配置等信息。
2.基于Flume+Kafka,实时采集设备上报属性与事件数据,存储到ODS层。
3.基于质量校验规则,定期对业务基础数据进行质量校验(如设备经纬度信息、归属组织、编码规范进行校验);实时对设备上报数据进行校验(如设备上报数据取值范围、数值正则匹配)。
4.将ODS层的数据进行清洗转换,对MongoDB JSON格式的数据字段进行提取,关联聚合产品设备信息形成宽表,将数据存入DW层。
5.根据业务逻辑编写Python、Shell、SQL脚本,通过DolphinScheduler定时调度工作流,对DW层的数据进行业务处理,形成每日用户新增、设备日活、设备上报数据量、上下行消息数等指标,将结果写入ADS层。
6.通过数据服务,基于API接口,结合用户权限,将ADS层数据共享开放给领导驾驶舱、数据市场等,实现数据治理价值。