【发布时间】:2012-03-27 21:29:27
【问题描述】:
很抱歉我对HBase和Hadoop MapReduce没有深入了解,但是我想你可以帮我找到使用它们的方法,或者你可以提出我需要的框架。
第一部分
我必须将第一条记录流存储在某处。它们应该可以通过某些键访问,具体取决于它们。多条记录可以具有相同的键。他们有很多。我必须在超时之前删除旧记录。
还有第二条记录流,也很密集。对于每条记录(参数记录),我需要:使用该参数记录的键从第一个流中获取所有记录,找到第一个相应的记录,从第一个流存储中删除它,返回结果(res1 em>) 合并这两条记录。
第二部分
第 3 条记录流与第 1 条记录类似。记录应该可以通过键访问(与第一部分的不同)。与往常一样,几条记录将具有相同的键。没有像第一流那样多。我必须在超时之前删除旧记录。
对于每个 res1(参数记录),我必须:使用该记录的另一个键从 3rd strem 获取所有记录,map 这些以 res1 作为参数的记录,reduce 为结果。 3rd 流记录应在存储中保持不变。
具有相同键的记录优先存储在同一个节点上,通过键获取记录并根据给定的参数记录执行某些操作的过程优先运行在记录所在的节点上。
HBase 和 Hadoop MapReduce 是否适用于我的情况?以及这样的应用程序应该是什么样子(基本想法)?如果答案是否定的,是否有构建此类应用的框架?
如果你不能得到我想要的东西,请提出问题。
【问题讨论】:
-
我想澄清一下:“它们应该可以通过某些键访问,具体取决于它们”是什么意思?这是否意味着有一些共同的键集,每条记录都有一些键>
-
表示有一些函数计算记录的key,就像哈希函数一样。
-
我是否理解您有一些记录流,它们之间是一对多的关系,并且您想“即时”加入它们?
-
我没有得到你的“他们之间的一对多关系”。如果你的意思是一个流中的记录有来自另一个流的多个对应记录,那么最好说在第 1 部分我必须找到一对一的关系,而在第 2 部分有多对多的关系。我真的很想在第 1 部分中加入它们并在第 2 部分中“即时”处理,但相应记录之间的时间间隔可能约为一小时,在此期间累积了数千亿条记录。记录可能没有对应的……
-
10 亿在一个小时给我们大约 300K 一秒。所以你说每秒有几千万条记录吗?
标签: java hadoop mapreduce hbase distributed-computing