【本期看点】
- Hadoop和Spark框架的性能优化系统。
- 云计算重复数据删除技术降低冗余度。
- 压缩框架Ares如何统一不同算法。
- 在线数据压缩“摇摆门趋势”。
- 揭秘新型移动云存储SDM。
【技术DNA】
物联网
什么是物联网?物联网是通过信息传感设备,按照某种协议,把任何物品与互联网连接起来,进行信息交换和通信,在这个网络中,物与物之间能够彼此进行“交流”,现实世界的物与数字世界相连,而无需人的干预,实现智能化。它的渗tou性强、带动作用大、综合效益好,能够实现“物物相连的互联网”,像智能家居、智能医疗、智能城市…
而由设备收集的数据的传输和存储是物联网(IoT)的重要组成部分。如今,数据生成的增长速度远远快于存储能力。云计算可以以最小的管理工作快速启动和供应,并为物联网带来巨大的优势。但当传输无关或冗余数据时会消耗更多能,使用通信信道,处理对应用程序贡献很小的数据,无疑是一种浪费。
压缩传输和存储的数据是必要的,所以提出了在物联网应用中使用摆动门趋势(SDT)。
摆动门趋势(SDT)
摆动门趋势(SDT)是一种在线有损数据压缩算法,通常用于监看控制和数据采集系统,目的在于存储来自过程信息系统的历史数据。压缩偏差(CD)是它最重要的参数,它代表当前样本和当前用于表示之前收集的数据的线性趋势之间的最大差异。
传统SDT算法是在一定误差范围内,用起点和终点确定的直线代替两点之间其他的数据点,SDT 算法的压缩率关键取决于容差(门)的大小。而在起点上下距离为CD的地方有上边界UP和下边界LP,构成了旋转的两扇门。这两扇门在压缩过程中一旦打开之后就不能关闭,直到该压缩区间压缩结束。如果两扇门的内角和大于或者等于180度,压缩停止,否则压缩继续。该压缩区间结束之后,以压缩区间的终点为下一压缩区间的起点继续压缩。
SDT结构简单,计算复杂度较低,并且使用线性趋势来表示一个数据量。通过带有固定枢轴的“摆动门”连续构造图形来过滤数据。但因为容差CD参数应该是预先运行时定义的“门”,所以有时候并不准确,后文将提出改进方法。
八个步骤
- 接收到第一点。
- 建立上下枢轴点。
- 接收下一点。
- 计算相对于上下枢轴的当前坡度。
- 比较当前坡度与之前的极端坡度。
- 当某个点在平行四边形外时,计算最后一个点与当前点之间的斜率。交叉的边界被调整为与其他边界平行。计算出交叉边界与斜率之间的一个拦截点,并确定一个新的第一点。
- 传送点c作为输出信号的压缩数据流中的输出点。
性能标准
压缩误差(CE)和压缩率(CR)是评估压缩算法性能的重要指标。
CE测量压缩后观察到的相对误差量,它的计算方法是将未压缩数据(Ti)与解压缩过程(T0i)后的压缩数据结果之间的差异的总和,除以未压缩数据的绝对值的总和。
CR旨在评估压缩过程的效率,并表示使用压缩算法实现的样本的减少。它被计算为压缩样本除以未压缩样本的补充。
提出称为压缩标准(CC),良好的压缩体现于CC值接近于1,对应于高CR和低CE值。
论文中提出4个不同数学方程版本:
算术平均值(MEAN):
指数移动平均线:
没有零的平均数:
范围:
运用这四种方程式更方便找到最优解。
相关工作
这一部分介绍一些物联网环境的数据压缩算法以及SDT的更多内容。
物联网中的数据压缩
对物联网输入数据流的近似算法
这个算法的主要的思想是利用数据中的一部分值去近似表示所有的数据。算法的特点是计算复杂度低,压缩率高,但是错误率高。
下面结合原论文中的一组图来直观地感受算法的过程:
输入一组具有相同时间间隔的离散时序数据,并按照时间将其从1开始编号。
将上述编好号的数据分为“最大值”和“最小值”两个部分,其中最大值的定义为比前一个数据大的值,最小值的定义为比前一个数据小的值,如果一个数据位于序列的开始或结尾或者与前一个数据的值相等,则可以同时标记为两个状态。
分别在“最大值”和“最小值”中找到它们对应的极值。
按顺序连接“最大值”和“最小值”对应的极值点。
增量压缩编码方案
所谓增量,指的是一组数据中相邻值之间的差,通过记录一组差值和初始值即可表示整个数据。下面介绍基于增量压缩的编码方案,论文中的分析场景是一组温度数据的压缩。
数据特点:
传感器通过ADC将现实世界中的温度转换为一个个离散的数据,而且这个数据是有限的,假设ADC可以将温度映射到包含1024个值的集合,那么对应的某一时刻的温度也即该时刻的状态一定对应状态空间S中的一个状态。假设传感器记录温度的频率为f_sfs,则数据之间的时间间隔为T=1/f_sT=1/fs,我们用u(nT)\in S, n=0, 1, ..., \inftyu(nT)∈S,n=0,1,...,∞表示一组ADC的输出,那么增量可以表示为\Delta(kT)=u[kT]-u[(k-1)T]Δ(kT)=u[kT]−u[(k−1)T],或者简写为\Delta(k)=u(k)-u(k-1)Δ(k)=u(k)−u(k−1),对一组增量进行统计分析:
可以看出\DeltaΔ出现的频率服从正态分布,而且-1、0、和1这三个值的频率加起来接近0.9。参考Huffman编码的思想,如果可以设计一套编码方案,可以用较短的编码代替出现频率高的\DeltaΔ,那么可以达到比较好的压缩效果。
增量压缩:
考虑到传感器、ADC能够检测出的温度的变化是有限的,即当数据变化量小于一个阈值\thetaθ时,可以认为它们是相等的。作者设计了六个基本的符号,其中三个可以直接表示\DeltaΔ的值为0,\theta,-\theta0,θ,−θ,剩余的三个符号需要结合起来表示\DeltaΔ的绝对值大于\thetaθ的情况:
表一 六个基本符号。
表二 \Delta的绝对值大于\theta的情况。
如果增量的绝对值超过一个阈值,那么采用FLAG+UPF/DOWNF+FLAG的方式表示增量的大小,其中UPF或者DOWNF的个数为abs(\Delta/\theta)-1abs(Δ/θ)−1。当增量很大时,数据不进行编码,否则编码后的比特数比原比特数还要大,但是这种情况出现的概率极低。
云存储中物联网传感器数据的压缩和存储优化
在论文中作者提出一种用于 IoT 数据的两层压缩框架,该框架可减少数据量,同时保持最小错误率并且避免带宽浪费。在该方案中,首先在雾节点以 50% 的压缩率进行了初始压缩,在云存储中再将数据压缩到了 90%。论文还表明解压后误差与原始数据相差 0% 到 1.5%。
具体步骤为:
1、雾节点的压缩。
a. 从传感器节点接受一组数据。
b. 判断传感器节点是否注册,如果是则进行下一步骤,否则抛弃数据。
c. 对数据进行升序排序,并且计算两个连续值的平均值,通过此步骤将数据压缩为原来的50%。
d. 将压缩后的数据写入文件发送到云端。
2、云压缩。
a. 接受来自雾节点的数据文件。
b. 判断雾节点是否注册,如果是则进行下一个步骤,否则抛弃数据。
c. 从文件中读取数据,然后统计每一个值出现的频率,重新写入文件,记录为两列,此时压缩率达到90%。
例:数据由1到10的100个值组成,最终得到十个数和它们对应的频率。
SDT
自适应SDT
自适应SDT(Adaptive Swinging Door Trending)基本过程与SDT相同,只是采用了自适应的压缩偏差CD。通过使用指数移动平均(EMA)为过滤器分析数据。指数移动平均与线性移动平均不同的是可以在使数据趋于平滑的同时突出局部的变化,因此采用了加权平均,离当前时刻越近的值权重越大。
式中的N是需要人为设定的参数,所以ASDT的一个缺点在于需要提前设置EMA的参数。
改进的SDT
改进的SDT(ISDT)的目标是1) 检测并消除异常值,2) 采用自适应的压缩偏差获得更好的压缩效果。
ISDT相比于之前提到的SDT多了强制存储记录限制(Forced Storage-Recording Limit, FSRL)和调整因子(adjustment factor, F_{adj}\in(0, 1)Fadj∈(0,1)),这两个值是自适应调整压缩偏差的关键。
ISDT检测异常值
SDT算法结束当前压缩区间、开启新的压缩区间的条件是最大上角(a_{umax})和最大下角(a_{lmax})最大上角(aumax)和最大下角(almax)之和大于等于180。在ISDT中,当一个数据值x_kxk满足开启新的压缩区间时,并不会立即关闭当前区间,而是检查下一个数据值x_{k+1}xk+1是否可以包含在当前的压缩区间内。如果可以,则表明x_kxk是一个异常值,因此不记录这个值,而是从x_{k+1}xk+1开始继续当前压缩区间。
ISDT自适应压缩偏差
我们先理解FSRL,即强制存储记录限制,意思是当一个压缩区间记录k个值且k=FSRL时,即使下一个值可以包含在当前的区间内,但是强制关闭当前区间并以当前点为下一个区间的初始值。
如果一个区间在区间长度达到FSRL后被强制截断,说明当前的压缩偏差偏大或者数据处于稳定阶段,那么可以用CD:=CD\times f_{adj}CD:=CD×fadj替换原来的压缩区间;反之,如果在区间长度达到FSRL前关闭,说明当前压缩偏差设置地偏小或者数据波动较大,这时可以用CD:=CD/f_{adj}CD:=CD/fadj替换原来的压缩区间。
分布式SDT
支持智能电网的电力物联网具有以下特点:
- 具有大量传感器。
- 具有多种传感器。
- 具有非常高的数据采集频率。
- 具有高度异构的网络。
正式因为由于上述特点,如果将传感器收集的所有原始时间序列数据通过网络传输到传感数据中心,然后压缩和保留,带宽和计算网络和传感数据中心的资源需求分别是不可接受的。传感器对原始传感数据进行压缩,然后将初始压缩的数据传输到传感数据中心,在传感数据中心进一步压缩和保留数据。这样,网络和传感数据中心的带宽和计算资源需求都会显着降低。
DSDT是传统SDT的分布式版本,与上文提到的 IoT 数据的两层压缩框架类似,在传感器节点压缩数据可以减少传输的压力。而且,由于SDT算法本身的优点,每次更新压缩区间只需要确定一个初始点和压缩偏差即可,所以可以实现压缩中心转移的操作,即压缩中心在传感数据中心和传感器之间可以动态的变化,具体如何转移取决于计算资源和带宽资源的分配。下图为SDT和DSDT区别的直观解释: