大数据实时机器学习应用程序的生产体系结构



我开始学习一些关于大数据的东西,重点是预测分析,为此我想实现一个案例研究:

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

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

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

那么,有人能对这样的生产系统(用预测分析显示数据)有所了解吗?参考体系结构?教程/文档?


备注:

  1. 我研究了一些相关的技术:cloudera/hadop、pentho、mahout和weka。例如,我知道Pentaho能够存储大数据,并对这些数据进行特别的Weka分析。使用cloudera和Impala,数据专家也可以运行临时查询和分析数据,但这不是我的目标。我希望我的系统运行ML模型,并将结果与检索到的数据一起显示在一个漂亮的仪表板中。我正在寻找一个已经允许这种使用而不是自定义构建的平台。

  2. 我关注的是Pentaho,因为它似乎很好地集成了机器学习,但我读到的每一篇教程都更多地是关于"特别"ML分析,而不是实时分析。欢迎任何关于这个主题的教程。

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

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

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

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

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

您强调了实时和大规模之间的紧张关系。这不是一回事。Hadoop作为一个计算环境,可以很好地扩展,但不能实时执行任何操作。Mahout的一部分已经建立,Hadoop和这种形式的ML也已经建立。Weka和Mahout的其他部分或多或少都是实时的,但随后面临着扩展的挑战。

两者都做得好的ML系统必然有两层:可扩展的离线模型构建,以及实时的在线服务和更新。IMHO,对于推荐人来说,它应该是这样的:http://myrrix.com/design/

但是,你对模型构建没有任何问题,对吧?有人要建立一个静态模型吗?如果是这样的话,那就容易多了。实时更新您的模型是有用的,但会使其复杂化。如果你不必这样做,你只是从静态模型中生成预测,这通常很快。

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

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

我的建议是简单地创建一个可以根据模型回答查询的服务器。只需重用任何旧的HTTP服务器容器,如Tomcat。它可以在从HDFS或NoSQL数据库等后台存储发布最新模型时加载该模型。您可以毫不费力地创建服务器的N个实例,因为它们似乎不需要通信。

唯一的自定义代码是包装ML模型所需的任何代码。如果您真的不需要构建自己的模型或动态更新它们,那么这是一个非常简单的问题。如果你这样做了——这个问题比较难,但仍然有可能设计。

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

类似NewRelic的东西?

统计数据

  • 新Relic是应用程序性能管理(APM)即服务
  • 全球监控175000多个应用程序进程
  • 10000多名客户
  • 每天收集200多亿个应用程序指标
  • 每周收集超过17亿个网页指标
  • 每个"时间片"度量约为250字节
  • 每秒插入10万条时间片记录
  • 每天新增70亿行数据

体系结构

  • 平台

    • Web UI

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

      • Java
      • 码头上的Servlet
      • 应用程序指标收集器:每分钟180k多个请求,3毫秒内响应
      • Web度量信标服务:每分钟超过20万个请求,响应时间为0.15ms
      • 使用Percona构建的共享MySQL
      • Linux
      • 9@24核Intel Nehalem,带48GB RAM,SAS连接RAID 5
      • 裸机(无虚拟化)

奖金

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

最新更新