2012-03-27 51 views
0

对不起,我没有深刻了解的HBase和Hadoop MapReduce的,但我想你能不能帮我找到使用它们的方式,或者你可以建议我需要框架。分布式多重映射


第一部分

还有就是,我要存储的地方记录1流。它们应该可以通过取决于它们的一些键来访问。几个记录可以具有相同的密钥。有相当多的人。我必须通过超时删除旧记录。

也有记录的第2流,这是非常密集了。对于每一个记录(参数记录)我需要:得到这样的说法,记录的键1中sTREM所有记录,查找第一个相应的记录,从第1流存储删除它,返回结果合并这些的(RES1)两个记录。


第二部分

记录第三流就像是第一次。记录应该可以通过密钥访问(与第一部分的不同)。像往常一样的几个记录将具有相同的密钥。在第一流中没有像他们那么多。我必须通过超时删除旧记录。

对于每个RES1(参数记录)我要:从第3的sTREM的所有记录与该记录的另一个关键,地图为这些记录RES1作为参数,减少成结果。第三个流记录应保持未修改的存储状态。


使用相同的密钥的记录者优先被存储在同一个节点,并宁愿被节点,其中上运行基于给定的参数记录的是获得通过的关键记录,并提出一些操作的过程那个记录是。


HBase和Hadoop MapReduce适用于我的情况吗?以及这样的应用程序应该如何(基本思路)?如果答案是否定的,是否有框架来buld这样的应用程序?

请提问,如果你不能得到我想要的东西。

+0

我想澄清一下:什么意思是“他们应该可以通过某些键取决于他们”?这是否意味着有一些常见的密钥集,每个记录都有一些密钥> – 2012-03-28 18:53:56

+0

这意味着有一些函数可以计算记录密钥,就像散列函数一样。 – 2012-03-29 07:15:10

+0

我是否理解你有几条记录,它们之间是一对多的关系,你想要“动态地”加入它们? – 2012-03-29 09:03:19

回答

1

我与存储后端技术。前端接受记录可以是无状态的,并且可以普遍扩展。

我们有记录的数据流,我们希望加入他们的飞行。一些记录应该坚持为什么一些(据我所知 - 第一流)是暂时的。
如果我们考虑可扩展性和持久性 - 它可以在单个java进程中使用HashMap来实现随机访问的数据,TreeMap用于我们想要存储的数据排序
现在让我们来看看如何将它映射到NoSQL技术中以获得可扩展性和我们需要的性能。
HBase发布排序地图。因此它可以成为流2的良好候选者。如果我们使用我们的密钥作为hbase表键 - 我们将获得具有相同密钥的记录的数据局部性。
HBase顶层的MapReduce也可用。
流1看起来像瞬时随机访问的数据。我认为支付这些记录的持久性的代价是没有意义的 - 所以在内存哈希表中应该这样做。例如:http://memcached.org/可能存储的元素将会是具有相同密钥的记录列表。
我仍然不能100%确定第三个流的需求,但是需要二级索引(如果它事先已知)可以作为另一个分布式映射在应用程序级别上实现。
简而言之 - 我的建议是为希望保存和存储排序的数据选择HBase,并考虑为瞬态(但仍然相当大)的数据提供一些更轻量级的解决方案。

+0

谢谢。你的想法非常有用。 – 2012-03-30 07:16:28