深度研究hbase的热点问题,和hbase表rk的设计和手动分区区域

  

2019/2/20星期三

  

<强>深度研究hbase的热点问题,和hbase表rk的设计和手动分区地区
在2019/1/25星期五记录
hbase的热点问题:
hbase热点问题解决(预分区)https://blog.csdn.net/qq_31289187/article/details/80869906
hbase分裂的三种方式和分裂的过程https://www.cnblogs.com/niurougan/p/3976519.html

  

082 HBase的几种调优(GC策略,冲洗,紧凑,分裂)http://www.cnblogs.com/juncaoit/p/6170642.html <强> <强>
这上面讲解了这些,HBase命令的使用
081地区的预分区https://www.cnblogs.com/juncaoit/p/6170510.html的4中方法

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
<强>什么是HBase的热点问题
<强>出现热点问题原因
1, HBase的中的数据是按照字典序排序的,当大量连续的rowkey集中写在个别的地区,各个地区之间数据分布不均衡;
2,创建表时没有提前预分区,创建的表默认只有一个地区,大量的数据写入当前;
3,创建表已经提前预分区,但是设计的rowkey没有规律可循,设计的rowkey应该由regionNo +消息id组成。

  

<>强如何解决热点问题
解决这个问题,关键是要设计出可以让数据分布均匀的rowkey,与关系型数据库一样,rowkey是用来检索记录的主键。访问hbase表中的行,rowkey可以是任意字符串(最大长度是64 kb,实际应用中长度一般为10 - 100字节),在hbase内部,rowkey保存为字节数组,存储时,数据按照rowkey的字典序排序存储。

  

创建表命令:
创建testTable, {NAME=比;cf, DATA_BLOCK_ENCODING=比;“没有”,BLOOMFILTER=比;“行”,REPLICATION_SCOPE=比;“0”,版本=比;=' 1 ',压缩比;“时髦的”,MIN_VERSIONS=祝辞;‘0’,TTL=比;“15552000”,KEEP_DELETED_CELLS=比;“假”,BLOCKSIZE=在‘65536’,IN_MEMORY=比;“假”,BLOCKCACHE=比;“真”,元数据=https://www.yisu.com/zixun/> {“ENCODE_ON_DISK”=比;‘真正的’}},{SPLITS_FILE=祝辞的/app/软/测试/region.txt}

  

https://blog.csdn.net/weixin_41279060/article/details/78855679 hbase系列hbase热点问题,数据倾斜和rowkey的散列设计

  

<强>预分区和rowkey的散列设计,解决数据倾斜和热点问题
预分区,让表的数据可以均衡的分散在集群中,而不是默认只有一个地区分布在集群的一个节点上。(预分区个数=节点的倍数,看数据量估算,地区不足了会被分列,预分区后每个地区的rowkey还是有序的)

  

如何给hbase表预分区
hbase预分区方法https://www.cnblogs.com/quchunhui/p/7543385.html * * * * *
hbase表的设计原则——总结https://blog.csdn.net/m0_37138008/article/details/78985946

  

<强>行键(RowKey)设计

  

HBase的行由行键按字典顺序排序,这样的设计优化了扫描,允许存储相关的行或者那些将被一起读的邻近的行。
然而,设计不好的行键是导致热点盆栽(热点问题)的常见原因。当大量的客户端流量(流量)被定向在集群上的一个或几个节点时,就会发生爱慕盆栽。这些流量可能代表着读,写或其他操作。流量超过了承载该地区的单个机器所能负荷的量,这就会导致性能下降并有可能造成区域的不可用。在同一RegionServer上的其他地区也可能会受到其不良影响,因为主机无法提供服务所请求的负载。设计使集群能被充分均匀地使用的数据访问模式是至关重要的。

  <人力资源/>   

<强>预分区和rowkey的散列设计,解决数据倾斜和热点问题
预分区
预分区,让表的数据可以均衡的分散在集群中,而不是默认只有一个地区分布在集群的一个节点上。(预分区个数=节点的倍数,看数据量估算,地区不足了会被分列,预分区后每个地区的rowkey还是有序的)
一个RegionServer能管理10 - 1000个地区,0.92.x版本后,默认的地区大小为10 g中,向下可以支持256 mb,向上可以支持到20 g,也就是说,每个RegionServer能管理的数据量为2.5 gb-20tb。
如果有5个节点,3年内数据量为5 t,那么分区数可以预设为:
5000克/10 g=500个地区
这500个地区就会被均衡的分布在集群各个节点上(具体分布看机器的性能和存储空间而定),机器硬盘不足可以添加硬盘,性能不足可以添加新节点(添加新机器)。
rowkey长度原则(最好不超过16字节)
rowkey是一个二进制码流,rowkey的长度被很多开发者建议说设计在10 ~ 100个字节,不过建议是越短越好,不要超过16个字节。
原因如下:
(1)数据的持久化文件HFile中是按照KeyValue存储的,如果rowkey过长比如100个字节,1000年万列数据光rowkey就要占用100 * 1000万=10亿个字节,将近1克数据,这会极大影响HFile的存储效率;

深度研究hbase的热点问题,和hbase表rk的设计和手动分区区域