【问题标题】:Is this a viable MapReduce use case or even possible to execute?这是一个可行的 MapReduce 用例,甚至可以执行吗?
【发布时间】:2012-10-02 16:11:48
【问题描述】:

我是 Hadoop、MapReduce、大数据的新手,我正在尝试评估它对于我正在从事的项目非常感兴趣的特定用例的可行性。但是,我不确定我想要完成的是 A) 可能还是 B) 建议使用 MapReduce 模型。

我们本质上拥有大量的小部件(已知的数据结构)和定价模型(编码在 JAR 文件中),我们希望能够执行小部件和定价模型的每个组合以确定结果跨模型排列的定价。定价模型本身将检查每个小部件并根据模型中的决策树确定定价。

在我看来,从商品基础架构的并行处理角度来看,这是有道理的,但从技术角度来看,我不知道是否可以在 MR 作业中执行外部模型,从实际角度来看,我是否试图强制执行该技术的用例。

因此问题就变成了是否可能;以这种方式实施是否有意义?如果不是,还有哪些其他选项/模式更适合这种情况?

编辑 数量和种类将随着时间的推移而增长。为了便于讨论,假设我们目前有 1TB 的小部件和 10 种定价模型。然后,我们预计会进入数 TB 和数百个定价模型,并且随着小部件的更改和/或添加以及新类别的定价模型的引入,排列的执行将频繁发生。

【问题讨论】:

  • 有趣...您能更具体地说明您拥有多少数据吗? MapReduce、Hadoop 和 BigData 都很棒,但老实说,除非你有超过 TB 的原始数据要处理,否则它们就太过分了。

标签: hadoop mapreduce bigdata


【解决方案1】:

您当然需要一个可扩展、可并行化的解决方案,而 hadoop 就是这样。您只需稍微调整一下您的解决方案,使其适合 hadoop 世界。

首先,您需要使模型和小部件实现通用接口(在这里说得很抽象),以便您可以将任意模型应用到任意小部件,而无需了解任何有关实际实现或表示的信息。

其次,您必须能够通过 id 引用模型和小部件。这将允许您构建对象(可写对象),这些对象(可写对象)包含模型的 id 和小部件的 id,因此将代表小部件和模型的交叉产品中的一个“单元”。您将这些实例分布在多个服务器上,并且这样做将模型的应用程序分布到多个服务器上的小部件。这些对象(称为 ModelApply 类)将保存特定模型到小部件应用程序的结果,并且可以使用 hadoop 以通常的方式处理以重新发布到最佳应用程序上。

第三,这是棘手的部分,您需要计算模型与小部件的实际叉积。您说模型的数量(以及模型 ID)最多为数百个。这意味着您可以将该 id 列表加载到映射器中的内存中,并将该列表映射到小部件 id。对映射器的 map() 方法的每次调用都会传入一个小部件 id,并会为每个模型写出一个 ModelApply 实例。

我暂时就这样吧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多