我们计划从 CDH3 迁移到 CDH4,作为迁移的一部分,我们还计划将 HBASE 引入我们的系统,因为它也会更新数据,在 CDH3 中我们使用 Hive 作为仓库。
这里我们遇到了迁移的主要问题,Hive 支持表分区。我们的系统有许多不同模式的表,有些表有基于日期的分区,我们有过去 5 年的数据历史记录(某些表中存在 365 * 5 分区)。
我们也希望在 HBase 中实现相同的行为,当我浏览时,我找不到在 HBase 中创建分区的解决方案。任何人都可以帮助我在 HBase 中实现这一分区明智的表创建吗?
我们选择 HBASE 的原因是它支持更新。
如果 HBASE 不支持这一点,则其他(如 MangoDB、Cassandra)支持我们的行为。
如果我们至少能找到一些解决方案,那真的很有帮助。
HBase有一个接近分区的概念,称为分区region http://hbase.apache.org/book/regions.arch.html。然而,HBase 中的这些分区不像 Hive(或 RDBMS)分区那样工作。每个区域都包含一系列键,但您可以通过拆分或分割将键范围分成更小的区域 - 例如如果您的原始区域包含键 0-9,您可以将其分为两个较小的区域 0-4 和 5-9 或十个分区 0、1、2...等。
如果您的密钥是复合的,那么日期将是它的第一部分,然后是您今天的密钥,您可以预先分割 hbase,以便每天都会获得一个或多个区域。
但是,您应该注意,最重要字节是连续的键会减慢您的写入速度(如果您正在进行一次性加载,则可能不是问题),这是一个称为“热点”的问题 - 您可以阅读有关它的信息以及克服它的示例方法来自 sematext 的 Alex Baranau 的博客文章 http://blog.sematext.com/2012/04/09/hbasewd-avoid-regionserver-hotspotting-despite-writing-records-with-sequential-keys/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)