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

时间:2012-12-06 16:07:03

标签: machine-learning real-time weka mahout pentaho

我开始学习一些关于大数据的内容,主要关注预测分析,为此我想要实施一个案例研究:

我有一个服务器健康信息的数据集,每5秒轮询一次。我想显示检索到的数据,但更重要的是:我想运行以前构建的机器学习模型并显示结果(关于服务器崩溃的警报)。

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

我的问题是这个系统的“全局”架构:我看到所有的部分已经存在(cloudera + mahout)但是我缺少一个简单的集成解决方案来满足我的所有需求而且我不相信这个状态艺术正在做一些定制软件...

那么,任何人都可以对这样的生产系统有所了解(用预测分析显示数据)吗?这个参考架构?教程/文件?


注意:

  1. 我调查了一些相关技术:cloudera / hadoop,pentaho,mahout和weka。我知道Pentaho能够存储大数据并对该数据进行特殊的Weka分析。使用cloudera和Impala,数据专家也可以运行即席查询并分析数据,但这不是我的目标。我希望我的系统运行ML模型,并在检索到的数据旁边的漂亮仪表板中显示结果。而且我正在寻找一个已经允许这种用法而不是自定义构建的平台。

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

  3. 我不介意开源或商业解决方案(试用)

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

  5. 这里的实时也是一个广义的术语:如果ML模型具有良好的性能,每5秒运行一次就足够了。

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

  7. 我不是在为我的例子寻找一个自定义的应用程序,因为我的重点是全局:使用预测分析通用平台的大数据。

3 个答案:

答案 0 :(得分:8)

(我是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 DB等后备存储中发布的最新模型。您可以毫不费力地创建服务器的N个实例,因为它们似乎不需要通信。

唯一的自定义代码就是你需要包装你的ML模型。如果您真的不需要构建自己的模型或动态更新它们,这是一个非常简单的问题。如果你这样做 - 更难的问题,但仍有可能为建筑师。

答案 1 :(得分:0)

您可以使用Apache Samza或S4或Storm的组合来配置您自己的实时数据流分析,并注入您选择的并行和分布式版本的机器学习算法。但是大规模并行机器学习算法是一项具有挑战性的工作,也是一项积极研究的领域。最近取得了一些进展:你可能想看看雅虎!实验室SAMOAVowpal Wabbit

答案 2 :(得分:-3)

类似于NewRelic

统计

  • New Relic是应用程序性能管理(APM)即服务
  • 全球监控175,000多个应用程序流程
  • 10,000+客户
  • 每天收集20多亿个应用程序指标
  • 每周收集1.7亿以上的网页指标
  • 每个" timelice"度量约为250字节
  • 每秒插入100k次片段记录
  • 每天新增7亿行数据

建筑

  • 平台

    • 网络用户界面

      • Ruby on Rails
      • nginx的
      • 的Linux
      • 2个12核Intel Nehalem CPU,带48Gb RAM
    • 数据收集器和Web Beacon服务

      • 爪哇
      • Jetty上的Servlets
      • 应用指标收集器:每分钟180k +请求,以3ms响应
      • 网络指标信标服务:每分钟200k +请求,以0.15毫秒回复
      • 使用Percona build
      • 对MySQL进行分片
      • 的Linux
      • 9 @ 24核心Intel Nehalem w / 48GB RAM,SAS连接RAID 5
      • 裸金属(无虚拟化)

奖金

更多信息:http://highscalability.com/blog/2011/7/18/new-relic-architecture-collecting-20-billion-metrics-a-day.html