3 个回答
rowkey散列原则:
建议将rowkey的高位作为散列字段,这样将提高数据均衡分布在每个RegionServer,以实现负载均衡的几率。如果没有散列字段,首字段直接是时间信息。所有的数据都会集中在一个RegionServer上,这样在数据检索的时候负载会集中在个别的RegionServer上,造成热点问题,会降低查询效率。其中常见的散列方法有如下:
建议将rowkey的高位作为散列字段,这样将提高数据均衡分布在每个RegionServer,以实现负载均衡的几率。如果没有散列字段,首字段直接是时间信息。所有的数据都会集中在一个RegionServer上,这样在数据检索的时候负载会集中在个别的RegionServer上,造成热点问题,会降低查询效率。其中常见的散列方法有如下:
1、reverse反转,将原来的rowkey反过来
2、加盐,随机生成字符串加载rowkey前面
3、hashcode或求模,通过一个固定的算法计算hash值获得一个字符串加载rowkey前面
如果前缀是纯数字的可以使用求模方法
发布于:3个月前 (01-24) IP属地:四川省
rowkey唯一原则:
必须在设计上保证其唯一性,rowkey是按照字典顺序排序存储的,因此,设计rowkey的时候,要充分利用这个排序的特点,可以将经常读取的数据存储到一块,将最近可能会被访问的数据放到一块。
必须在设计上保证其唯一性,rowkey是按照字典顺序排序存储的,因此,设计rowkey的时候,要充分利用这个排序的特点,可以将经常读取的数据存储到一块,将最近可能会被访问的数据放到一块。
发布于:3个月前 (01-24) IP属地:四川省
rowkey长度原则:
rowkey是一个二进制码流,可以是任意字符串,最大长度64kb,实际应用中一般为10-100bytes,以byte[]形式保存,一般设计成定长。议越短越好,不要超过16个字节,设计过长会降低memstore内存的利用率和HFile存贮数据的效率。原因如下,首先一条数据是根据rowkey来当成索引的,如果过长就会快速占据memstore的128M,然后被刷写到磁盘,也就是说相同的空间存贮的内容被rowkey占据了一大部分,减少了主要内容的存贮。
rowkey是一个二进制码流,可以是任意字符串,最大长度64kb,实际应用中一般为10-100bytes,以byte[]形式保存,一般设计成定长。议越短越好,不要超过16个字节,设计过长会降低memstore内存的利用率和HFile存贮数据的效率。原因如下,首先一条数据是根据rowkey来当成索引的,如果过长就会快速占据memstore的128M,然后被刷写到磁盘,也就是说相同的空间存贮的内容被rowkey占据了一大部分,减少了主要内容的存贮。
发布于:3个月前 (01-24) IP属地:四川省
我来回答
您需要 登录 后回答此问题!