gpt4 book ai didi

java - 基于HBase和Hadoop MapReduce的分布式multimap

转载 作者:行者123 更新时间:2023-12-01 15:28:22 25 4
gpt4 key购买 nike

很抱歉,我还没有深入了解 HBase 和 Hadoop MapReduce,但我想你可以帮助我找到使用它们的方式,或者也许你可以提出我需要的框架。

<小时/>

第一部分

我必须将第一个记录流存储在某处。它们应该可以通过一些取决于它们的键来访问。多个记录可以具有相同的 key 。其中有相当多。我必须在超时之前删除旧记录。

还有第二个记录流,也非常密集。对于每个记录(参数记录),我需要:使用该参数记录的键从第一个流获取所有记录,找到第一个对应的记录,从第一个流存储中删除它,返回结果(res1)合并这两个记录。

<小时/>

第二部分

第三个记录流与第一个记录流类似。记录应该可以通过键访问(与第一部分的不同)。像往常一样,多个记录将具有相同的 key 。没有像第一个流中那么多。我必须在超时之前删除旧记录。

对于每个res1(参数记录),我必须:使用该记录的另一个键从第三个流中获取所有记录,映射这些以 res1 作为参数的记录,减少为结果。第三个流记录应在存储中保持不变。

<小时/>

具有相同键的记录优选存储在同一节点上,并且优选在该记录所在的节点上运行通过键获取记录并基于给定参数记录执行某些操作的过程。

<小时/>

HBase 和 Hadoop MapReduce 适用于我的情况吗?这样的应用程序应该是什么样子(基本想法)?如果答案是否定的,是否有框架来构建此类应用程序?

如果您无法得到我想要的东西,请提出问题。

最佳答案

我与存储后端技术有关。前端接受记录可以是无状态的,因此可以轻松扩展。

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

关于java - 基于HBase和Hadoop MapReduce的分布式multimap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9897998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com