2023学年完整公开课版HBase数据倾斜_第1页
2023学年完整公开课版HBase数据倾斜_第2页
2023学年完整公开课版HBase数据倾斜_第3页
2023学年完整公开课版HBase数据倾斜_第4页
2023学年完整公开课版HBase数据倾斜_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HBase数据倾斜2知识目标分布式与并行处理热点和数据倾斜存储方式引起的热点问题和数据倾斜01能力目标解决数据倾斜和热点问题ColumnFamily列族设计数量一对多设计和宽表02学习目标3目录01分布式与并行处理02什么是热点和数据倾斜03预分区和rowkey的散列设计——解决数据倾斜和热点问题04预分区splitkeys选取05一对多设计和宽表分布式与并行处理41.分布式系统通常,我们说分布式系统的时候,我们都会想到Dubbo框架和SpringCloud框架。这两个框架现在应该是国内用的比较多的两个分布式框架了,特点都是很容易把服务部署在多台机器组成一个高可用的服务集群来应对高并发。分布式与并行处理52.多线程和并行处理我们都知道多线程是怎样的一个概念,它就是一个并行处理的例子,它是在一台计算机并行的。多线程的概念是,多个线程在抢占资源,抢到了资源的线程会运作,其它的线程在等待,所以并不是真正意义上的并行,只是因为计算机的运行速度比较快,所以我们可以认为它是并行处理的。什么是热点和数据倾斜6热点发生在大量的client直接访问集群的一个或极少数个节点(访问可能是读,写或者其他操作)。

大量访问会使热点region所在的单个机器超出自身承受能力,引起性能下降甚至region不可用,这也会影响同一个RegionServer上的其他region,由于主机无法服务其他region的请求,造成资源浪费。 设计良好的数据访问模式以使集群被充分,均衡的利用。 什么是热点和数据倾斜7数据倾斜,Hbase可以被划分为多个Region,但是默认创建时只有一个Region分布在集群的一个节点上,数据一开始时都集中在这个Region,也就是集中在这一个节点上,就算region存储达到临界值时被划分,数据也是存储在少数节点上。这就是数据倾斜。HBase的存储方式引起的热点问题和数据倾斜8HBase中的行是按照rowkey的字典顺序排序的,这种设计优化了scan操作,可以将相关的行以及会被一起读取的行存取在临近位置,便于scan。rowkey设计是热点的源头。这种设计是分布式系统一个很大的弊端,而且这样导致数据倾斜和热点问题,从而导致集群的资源得不到很好的利用。预分区和rowkey的散列设计——解决热点问题和数据倾斜91.预分区预分区,让表的数据可以均衡的分散在集群中,而不是默认只有一个region分布在集群的一个节点上。(预分区个数=节点的倍数,看数据量估算,region不足了会被分列,预分区后每个region的rowkey还是有序的)一个RegionServer能管理10-1000个Region,0.92.x版本后,默认的Region大小为10G,向下可以支持256MB,向上可以支持到20G,也就是说,每个RegionServer能管理的数据量为2.5GB-20TB。预分区和rowkey的散列设计——解决热点问题和数据倾斜102.Rowkey长度原则(最好不超过16字节)Rowkey是一个二进制码流,Rowkey的长度被很多开发者建议说设计在10~100个字节,不过建议是越短越好,不要超过16个字节。(1)数据的持久化文件HFile中是按照KeyValue存储的,如果Rowkey过长比如100个字节,1000万列数据光Rowkey就要占用100*1000万=10亿个字节,将近1G数据,这会极大影响HFile的存储效率;(2)MemStore将缓存部分数据到内存,如果Rowkey字段过长内存的有效利用率会降低,系统将无法缓存更多的数据,这会降低检索效率。因此Rowkey的字节长度越短越好。(3)目前操作系统是都是64位系统,内存8字节对齐。控制在16个字节,8字节的整数倍利用操作系统的最佳特性。预分区和rowkey的散列设计——解决热点问题和数据倾斜113.rowkey散列原则把主键哈希后当成rowkey的头部。4.4.rowkey唯一原则必须在设计上保证其唯一性,rowkey是按照字典顺序排序存储的,因此,设计rowkey的时候,要充分利用这个排序的特点,将经常读取的数据存储到一块,将最近可能会被访问的数据放到一块。预分区和rowkey的散列设计——解决热点问题和数据倾斜125.时间戳反转如果数据需要保留多个版本,可以使用反转的时间戳作为rowkey的一部分,用Long.Max_Value-timestamp追加到key的末尾,例如[key][reverse_timestamp],[key]的最新值可以通过scan[key]获得[key]的第一条记录,因为HBase中rowkey是有序的,第一条记录是最后录入的数据。整个rowkey(timestamp并不是必要的,视业务而定)rowkey=哈希(主键<递增的id\手机号码等>)+Long.Max_Value-timestamp预分区splitkeys选取13(1)取样,先随机生成一定数量的rowkey(10万、100万),将取样数据按升序排序放到一个集合里。(2)根据预分区的region个数,对整个集合平均分割,即是相关的splitkeys。(3)HBaseAdmin.createTable(HTableDescriptortableDescriptor,byte[][]splitkeys)可以指定预分区的 splitkey,即指定region间的rowkey临界值。一对多设计和宽表14假设,现在有用户表和银行卡表,一个用户对应多张银行卡传统的关系型数据(RMDB),我们会设计成两张表,通过关联查询获取数据;如果Hbase也设计成两张表,那么如果想获取用户和银行卡的数据,就得查询两次才能获取到数据。如果设计成一张宽表,把用户数据放到银行卡的表上,也就是用户的数据被存放了多次,但是获取数据的时候只需要查询一次就能把用户和用户银行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论