导读:本次分享的主题为 Hadoop or TDengine,如何做物联网大数据平台的选型?主要介绍物联网大数据处理中可能遇到的问题;结合实际的应用场景,分析 TDengine、InfluxDB、ClickHouse、Hadoop、MySQL 等系统在处理时序数据时的优缺点。
1. 大数据时代
大数据时代,大家都在说什么叫大数据,强调的就是一个“大”字,人们期望对海量数据的挖掘和运用能够获取到更多有价值的东西。其来源包括:微信聊天数据,淘宝&京东等电商数据,高速收费站的数据,摩拜等共享单车产生的数据,股票交易数据,天文望远镜产生的数据等等,这些数据有的是物联网的数据,有的是时序数据,有的不是时序数据,比如微信和淘宝、京东等产生的数据就不在本次讨论范围内。
物联网的数据可以分为两类,静态数据和动态数据:
物联网大数据主要体现在采集的机器数目越来越多,频次越来越高,如:电网以前可能只采集500KV的数据,慢慢可能采集10KV的数据,最后入户的220V的数据可能都要采集。随着这种2维方式的增长,采集的数据成几何量的增加,因此,传统的方法带来越来越多的挑战。
2. 物联网、工业4.0的技术链
对物联网、工业4.0的数据进行分析,会经过如下4个步骤:
物联网的数据平台主要集中在边缘计算和云数据引擎:
1. 传统的实时数据库
在物联网概念出现之前,设备数据的采集和分析也是非常重要的功能需求。为了解决流程控制领域的实时数据处理问题,从上世纪八十年代起,出现了一批实时数据库,以美国的OSISoft PI为代表,具有较高的数据处理能力,能够很好的解决传统工业生产问题。当时和实时数据库相结合的组态软件流行了很长一段时间,主要强调工控领域的实时数据采集、监视或者控制,其实现思路并不复杂,本质上是内存库,卖点在于实时响应和实时控制。这里实时控制是非常重要的,因为工控就是在强调控制,通过过来的参数,如温度高的、电流大的,能够把这些信息反馈回去,重点在于快速,能够在1s之内响应。也因为这个特点,这种实时库只能存储当前所有采集量的截面,相当于一个时间片,有些好的产品可以存储多个截面,但也比较有限,可能只能存储5分钟内的数据。
2. 传统的实时数据库面临的挑战
这样的数据处理方式是物联网吗?答案是肯定的,因为物联网的基本概念是物体和物体相联。但这只是物联网的初级阶段,解决数据采集从无到有,包括数据的实时上数和告警的问题,随着测点数暴涨,数据采集频次不断提高,传统实时数据库暴露出下列问题:
现在做物联网,在实时数据的基础上,还要进行扩充,做历史数据。通过历史的查询,归类的统计,或者机器学习的方法把历史数据增值,获得两类信息:
如果不需要历史数据,可以只做redis,因为只看当前数据,redis会比一些实时数据库的架构稳定性更好。
3. 通用的互联网大数据解决方案
目前的Hadoop方案,是一些大型的互联网企业最先使用的。在处理大数据时,将多个开源软件,如现在比较流行的kafka,然后把实时数据引入到redis,把历史数据存到Hadoop,中间可能结合Spark和Flink的计算,利用集群来处理海量数据。这是一种非常好的,通用的处理大数据的解决方案,可以处理百亿、千亿、甚至万亿级别的数据,只需保证它的服务器足够。如果有特殊需求,可以写一些代码来实现,比如做实时监控,就可以在kafka后面挂一个Flink做实时分析,做实时的流计算,把当前的QBS、健康状态做实时统计;在比如看历史数据,可以在Hadoop上挂一个MapReduce,这样我们可以通过写程序把所有的需求都实现。
那么对于物联网,为什么不用这一套解决方案来做呢?是不是不需要做物联网大数据平台的选型呢?答案显然是否定的。
4. 通用互联网方案面临的挑战
对于一些规模较小的公司,做软件开发所关注的点,Hadoop系统并没有很好的解决,因为它比较低效,也比较复杂,成本比较高。逐一分析下:
综上所述,该如何解决这些问题,如果你的公司做这样的项目能够投入的人比较少,不足10人,那么投入的硬件可能就是10个服务器,在这样的规模内,用Hadoop显然是不合适的,否则1~2年也不会做出好的产品。
另外,在国内人力成本越来越高的情况下,很多的公司都期望能够选择一个数据库。不光解决各种效率问题,更重要的是出了问题能够及时有人处理,比如用俄罗斯的ClickHouse或者美国的InfluxDB,如果出现问题,花钱也很难找到人维护,所以国家搞国产化,也有这样的因素在里面。
5. 物联网、工业4.0数据特征:时序空间数据
那么对于物联网大数据平台,什么样的选型方案才是专业的、正确的?我们首先要对网联网数据的模式进行分析,总结物联网数据的特征,并加以充分利用,这样我们选择的数据库才是一个真正能够利用软硬件资源,发挥最大效用的网联网数据库。大家在做自己的app时也要考虑你的数据是否满足这样的特征,是否适合用时序数据库来做。其典型特征有:
这就是物联网大数据平台在选型中需要注意的问题。
接下来通过分析一些系统的现状,来看看出现了哪些问题:
1. 某智能园区配电监控系统
这是某智能园区配电监控系统,采用的还是10年前的架构,实时数据库是这个架构的最核心部分,数据从采集设备过来之后,经过数据采集服务器(前置机)进入到实时数据库和历史数据库中(实时数据库以内存库为基础,随着技术的进步,也进行了扩展,开发了历史数据库,并且把数据分为三层,分别为热层、稳层和冷层。热层是指数据在内存中,稳层是指数据在硬盘中,冷层是指对硬盘中的文件进行了压缩或者二次归档。这种冷温热层的区分,已经和现在的时序数据库系统比较接近了,但是使用上并不是很方便。),采集的数据通过采集服务器进入到了内存库进行了实时计算,同时历史数据采用Oracle进行存储,并且这种方式也采用了行转列的方式,在时间维度上对数据进行拆分,按天分表,5分钟一条历史数据,每表288字段。
这个系统的卖点在于实时数据处理,包括告警、失电设备分析、故障快速恢复方案,可以通过大屏展示一些数据指标。
其问题在于:
这时可以采用InfluxDB或者TDengine时序数据库替换实时数据库和历史数据库,不过InfluxDB达到同样的效果,可能会需要比较高的硬件成本,这也是需要考虑的因素。
2. 某车联网数据仓库
第二个是某车联网数据仓库,采用的是Hadoop系统的解决方案:
存在的问题:
这时,我们就建议更换它的数据库,这里比较适合的有:TDengine、ClickHouse,ClickHouse适合做一些数据仓库,但是实时写入的能力相对差一些,TDengine在实时查询上会更好,压缩比可以做到更高,当时测试的时候,压缩比可以做到4%,比原来提升了10倍。
3. 某大型机械制造商的设备管理系统
第三个是大型机械制造商提供给客户的设备管理系统,每套设大概卖到50万或者100万,已经销售了几十万级别的设备。数据进来之后,首先进入kafka中,通过kafka将实时的压力分摊出去,实时数据会进入redis中,通过统计进入关系库中,然后给到App做最新状态的显示,历史输入会进入Cassendra中,Cassendra的特点是写入速度非常快,但是查询非常耗时。这样的系统其实是需要更新的,但是动力并不高,因为它还是能基本满足用户的需求,这时就需要挖掘出用户新的需求,提供增值服务。
从这个例子和上一个例子我们可以看到,如果只是偶尔的查询,一般的数据库都能满足要求。但是物联网不只是物体和物体的联接,还包括用户和物体的交互,不止能够看报表,还要能够走到C端的用户中,这时物联网平台才能有影响力,才能产生更多的增值服务。所以当我们的客户不再是公司、管理人员、运维人员,而是真正的用户,那这套系统将非常具有价值。在这种需求下,如何去选型是我们需要考虑,也就是谁的实时数据处理的好,谁的历史数据处理的好,能够满足这样的需求。
4. 某智能工厂的高频数据采集系统
这是某智能工厂的高频数据采集系统:
目前的诉求:
现在希望将采集频率提升到20ms,每秒数据量达到50hz*7000*16B=5.6MB,并且采集规模扩大到所有产品线,以期更好的提高生产效能。
这里可以采用TDengine和Prometheus,它们各有优缺点,大家可以在选型的时候考虑下。
5. 某电动车制造商的车辆实时检测系统
最后一个案例是某电动车制造商的车辆实时检测系统,目标比较火,是面向终端用户的。用户在购买电动车之后可以选择是否购买车辆实时检测系统,实际就是在车辆上安装这样的采集盒,定期的将车辆的轨迹、电池等参数上传到云端,成批次的写入MySQL数据库,之后车主就可以随时查询车辆的轨迹。这套系统,在最初是非常OK的,但是随着车辆的增加达到1000辆时,写入压力就非常大了,CPU占有率非常高,导致没有办法处理实时查询的请求,最终只能降低入库的频率,但这样大大降低了用户体验。
这时它需要:
明确了这样的业务需求之后,它做了技术选项,当时竞争的数据库也比较多,最终选择了TDengine,说明TDengine在这样的业务需求下,是非常出色的。
最后,总结下时序数据库选型时需要注意的问题,时序数据库的基本功能就是提供高效可靠的数据采集、数据插入、数据查询和计算等通用的功能,判断一款时序数据库是否好用,主要是看能否在你的业务需求上产生亮点,对业务产生增值:
总之,在物联网的选型上,如何找到自己痛点,在单位硬件的条件下,测试这几个痛点的主要性能,才能更好的做物联网大数据平台的选型。
作者介绍:
关胜亮
涛思数据 | 联合创始人
2017年加入涛思数据,负责 TDengine 的核心研发工作。毕业于中科院计算所,曾任职360、北京科东等公司,在数据采集与实时监控领域有丰富经验。
本文来自 DataFun 社区
原文链接:
领取专属 10元无门槛券
私享最新 技术干货