虽然我们的整个 Flink ML 框架是针对日志聚类算法筹划的,但此中的很多环节都是可以复用的。具体的来说,在数据的读取阶段,无论是从 SLS 中读取流式数据,还是从数据库中去读取存量的数据,我们都可以使用 Flink 自己的一些算子进行复用。
在特征工程阶段,虽然我们现在还使用 PythonPDF,但后续这一部分全都可以替换成对应的 Flink ML 算子。具体的来说,在分词和向量化阶段我们可以使用 CountVectorizer 算子;使用 TF-IDF 算子进行特征选择;在特征标准化阶段,可以去调用 StandardScaler 算子。
接下来的环节,对于条理聚类,我们现在调用的 Flink ML 算子也是完全开源的,大家假如有类似的需求可以直接进行调用。同时 Flink ML 条理聚类算子还提供了非常多用户可以自界说的参数,比如用户可以修改向量之间距离的计算方式等等。
此外,除了条理聚类算子以外,Flink ML 还提供了其他的一些聚类算法,比如 K-MEANS 等等。在这些算子参数中,有一个参数非常关键,它也是使 Flink ML 算子区别于其他像 Spark ML 算子的重要参数,那就是 Windows 窗口参数。
也正是由于窗口参数的存在,使得我们在无限数据流上的及时聚类成为大概。所谓窗口参数,它就是把无限的数据流聚合成为比力有限的 Mini-batch 形式的数据。
Flink ML 也提供了多种窗口策略可供选择,我们可以根据体系时间进行窗口的计算,也可以根据记录的时间进行窗口的计算,也可以按照实际流入的记录数进行窗口的计算。但无论我们选择哪一种窗口策略,窗口与窗口之间都是不会重叠的,这样我们就能防止脏数据的生成。而窗口巨细的设置大家则可以根据自己对于及时性的需求进行灵活的调节。
接下来让我们简单的对本日的分享做一下回顾和总结。
我们的分享从运维场景中三大焦点问题,稳定性、成本、服从出发,并为大家先容了这三个场景中非常典范的三种算法模子,分别是时序异常检测、时序预测、日志聚类,而且我们通过实际的案例来给大家分享了,算法模子是如何在我们的实际业务场景中发挥效用的。
同时从这些实际的业务场景中,我们也可以更加直观的感受到,机器学习模子对于及时性和性能层面都有着非常高的要求。而 Flink ML 所具备的特性刚好可以大概完善办理我们的痛点,它具备及时性、流批一体、CDC 增量读取等 Flink 自己的特性。此外 Flink ML 自己还提供了非常易用的 API 和非常丰富的机器学习基础设施。
在本日的分享中,我们也以日志聚类算法为例,为大家讲解了我们整体的链路改造过程。而且从链路的延时、成本、性能层面给大家先容了我们的整体收益。
最后我也给大家预报一下,我们基于 Flink ML 算法服务的开源筹划。
SREWorks 是我们团队开源的云原生数字运维平台,现在在 github 上的 star 数已经凌驾了 1200 个。SREWorks 中有一个很重要的模块就是智能运维算法服务模块,我们会把我们的算法服务中具备足够通用性的算法抽取出来,在将来进行开源。此中也包括一些我们基于 Flink ML 搭建的算法服务,欢迎同行朋友们关注我们的 SREWorks,也非常期待有时机可以跟大家合作共建更好的大数据生态。