一、题目:如何解决hbase中遇到的热点问题?
1、问题引入
在默认的拆分策略中 ,region的大小达到一定的阈值以后才会进行拆分,并且拆分的region在同一个regionserver中 ,只有达到负载均衡的时机时才会进行region重分配!并且开始如果有大量的数据进行插入操作,那么并发就会集中在单个region中, 形成热点问题。
2、解决方案
如果有并发插入的时候尽量避免热点问题 ,应当预划分 Region的rowkeyRange范围 ,在建表的时候就指定预region范围(在建表的时候根据具体的查询业务,设计rowkey的预拆分)
3、问题模拟与解决 (命令)
3.1 创建预拆分表
create 'tb_split','cf',SPLITS => ['e','h','l','r']
3.2 查看region信息
list_regions 'tb_split'
3.3 添加数据
put 'tb_split','c001','cf:name','first'
put 'tb_split','f001','cf:name','second'
put 'tb_split','z001','cf:name','last'
3.4 将内存的数据刷到表中,观察每个region中的数据分布
flush 'tb_split'
此时我们查询'second',就应该点击上图中最后region中去找数据
点击之后找到存放列簇数据的Store Files,以此在hdfs中找到真实数据的存放路径
在命令行查看数据:
与我们的猜想吻合,至此,模拟预拆分结束...