我开始学习一些关于大数据的知识,重点关注预测分析,为此我有一个我想实施的案例研究:
我有一组每5秒轮询一次的服务器健康信息数据集。我想展示获取的数据,但更重要的是:我想运行一个预先构建的机器学习模型并展示结果(关于服务器即将崩溃的警报)。
机器学习模型将由机器学习专家构建,因此这完全不在我的职责范围内。我的工作是将机器学习模型集成到一个平台中,该平台运行模型并在一个漂亮的仪表板上展示结果。
我的问题是这个系统的“大图景”架构:我看到所有组件都已经存在(Cloudera+Mahout),但我缺少一个满足我所有需求的简单集成解决方案,我不相信现状是做一些定制软件…
那么,有人能对我这样的生产系统(展示带有预测分析的数据)提供一些见解吗?这方面的参考架构?教程/文档?
备注:
-
我调查了一些相关技术:Cloudera/Hadoop、Pentaho、Mahout和Weka。我知道例如Pentaho能够存储大数据并在此数据上运行临时Weka分析。使用Cloudera和Impala,数据专家也可以运行临时查询并分析数据,但这不是我的目标。我希望我的系统能够运行ML模型,并在一个漂亮的仪表板上展示结果,同时显示获取的数据。我正在寻找一个已经允许这种用法的平台,而不是定制构建。
-
我专注于Pentaho,因为它似乎有很好的机器学习集成,但我读到的每个教程更多地是关于“临时”ML分析而不是实时分析。关于这个主题的任何教程都将受到欢迎。
-
我不在乎开源或商业解决方案(带有试用版)
-
根据具体情况,这可能不是大数据:也欢迎更“传统”的解决方案。
-
此处的实时是一个宽泛的术语:如果ML模型性能良好,每5秒运行一次就足够了。
-
ML模型是静态的(不是实时更新或改变其行为)
-
我不是在寻找为我的例子定制的应用程序,因为我的重点是大图景:带有预测分析的大数据通用平台。
回答:
(我是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模型的任何东西。如果你真的不需要构建自己的模型或动态更新它们,这是一个相当简单的问题。如果你需要这样做——更难的问题,但仍然可以为此架构。