BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Elastic Stack发布新版本支持机器学习

| 作者 杨振涛 关注  他的粉丝 发布于 2017年5月9日. 估计阅读时间: 7 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Elastic今日在其官方博客,发布了最新版本的Elastic Stack 5.4.0 Beta,其中最重要的新特性是对机器学习的支持。

机器学习正在渗透到各行各业,搜索领域也不例外。Elastic今天发布的机器学习新特性,并非一蹴而就,而是源于去年的一桩收购案——2016年9月15日,Elastic宣布收购Perlert。Perlert是一家创立于2008年的用户行为分析技术提供商,在无监督机器学习技术方面积累了丰富的实践经验。Elastic在该文章中称经过7个月的努力,成功把Perlert的无监督机器学习技术集成到Elastic Stack,并作为X-Pack的一员,在最新的5.4.0 Beta版本中发布。

下文翻译自Elastic官方博客的文章Introducing Machine Learning for the Elastic Stack,原作者为Steve Dodson,翻译已获得授权。

博客全文:

我们很荣幸地在今天发布首个支持机器学习特性的Elastic Stack版本,该特性位于X-Pack中。加入Elastic就如登上宇宙飞船(译者注:指2016年9月Perlert公司加入Elastic),经过7个月的努力工作,我们激动地宣布Perlert机器学习技术现已全部集成到Elastic Stack,并真诚地期待用户的反馈意见。

注:也别太过激动,请留意该功能尚处于5.4.0版本的Beta阶段。

关于机器学习

我们的目标在于,让用户通过工具从自己Elasticsearch数据中获取价值和洞察力,同时我们认为机器学习对于Elasticsearch中的搜索和分析能力来说是一个很自然的延伸。比如你可以在Elasticsearch的海量数据中实时查询用户“steve”的交易记录,或者通过聚合和可视化功能来展示销量top10的产品,或者交易量随时间的变化趋势。而现在,借助机器学习你能更进一步来分析,比如“有哪项服务的行为改变了吗?”或者“我们的主机上有异常进程在运行吗?”这些问题,要求使用机器学习技术所需的数据,来自动构建出主机或服务的行为模型。

但机器学习目前在软件业是过热概念之一,因为根本上来讲,就是一系列用于数据驱动预测、决策支持以及建模的算法和方法。因此消除这些噪声,来介绍下我们所做的具体事情显得更为重要。

时间序列数据的异常检测

今天发布的X-Pack机器学习特性,旨在通过无监督机器学习提供“时间序列数据异常检测”的能力。

未来我们计划增加更多的机器学习功能,但目前专注于,针对在Elasticsearch中存储时间序列数据,比如日志文件、应用和性能指标数据、网络流量或者金融/交易数据等的用户,提供附加价值。

示例1——关键性能指标异常波动的自动告警

这项技术的最直接应用是,识别一个度量值或事件比率何时偏离了常规行为模式。比如,服务的响应时间是否显著增加?或者预期的网站访问用户数是否与往日同一时段明显不同?这类分析通常都会用到规则、阈值或简单统计模型。遗憾的是,这些简单方法对于实践中的数据来说都很低效,因为它们往往依赖不合理的统计假设(比如高斯分布),所以并不适用于趋势分析(长期或周期性的)或信号极易改变的情况。

因此,对于机器学习特性第一个可以切入的,就是单指标作业,由此可以了解该产品如何学习正常模式,以及如何识别单变量时间序列数据中的异常模式。如果所发现的异常是有意义的,就可以持续地实时运行该分析,并在异常发生时告警。

虽然这看起来只是一个比较简单的应用案例,但产品背后却有着大量的无监督机器学习算法和统计模型,因此对任意信号都有鲁棒性和精确性。

为了在Elasticsearch集群中能更本地化地运行,我们对实现也做了优化,因此百万级的事件可以在秒级完成分析。

示例2——数千指标的自动化追踪

机器学习产品能扩展到数十万指标和日志文件,所以下一步就是同时分析多个指标;可能会是一个主机相关的多个指标、一个数据库或应用的性能指标、或者多个主机的多个日志文件。这种情况下可以简单地分区分析,并把结果聚合到一个透视窗口中用于展示整个系统的异常。

假设有一个大型应用服务的响应耗时数据,就能简单地分析每个服务随时间的响应耗时变化,并识别单个服务的异常行为,同时也能提供整个系统的异常视图:

示例3——高级作业

最后,还有大量的更高级方式来使用该产品。比如,如果想查找与人群相比有异常行为的用户、异常的DNS流量或者伦敦道路上的交通拥堵,高级作业提供了一种灵活的方式,来分析Elasticsearch中的任何时间序列数据。

与Elastic Stack集成

机器学习是作为X-Pack的一个特性发布的,这意味着安装了X-Pack之后,就可以利用机器学习特性来实时分析Elasticsearch中的时间序列数据。Elasticsearch集群会自动化地分配和管理机器学习作业任务,基本上跟对待索引和分片一样;这也就意味着,机器学习作业可以从节点故障中快速恢复。从性能的角度,紧密集成意味着数据从来无需离开集群,我们能依赖Elasticsearch聚合功能显著地提升某些作业类型的性能。紧密集成的另一个好处是,可以从Kibana直接创建异常检测作业并查看结果。

因为数据能现场分析而无需离开集群,所以相对于集成Elasticsearch数据到外部数据科学工具,这种方式有着明显的性能和维护优势。随着我们在该领域开发的技术越来越多,这种架构的优势将会愈加明显。

了解最新版本Elastic Stack:https://www.elastic.co/cn/

查看英文原文Introducing Machine Learning for the Elastic Stack


感谢杜小芳对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT