HBase学习笔记——避免热点Region的一些技巧

  • 时间:
  • 浏览:0
  • 来源:幸运飞艇APP下载_幸运飞艇APP官网

另一个 店铺有那此商品(row key是store id + product id) 和 有一种商品有那此店铺在出售(row key是product id + store id),这有一种行,难能可贵放上去一张表里。

能采取那此避免方案,首不难 明确访问模式,本来针对性优化:

将以上salt作为时间戳二级索引的前缀。另另一个 打乱了另另一个 的二级索引分片策略,使得负载均衡。

HBase row key设计得不好、频度各异的查询类型,会意味热门数据集中坐落在某好多个Region上,造成Region热点,集群负载不均衡。

salt技术有另一个 什么的问题——当region server数量变化时,row key前缀中的salt那末相应更新。

意味,将原始row key的MD5作为实际的row key。

你例如方案能避免region分裂、region server个数指在变化的具体情况。

为此,当他们他们他们也可我越多 都可以 对row key的各个次责,分别求取MD5,再拼接起来,作为新的row key。另另一个 真是仍不支持有序查询,本来支持根据前缀匹配进行范围扫描——根据row key前缀的MD5,范围扫描匹配的行,返回的是无序的数据。

好多好多 ,要拆成两张表,让HBase有自由度独立管理两张表的region,独立进行region的拆分,保持负载均衡。

对整个row key散列牺牲了有序性和根据前缀匹配进行范围扫描的能力。

当他们他们他们根据查询条件有那此字段,构建出二级索引,二级索引的值本来数据表的row key。那末对于一直 执行的查询条件,会集中访问二级索引的一次责行,就造成了二级索引的热点区域。

在row key首部增加原始row key的hash code,使数据均匀散列。

···

salt = timestamp.hashCode() % region server个数

···

salt的取值范围是[0, region server个数)。 本来,查询时,当他们他们他们的应用逻辑,必须对每另一个 salt的取值,发起一次查询请求,以salt值作为scan的row key的前缀。本来,将那此查询的结果合并返回。

意味我越多 须数据的有序性:

为此,当他们他们他们要影响二级索引的分片策略。我学习到了有一种方案:

其核心思想是,索引和数据保证在同一张表的同另一个 region里。这是通过将region的start row key作为索引row key的首部前缀实现的。索引和数据,在同一行的不同column family中。当region分裂以平衡负载时,索引和数据一齐分裂。二级索引的访问负载会和被索引的数据一样均衡。意味数据和它的二级索引一直 在同另一个 region里的。

3150公司(赵建博)提出的二级索引方案:http://blog.csdn.net/dhtx_wzgl/article/details/49069081

在以时间戳作为二级索引的例子中,计算:

举个例子,以时间戳作为二级索引的key,支持时间范围查找,那末写入最新的数据、查询最新的数据,很容易意味最后另一个 region成为热点。

意味业务应用的以上有一种查询,其执行频率会有很大差别。意味这有一种行,在一张表里,其中有一种更频繁的查询,自然会意味整张表中的一类row key成为热点数据。