gpt4 book ai didi

hadoop - HBase 表设计 - 高窄与扁平宽的方法

转载 作者:可可西里 更新时间:2023-11-01 14:22:35 26 4
gpt4 key购买 nike

我必须每月在 HBase 表中存储有关实体的信息。我想使用 mapreduce 逻辑处理迄今为止实体可用的所有月份详细信息。我很困惑是选择高窄设计还是扁平宽设计HBase 表。

使用平面宽度方法,实体 ID 将保留为行键,月份 ID 将保留为列限定符,详细信息将保留为限定符值。在 HBase-mapreduce 中,我可以在映射和处理中获取实体的所有详细信息。

高-窄方法将行键存储为实体 ID 和月份的组合。此外,详细信息将存储在单独的列中。在 HBase -mapreduce 中,我必须在 map 中获取 entiy 的详细信息,并在 reducer 中聚合所有月份。

哪种方法更好并产生更好的性能?提前致谢。

最佳答案

一些假设:

  • 你有很多实体,你希望每个月保存一次它们的状态
  • 您希望 MapReduce 作业的结果聚合这些实体并根据月份保存信息。例如2013 年 1 月(所有实体)的数字是多少。
  • 您每个月不会为每个实体存储大量信息

我认为 Flat-Wide 表格方法会产生更好的结果。

设计一个平坦而宽的表意味着您的所有实体数据都在一行中(这就是为什么大小不是很大很重要的原因。如果我没记错的话,HBase 将数据存储在每个列族的 block 中,这就是级别在哪个压缩发生.. 更多信息在 Suggestions on performance optimization section 下)。由于所有这些都在一起,只要您拥有行键列家族列量词信息,您就应该能够快速获取任何实体信息。还假设实体标识符是散列的(或者你用散列作为前缀)你应该能够防止 monotonically increasing键值也是如此。

关于运行 MapReduce 作业。由于此时您的数据在所有区域服务器上均匀分布,因此您的计算也将被分布。这意味着所有机器同样有可能做同样数量的工作。但是,您也可以使用 Tall-Narrow 模型(假设您正确设计了架构)。

关于hadoop - HBase 表设计 - 高窄与扁平宽的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18642670/

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