确保跨流和物联网应用程序的可靠性

发布于:2021-01-14 10:07:50

0

123

0

devops 跨流 物联网

如果流应用程序开始在实时处理数据方面落后,那么根本原因可能很难在复杂的应用程序和基础架构堆栈中手动找到。Unravel数据系统联合创始人/ CTO Shivnath Babu和杜克大学计算机科学兼职教授Shivnath Babu在本文中了解更多信息。

大多数个性化的实时流应用程序可能会在Kafka,Spark,Kudu,Flink或HBase上运行,以管理现代云交付服务对大量大数据的需求。要全天候提供这些信息,需要大量易于访问的数据,这些数据通常来自连接的传感器,提供诸如客户销售,行驶里程,GPS,湿度,温度和空气质量等数据。许多企业都在努力做到这一点正确,数据管道效率低下,破坏了应用驱动的服务即时满足消费者所依赖的基础。

这种错误的基础导致应用程序在处理方面滞后,从而破坏了整个业务功能,因为应用程序依赖于应用程序内部和外部提供服务。

如果流应用程序开始在实时处理数据方面落后,那么根本原因可能很难在复杂的应用程序和基础架构堆栈中手动找到。考虑到交付复杂的企业分析过程时需要依靠云,因此基于机器学习和AI的方法是一种保证流应用程序具有更好的性能,可预测性和可靠性的方法。此处的进步将统计学习应用于流应用程序可用的全栈监视数据,并在优化栈时提供了更多细节和粒度。

该监视数据包括来自应用程序(来自Kafka,Spark Streaming和Kudu等系统)以及来自内部部署和云基础架构的度量标准和日志。

根本原因可能是应用程序问题(例如,Spark Streaming中的数据分区不良)或系统问题(例如,Kafka的配置欠佳),或者是基础架构问题(例如,多租户资源争用)。当前的实践依赖于使用流行工具的手动流程,而较新的机器学习和基于AI的解决方案会自动识别应用程序瓶颈,运行缓慢和故障的根本原因,并调用自动修复。

另一个好处是,与如此普遍的组织猜测相比,实施此类流程可进行更有效的容量规划,从而降低成本并提高可靠性。

典型用例–网络安全

这对于企业和大型组织的福祉至关重要-并且是大数据最有效和最具影响力的用例之一,即欺诈检测和安全情报。然而,许多人认为它是最具挑战性的数据使用,说明了管理实时流数据的复杂性。

为了分析流交通数据,生成统计特征并训练机器学习模型以帮助检测大型网络(如僵尸网络中的恶意主机)上的威胁,大数据系统需要复杂且消耗资源的监视方法。分析师可能会将多种检测方法同时应用于相同的大量传入数据,以进行预处理,选择性采样和特征生成,从而增加了复杂性和性能挑战。应用程序通常跨多个系统(例如,与Spark进行交互进行计算,与YARN进行资源分配和调度,与HDFS或S3进行数据访问,与Kafka或Flink进行流传输),并且可能包含独立的,用户定义的程序,因此重复进行多种应用程序中常见的数据预处理和特征生成效率低下,这些会在执行过程中造成瓶颈,占用底层系统,导致资源利用不足,增加故障率(例如,由于内存不足错误),并可能降低及时发现威胁的机会。

学习新技术

更新的技术可为网络安全分析提供可靠的工作负载管理,并且更好地了解如何应对本地和云中的现代数据应用程序所面临的运营挑战,从而可以改变DevOps。

更好的分析工作负载管理包括:

  • 识别共享共同特征和要求的应用程序,并根据相关数据托管(例如,端口使用熵,IP区域或地理位置,安全性中的时间或流量持续时间的组合)将它们分组

  • 分离由不同用户提交的具有不同要求(例如,磁盘I / O繁重的预处理任务与计算繁重的特征选择)的应用程序(例如,SOC级别1与级别3的分析师)

  • 为应用程序分配适当的执行池/队列,从而增加共享机会和计算相似性

通过机器学习算法从日志和传感器中进行高效,连续的度量收集,可以对应用程序执行进行仔细检查,确定潜在故障的原因,并生成建议以提高性能和资源使用率。这确实依赖于以下算法:改善性能/资源利用;使用应用程序(或类似应用程序)成功/失败运行的历史示例为失败的应用程序提供自动修复;并尝试使用数量有限的替代配置,以使应用程序快速进入运行状态,然后使应用程序进入资源高效且运行良好的状态。

假设用户想应用机器学习算法来生成见解和建议。这些技术非常普遍,使用它们可以归结为了解业务目标是什么,DevOps目标是什么,然后将正确的算法映射到挑战中。

作为一个易于理解的问题,在卡夫卡世界中进行异常检测。跨代理或跨分区的负载不平衡是很常见的。通常,只有一个经纪人承担相对于其他经纪人十分之一的负载,而通常相反,一个经纪人成为热点。这可以在许多不同级别的分区上发生。这个问题可以使用最简单的离群值检测算法快速找到或检测到。但是,要考虑几个不同的算法维度。

有很好的算法可以分析一次序列。有些对于多维分析非常有用。Z分数使分布适合数据,并且任何与分布不匹配的点都是异常值。即使是像这样的简单算法,也可以大大帮助快速通知操作员某些事情需要立即注意。

有时,问题可能会涉及一个维度,但用户通常可能希望识别在输入数据以及CPU或磁盘利用率方面都异常的代理。有些算法可用于多维和早期检测。

DBScan算法使用基于密度的聚类,将点分组为聚类,以便可以识别出不满足聚类部分的事物。最近,由于离群值适用于任何类型的数据,因此引起了人们的兴趣。

人们通过引入更多有趣和复杂的模型(如决策树)来扩展这些算法。其次,通过深度学习,有一些自动编码器可以根据原始数据重新创建数据并识别出哪些点不匹配。

考虑用例并应用逻辑以简化DevOps的生活是关键。首先要考虑环境中的挑战,了解解决这些业务问题的简单方法,并应用智能解决方案通过机器学习/ AI从用户那里夺走轮替作品。大规模交付依赖于效率,只有在大数据,支持云的世界中,效率才能来自增强人类问题解决机的自动化。