11

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

我有一个服务器健康信息数据集,每 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. 我不是在为我的示例寻找定制的应用程序,因为我的重点是大局:具有预测分析通用平台的大数据。

4

3 回答 3

8

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

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

一个兼具这两方面能力的机器学习系统必然有两层:可扩展的离线模型构建,以及实时在线服务和更新。恕我直言,这就是推荐者的外观,例如: http: //myrrix.com/design/

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

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

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

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

唯一的自定义代码是包装 ML 模型所需的任何内容。如果您确实不需要构建自己的模型或动态更新它们,这是一个非常简单的问题。如果你这样做 - 更难的问题,但仍然可以构建。

于 2012-12-06T17:01:14.010 回答
0

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

于 2013-10-31T15:22:57.607 回答
-3

NewRelic 之类的东西?

统计数据

  • New Relic 是应用程序性能管理 (APM) 即服务
  • 全球监控 175,000 多个应用程序进程
  • 10,000 多个客户
  • 每天收集超过 200 亿个应用程序指标
  • 每周收集超过 17 亿个网页指标
  • 每个“时间片”度量约为 250 字节
  • 每秒插入 100k 个时间片记录
  • 每天有 70 亿行新数据

建筑学

  • 平台

    • 网页界面

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

      • 爪哇
      • 码头上的 Servlet
      • 应用指标收集器:每分钟 180k+ 个请求,3ms 响应
      • Web 指标信标服务:每分钟 200k+ 个请求,响应时间为 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

于 2012-12-06T16:19:28.987 回答