0

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

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

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

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

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

4

1 回答 1

0

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

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

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

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

我暂时就这样吧。

于 2012-10-02T17:23:58.700 回答