Hbase
木良Duncan
这个作者很懒,什么都没留下…
展开
-
Phoenix
Phoenix是以JDBC驱动方式嵌入到HBase,在部署时只有一个包,直接放在HBase的lib目录下。每个RegionServer节点上,都会有一个Phoenix协处理器来处理每个表、每个Region的数据,应用端通过Phoenix客户端与HBase客户端打交道,从而实现Sql化访问HBase数据。原创 2023-03-29 14:11:29 · 137 阅读 · 0 评论 -
Coprocessor构建二级索引
使用Coprocessor,可以将业务代码封装,并在RegionServer上运行,也就是数据在那里,就在哪里跑代码,这样就节省了很大的数据传输的网络开销。可以静态实现(通过HBase配置文件),也可以动态完成(通过shell或Java API)2.2引用完整性约束:HBase并不支持关系型数据库中的引用完整性约束,但是我们可以通过使用Coprocessor增强这种约束。通过建立列值到rowKey的映射来建立二级索引,通过列值找到rowKey,再通过rowKey找到相应的需求值。jar包放在lib目录下。原创 2023-03-29 14:12:47 · 186 阅读 · 0 评论 -
HMaster工作机制
HMaster只维护表和region的元数据,而不参与表数据IO过程,HMaster下线仅导致所有元数据的修改被冻结(无法删除表,无法修改表的schema,无法进行Region的负载均衡,无法处理Region上下线,无法进行Region合并;Region的split可以正常进行,因为只需要HRegion Server参与),表的数据读写可以正常进行。4.扫描.META.region的集合,计算得到当前还未分配的HRegion,将他们放入待分配Region列表。1)master上线。2)master下线。原创 2023-03-29 14:10:33 · 200 阅读 · 0 评论 -
Region管理
当需要分配新的Region,并且有一个HRegion Server上有可用空间时,HMaster就给这个HRegion Server发送一个装载请求,把Region分配给这个HRegion Server。无论哪种情况,HRegion Server都无法继续为它的Region提供服务,此时HMaster会删除server目录下代表这台HRegion Server的znode数据,并将这台HRegion Server的Region分配给其它还活着的节点。2.HRegion Server挂了。原创 2023-03-29 14:07:08 · 102 阅读 · 0 评论 -
HBase热点(数据倾斜)问题
热带发生再大量的client直接访问集群的一个或极少数个节点(访问可能是读、写或者是其它操作)。大量访问会使热点region所在的单个机器超出自身承受能力,引起性能下降甚至region不可用,这也会影响同一个RegionServer上的其它region,由于主机无法服务其它region的请求。某个小的时间段内,对HBase的读写请求集中到极少数的Region上,导致这些region所在的RegionServer处理数据请求量骤增,负载量偏大,而其它的RegionServer明显空闲。原创 2023-03-29 13:29:16 · 400 阅读 · 0 评论 -
HBase的LSM结构
这些 Block 的 index 会被存储在 SSTable 的尾部,用于帮助快速查找特定的 Block。当一个 SSTable 被打开时,index 表会被加载到内存,然后根据 key 在内存 index 中进行一个二分查找,查到该 key 对应的磁盘的 offset 后,去磁盘把响应的块数据读取出来。LSM-Tree并不是一种严格的树结构,而是一种内存+磁盘的多层存储结构。MemTable是LSM-Tree在内存中的数据结构,只用于保存最新的数据,按照key排序。HBase使用调表来实现。原创 2023-03-29 08:23:49 · 239 阅读 · 0 评论 -
HBase和关系型数据库(传统数据库)的区别
数据类型:HBase只保存简单的字符穿类型,类型相对较少;关系型数据库有丰富的数据类型:int doubel String.数据操作:HBase只有简单的插入、查询、删除、清空等操作;关系型数据库有多种连接操作。存储模式:HBase是列式存储;关系型数据库是基于行式存储,表格结构的存储。数据维护:HBase的更新操作实际是插入数据;关系型数据库是替换修改。可伸缩型:HBase兼容性较高原创 2023-03-28 08:40:50 · 1131 阅读 · 0 评论 -
HBase的rowkey设计原则
100字节以内,8的倍数最好,可能的情况下越短越好。因为HFile按照key-value存储,过长的rowkey会影响存储效率;其次,过长的rowkey在memstore中较大,影响缓冲效果,减低检索效率。最后,操作系统大多为64位,8的倍数,充分利用操作系统的最佳性能。必须在设计上保证其唯一性,rowkey是按照字段顺序排序存储的。因此在设计rowkey的时候,要充分利用排序的特点,将经常读取的数据存储到一块,将醉经可能会被访问的数据放到一块。(1)生成随机数、hash、散列值。原创 2023-03-28 08:39:49 · 129 阅读 · 0 评论 -
HBase的rowkey设计原则
100字节以内,8的倍数最好,可能的情况下越短越好。因为HFile按照key-value存储,过长的rowkey会影响存储效率;其次,过长的rowkey在memstore中较大,影响缓冲效果,减低检索效率。最后,操作系统大多为64位,8的倍数,充分利用操作系统的最佳性能。必须在设计上保证其唯一性,rowkey是按照字段顺序排序存储的。因此在设计rowkey的时候,要充分利用排序的特点,将经常读取的数据存储到一块,将醉经可能会被访问的数据放到一块。(1)生成随机数、hash、散列值。原创 2023-03-28 08:36:40 · 157 阅读 · 0 评论 -
HBase MemStore刷写
hbase.regionserver.global.memstore.size.lower.limit(默认值 0.95), region 会按照其所有 memstore 的大小顺序(由大到小)依次进行刷写。直到 region server 中所有 memstore 的总大小减小到上述值以下。当 region server 中 memstore 的总大小达到 java_heapsize。原创 2023-03-28 08:35:01 · 111 阅读 · 0 评论 -
HBase读写数据流程
写流程:Client先访问zookeeper,获取hbase:meta表位于那个Region Server。访问对应的Region Server,获取hbase:meta表。根据写请求的namespace:table/rowkey,查询出目标数据位于那个Region Server指标的那个Region中。并将改table的region信息以及meta表的位置信息缓存在客户端的meta cache中,方便下次访问。与目标Region Server进行通讯。将数据顺序写入(追加)到WAL。将数据写原创 2023-03-28 08:33:47 · 140 阅读 · 0 评论 -
HBase架构
由于数据要经MemStore排序后才能刷写到HFile,但把数据保存在内存中会有很高的概率导致数据丢失,为了解决这个问题,数据会先写在一个叫做Write-Ahead logfile的文件中,然后再写如MemStore中。写缓存,由于HFile中的数据要求有序的,所以数据是先存储在MemStore中,排好序之后,等到达刷写时机写到HFile,每次刷写都会形成一个新的HFile。MemStore内存中的数据写到文件后就是StoreFile,StoreFile底层时以HFile的格式保存。原创 2023-03-28 08:30:16 · 107 阅读 · 0 评论 -
HBase和HDFS各自使用场景
5.业务场景简单,不需要关系数据库中很多特性(例如:交叉列、交叉表、事务、连接等)3.可以部署在许多廉价机器中,通过副本提高可靠性,提高容错和恢复机制。3.HBase不适用于与有join,多级索引,表关系复杂的数据模型。1.瞬间写入大量数据,数据库不好支撑或需要很高成本支撑的场景。2.数据需要长久保存,且量会持久增长到比较大的场景。4.大数据量且有快速随机访问需求。HBase是基于HDFS来存储。1.一次性写入,多次读取。原创 2023-03-28 08:30:58 · 107 阅读 · 0 评论 -
HBase和HDFS各自使用场景
5.业务场景简单,不需要关系数据库中很多特性(例如:交叉列、交叉表、事务、连接等)3.可以部署在许多廉价机器中,通过副本提高可靠性,提高容错和恢复机制。3.HBase不适用于与有join,多级索引,表关系复杂的数据模型。1.瞬间写入大量数据,数据库不好支撑或需要很高成本支撑的场景。2.数据需要长久保存,且量会持久增长到比较大的场景。4.大数据量且有快速随机访问需求。HBase是基于HDFS来存储。1.一次性写入,多次读取。原创 2023-03-28 08:28:11 · 155 阅读 · 0 评论 -
HBase介绍
2. HBase不支持表的关联操作,因此数据分析是HBase的弱项。常见的group by或order by只能通过编写MapReduce来实现。HBase时建立在HDFS之上,提供高可靠性、高性能、列存储、可伸缩、实时读写是NoSql数据库系统。1.架构设计复杂,且使用HDFS作为分布式存储,因此就存储少量数据,也不会很快。:主要需是数据分析,比如做报表。数据规模不大,对实时性要求高。3.HBase部分支持ACID(行级事务)。:单表超千万、上亿,且高并发。原创 2023-03-28 08:26:57 · 120 阅读 · 0 评论