openGemini开箱即用的时序分析解决方案

当今大数据时代,企业需要从各种设备和应用程序中采集、处理、分析和管理大量数据。时序数据库应运而生,为企业提供高效、可扩展的时序数据存储、处理和分析服务。其中一款优秀的时序数据库就是openGemini,它能够提供实时数据处理、高可用性和可扩展性。

前情提要

下图是openGemini的端到端解决方案,从数据采集、接入、存储、计算、展示全链路给出了解决方案,帮助客户更好地管理和分析其大量时序数据。

图片

当前openGemini在数据写入、存储、查询等方面已经达到了一定的行业领先水平,但如何用好数据,帮助客户更加高效的利用好数据的价值,这方面还需要持续的努力。

传统的大数据解决方案分为流计算和批处理两类,在数据入库前做部分的预计算或者时延敏感性计算,称为流计算;要么在数据入库后,通过sql查询等方式,把数据从库中查出来做计算,称为批处理。传统的时序数据库都是批计算模式,openGemini在此的基础上,根据部分时序业务,数据量大且时延敏感高的要求,也提供了流式计算的能力,满足了既保留原始数据,又可根据客户需求做部分维度降维的需求。这里暂不详述流计算。

传统的批处理,特别是数据分析场景,对数据库造成巨大的业务压力,同时将大量的数据拉回大数据平台,数据库的数据格式与大数据平台的数据格式相互转化,计算开销也很大。基于这样的问题,有数据库厂商直接在数据存储时,将数据文件存储为大数据平台可以直接读取的数据格式,以便提升数据库与大数据平台交互体验,但是这样也会带来时效性以及和大数据平台耦合的问题。大数据平台,也会做部分计算下推,将下层数据库支持的计算,在数据库内部完成,这样拉回大数据平台的数据也变得少了,以此来降低网络和计算成本。

呼之欲出

有没有更好的解决方案?

openGemini团队基于多年时序领域经验的积累,发现时序计算存在很多专业技巧,一是如何挖掘时序数据价值,二是如何高效进行时序计算。这里不得不讲讲时序数据库是怎么来的?时序数据库说到底,其实是一种专项数据库,时序数据太多了,一般数据库顶不住,所以才诞生的一种专项数据库,具有高压缩率、高吞吐、高性能、自动老化等能力。专项数据库,肯定是有专项的技巧存在。

客户可以很快的根据解决方案架构图搭建出一套系统,但是具体的业务数据怎么挖掘出价值,怎么快速高效的时序计算,这里是存在一定的门槛,并且通过团队的探索发现,优化好的时序计算框架和粗糙的时序计算,效率可差一到两个数量级。基于上述原因,openGemini团队开发且开源了一个openGemini-castor(https://github.com/openGemini/openGemini-castor)时序数据分析算法库,满足时序分析的大多数场景(开源异常检测算法),同时自带流批两种模式的时序计算框架,用户可以根据自身需求,自定义扩展相关能力。并且openGemini-castor可以通过一个名为ts-udf的组件,很好的融入openGemini现有的时序计算引擎中,可根据场景智能做计算下推以及提供高效时序传输能力,后续可开专刊做相关技术详解。

图片

前面讲了这么多,到底怎么玩?

这里再插播一下,ts-udf这个组件,是可选组件,为了满足用户复杂的计算述求,支持用户新增自己的算子、自己的计算引擎。目前官方对接的是openGemini-castor算法库,可以照葫芦画瓢。目前开源的是批计算能力,后续计划开放流计算能力。

ts-udf负责openGemini与用户自定义算法(User Defined Functions)进行交互,提供包括异常检测、预测等在内的数据分析能力;

在ts-udf目录下我们定义了openGemini与Python算法库交互的接口和相关配置,用户只需要实现ts-udf中的相关接口,通过python-agent就可以将其启动为Python进程(称为pyworker),执行用户自定义算法。

操练起来

根据需要,准备一个或者多个节点皆可,配置推荐4u8g以上,操作系统openEuler、Centos、Redhat等等皆可,下述以openEuler为例

环境准备

Go语言编译环境安装

sudo yum install go

其他操作系统亦可通过安装包下载的方式或者apt-get install go的方式进行安装即可

检查安装的Golang版本,建议go1.18及以上

go version

Python语言编译环境安装

Python语言安装包下载地址为:https://www.python.org/downloads/,可参考官方指导进行安装。

请安装Python3.9.1及以上版本

> tar -xf Python-3.10.5.tar.xz> cd Python-3.10.5> ./configure --enable-optimizations --with-openssl=/usr/local/openssl -withopenssl-rpath=auto && make altinstall> make -j && make install

注:由于不同的操作系统版本,基础依赖不一样,这里不赘述(编译python需要诸多系统依赖)

校验

/usr/local/bin/python3.10 --version/usr/local/bin/pip3.10 --version

配置

> ln -sf /usr/local/bin/python3.10 /usr/bin/python3> ln -sf /usr/local/bin/pip3.10 /usr/bin/pip3

编译

拉取openGemini源码

> git clone https://github.com/openGemini/openGemini.git

编译openGemini

> cd openGemini> python build.py --clean

安装udf agent(更加实际情况,可以独立节点部署)

> cd openGemini> cd python/agent> pip3 install -r requirements.txt> python3 setup.py install

拉取openGemini-castor源码及安装

> git clone https://github.com/openGemini/openGemini-castor.git> pip3 install -r requirements.txt> python3 setup.py install> cd /var> ln -sf /opt/openGemini-castor openGemini-castor

注:可以删除requirements.txt中的scipy

启动

启动openGemini(单机)

> mkdir -p /tmp/openGemini> vim config/openGemini.singlenode.conf# 修改castor的enable为true> sh scripts/install.sh

检查

build/ts-cli -host 127.0.0.1 -port 8086

启动ts-udf

> cd openGemini> cd python> mkdir -p /log/openGemini-castor> sh pyworker.sh start -config ts-udf/conf/python_handler.conf -ip 127.0.0.1 -port6666 -pidfile /tmp/pyworker.pid -log /tmp/openGemini/pyworker_extra.log

检查

> sh pyworker.sh status -pidfile /tmp/pyworker.pid

时序分析样例

openGemini-castor是一个时序数据分析Python库,算法说明书见https://github.com/openGemini/community/blob/main/openGemini-castor_user_manual.md. 本节将使用其中的BatchDIFFERENTIATEAD算法,举例如何使用openGemini castor算子进行异常检测

使用方式

SELECT castor(field, 'algorithm', 'config_name', 'type') FROM example_mst GROUPBY example_tag1, example_tag2, ...

其中:

field :需要分析的指标

algorithm :表示使用的分析算法名,例如DIFFERENTIATEAD, ThresholdAD, IncrementalAD等 

config_name :表示使用的算法配置文件名

type :数据分析的类型,例如检测,预测等

使用示例:

示例数据:

> SELECT * FROM examplename: exampletime tId value---- --- -----...1668685272000000000 1 01668685273000000000 1 11668685274000000000 1 11668685275000000000 1 341668685276000000000 1 111668685277000000000 1 1101668685278000000000 1 31668685279000000000 1 701668685280000000000 1 1111668685281000000000 1 1111668685282000000000 1 1...

使用castor函数与openGemini-castor库提供的BatchDIFFERENTIATEAD进行检测:

SELECT   castor(value, 'BatchDIFFERENTIATEAD', 'detect_base', 'detect') FROM  example GROUP BY tId-------------------------------------name: exampletags: tId=1time   castor----   ------1668685281000000000 1

上述数据分析sql的返回结果为使用BatchDIFFERENTIATEAD算法检测到example数据中的异常,结果中castor的取值为[0,1],值越大,表示异常越显著,异常级别越高,这里回显的时间戳则为检测时段中,存在潜在异常风险的时间点1668685281000000000

用户可以根据该算子,做异常检测业务,也可以结合ui做看板的异常显示,也可以借助计算框架,开发自己的分析算子,还可以接入自己的计算进程,让openGemini与之联动,灵活度自由把控

小结

本文简单描绘了当前openGemini的端到端框架,浅述了当前时序分析领域的背景和现状以及痛点。提出了一种新的路线,openGemini社区根据业务痛点,提供一套可扩展高性能的时序分析计算框架,以及高性能高准确率的时序分析算法。为普通用户提供开箱即用的分析能力,为高玩用户提供基础框架能力,后续还会持续贡献更多AI分析算法到社区,欢迎大家持续关注。


openGemini 官网:http://www.openGemini.org

openGemini 开源地址:https://github.com/openGemini

openGemini 公众号:

欢迎关注~ 诚邀你加入 openGemini 社区,共建、共治、共享未来!

开源框架 NanUI 作者转行卖钢材,项目暂停开发 苹果 App Store 免费榜第一是黄色软件 TypeScript 刚刚流行起来,为什么大牛们就开始抛弃了? TIOBE 10 月榜单:Java 跌幅最大,C# 逼近 Java Rust 1.73.0 发布 男子受 AI 女友怂恿刺杀英国女王,被判入狱九年 Qt 6.6 正式发布 路透社:RISC-V 技术成为中美科技战的新战场 RISC-V:不受任何单一公司或国家的控制 联想计划推出 Android PC
{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/3234792/blog/10107717