Waterdrop 是一个非常易用,高性能、支持实时流式和离线批处理的海量数据处理产品,架构于Apache Spark 和 Apache Flink之上。
1、 物联网数据背景
物联网业务发展迅速,从18年开始起步近两年发展,我们接入设备量已经达到数千万级别。设备每日产生的上行下行消息量近百亿级别,服务模块之间的模调日志量更是巨大,对我们日志采集统计、实时数据分析提出更高要求。 本文主要介绍waterdrop在物联网数据采集中的使用,详细说明参见 waterdrop 文档 。
2、数据收集架构
对于物联网数据,我们采用filebeat对各个业务服务进行日志收集到kafka,离线分析通过EMR平台存入hdfs中,实时统计通过flink来计算,还有一部分通过waterdrop消费kafka里的数据并进行数据提取,存储到clickhouse中,完成数据链路的处理。物联网数据采集架构如下。
3、Waterdrop 的特性
- 简单易用,灵活配置,无需开发
- 实时流式处理
- 高性能
- 海量数据处理能力
- 模块化和插件化,易于扩展
- 支持利用SQL做数据处理和聚合
- Spark Structured Streaming
- 支持Spark 2.x
4、环境依赖
- java运行环境,java >= 8
- 如果您要在集群环境中运行Waterdrop,那么需要以下Spark集群环境的任意一种:
- Spark on Yarn
- Spark Standalone
- Spark on Mesos
5、Waterdrop配置
5.1 source插件配置
source插件支持常见组件有Es、Fake、Hive、JDBC、KafkaStream,配置说明,我们使用消费kafka配置如下:
5.2 transform插件配置
filebeat采集的业务数据进行抽取,提取出业务统计有效值并进行数据格式转换。
5.3 sink模块配置
将抽取出的数据存入到clickhouse中,参数详细说明
6、ClickHouse数据
数据提取后结果展示,可以实现业务数据数亿级别秒级查询,方便业务信息的实时统计