大数据实时机器学习应用的生产架构?

我开始学习一些关于大数据的知识,重点关注预测分析,为此我有一个我想实施的案例研究:

我有一组每5秒轮询一次的服务器健康信息数据集。我想展示获取的数据,但更重要的是:我想运行一个预先构建的机器学习模型并展示结果(关于服务器即将崩溃的警报)。

机器学习模型将由机器学习专家构建,因此这完全不在我的职责范围内。我的工作是将机器学习模型集成到一个平台中,该平台运行模型并在一个漂亮的仪表板上展示结果。

我的问题是这个系统的“大图景”架构:我看到所有组件都已经存在(Cloudera+Mahout),但我缺少一个满足我所有需求的简单集成解决方案,我不相信现状是做一些定制软件…

那么,有人能对我这样的生产系统(展示带有预测分析的数据)提供一些见解吗?这方面的参考架构?教程/文档?


备注:

  1. 我调查了一些相关技术:Cloudera/Hadoop、Pentaho、Mahout和Weka。我知道例如Pentaho能够存储大数据并在此数据上运行临时Weka分析。使用Cloudera和Impala,数据专家也可以运行临时查询并分析数据,但这不是我的目标。我希望我的系统能够运行ML模型,并在一个漂亮的仪表板上展示结果,同时显示获取的数据。我正在寻找一个已经允许这种用法的平台,而不是定制构建。

  2. 我专注于Pentaho,因为它似乎有很好的机器学习集成,但我读到的每个教程更多地是关于“临时”ML分析而不是实时分析。关于这个主题的任何教程都将受到欢迎。

  3. 我不在乎开源或商业解决方案(带有试用版)

  4. 根据具体情况,这可能不是大数据:也欢迎更“传统”的解决方案。

  5. 此处的实时是一个宽泛的术语:如果ML模型性能良好,每5秒运行一次就足够了。

  6. ML模型是静态的(不是实时更新或改变其行为)

  7. 我不是在寻找为我的例子定制的应用程序,因为我的重点是大图景:带有预测分析的大数据通用平台。


回答:

(我是Mahout的作者之一,并且正在将Mahout中的一些ML产品化,专注于实时和规模:Myrrix。我不知道这是否正是你要找的,但似乎解决了你在这里提出的某些问题。它可能作为另一个参考点很有用。)

你已经指出了实时与大规模之间的紧张关系。这两者不是同一回事。Hadoop作为一个计算环境,扩展性很好,但无法实时处理。Mahout的一部分是基于Hadoop构建的,因此也是这种形式的ML。Weka,以及Mahout的其他部分,更多或更少地倾向于实时,但然后在扩展性上受到挑战。

一个既能很好地处理这两者的ML系统必然有两层:可扩展的离线模型构建,以及实时的在线服务和更新。就我个人而言,例如推荐系统应该看起来像这样:http://myrrix.com/design/

但是,你在模型构建方面没有任何问题,对吗?有人会构建一个静态模型吗?如果是这样的话,那就简单多了。实时更新你的模型是有用的,但也增加了复杂性。如果你不需要这样做,你只是从一个静态模型中生成预测,这通常是很快的。

如果你对ML感兴趣,或者基于你自己的ML模型运行某些东西,我认为Pentaho并不相关。

每5秒1次查询并不具有挑战性——这是每台机器每5秒1次查询还是其他什么?

我的建议是简单地创建一个能够针对模型回答查询的服务器。只要重用任何旧的HTTP服务器容器,如Tomcat。它可以从像HDFS或NoSQL数据库这样的后备存储中加载最新模型。你可以毫不费力地创建N个服务器实例,因为它们似乎不需要通信。

那里唯一的定制代码是你需要包装你的ML模型的任何东西。如果你真的不需要构建自己的模型或动态更新它们,这是一个相当简单的问题。如果你需要这样做——更难的问题,但仍然可以为此架构。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注