1 hbase行健设计
遵循规则: 唯一 ,有序, 可识别性 ,读写性能的最佳优化
这种优化级别从左到右,逐渐递减。
同时,rowkey基本是由多个字段共同构建而成,可以根据业务需求,将这些字段用不同分隔符来间隔
比如用 a|b:c
比如电商的这个:
产品编码+用途:_ : 多种分隔符
时间戳_userID:djy
时间戳_userID:yhj
时间戳决定唯一有序, useID决定可识别,djy代金卷/yhj优惠卷 决定读写速度,因为用字母简写方式替代真实数据这样组成的rowkey会剪短,在大数据量下查询势必会减少IO.
rowkey补充:
rowkey是以字典顺序排序的。而存储的字节码,字典排序,我们知道,如果是字 母,那就是字母的顺序,比如,有两个rowkey,rowkey1:aaa222,rowkey2:bbb111,那么rowkey1是排在 rowkey2前面的,因为按字典,a排在b前面,如果rowkey2的第一位也是a,那么就根据第二位来比较,如果还相同,则比较第三为,后面同样.
我们在根据rowkey范围查询的时候,我们一般是知道startRowkey,如果我们通过scan只传startRowKey : d开头的,那么查询的是所有比d大的都查了,而我们只需要d开头的数据,那就要通过endRowKey来限制。我们可以通过设定endRowKey为:d 开头,后面的根据你的rowkey组合来设定,一般是加比startKey大一位。比如说rowkey设计为:用户ID-日期,那么查某个用户某天的数 据,startKEY为3231-20121212,endKey为:3231+201213,那么你查到的就是用户为3231在20121212这一天 的数据。
2 1 region有三个要素:
属于哪张表
它所包含的第一行(第一个region没有首行)
它所包含的最后一行(末一个region没有末行)
这个首行末行在 hadoop3:60010/table
3 region 分配不均匀:
提问:region分配不均匀,总是分配到少数节点上,这样读写并发效率会较低??
回答:
当表初写数据时,此时表只有一个region ,当随着数据的增多,region 开始变大,等到它达到限定的阀值大小时,变化把region 分裂为两个大小基本相同的region,
而这个阀值就是storefile 的设定大小(参数:hbase.hregion.max.filesize 新版本默认10G),---->
,在第一次分裂region之前,所有加载的数据都放在原始区域的那台服务器上,随着表的变大
region是属于单一的regionserver,除非这个regionserver宕机或者挂掉,或者执行balance时,才会将这部分的region信息转义到其他机器上。
4 行加锁:
HBase的锁 是行锁,无论对行进行访问的事物有多少列,那对此行的更新都会是原子操作,要么成功,要么失败,不会存在部分成功的情况。
即:如果只更新一个行1000个列中的一个列,那也会对正行加锁。
5 ZK的作用
协调和服务于分布式应用程序的服务。
zk存储 -ROOT-表的地址, Hmaster地址, Hregionserver地址
zk通过选举方式避免 hmaster单节点
6 Hmaster
htable ddl操作 + region分配
7 Hregionserver
响应clent请求,和hdfs交互,
一个表在行级别上可以分为多个region,
每个region在进行进一步封装就成了一个个的Hregion对象。
1个hregion = W个hstore = W个列族(列族个数和hstore个数一一对应) ---> 相同属性数据应该放在同一列族中,这样存储时候会放在同样hstore下,这样client访问时
就不需要跨hstore,减少磁盘寻址。
Hstore = memstore + storefile组成,
memstore: store memory buffer, 客户端写入数据到memstore到阈值(默认128M)后flush到storefile后存储在硬盘中。
在flush时,regionserver flush将请求添加到队列,模拟生产-消费模式来异步处理,当队列来不及消费,产生大量积压请求时,会导致内存徒增,最坏出现OOM.
在一个Region下 每个Column Family 一个HStore ,那多个Column Family 这样问题出来了,如果一个HStore数据量大,而另外一个HStore 仅有几条数据,会同时 flush吗? 对
这个特性告诉我们: Hbase表设计的时候尽量设置单一ColumnFamily的表,否则Hbase不能很好的处理上面类似的问题.
hbase.regionserver.global.memstore.upperLimit 默认 0.4 也就是40%为了防止MemStore占用总内存过大,当RegionServer所有Region达到总heap内存的40%,
Hbase会Block所有的更新,来flush所有的MemStore,并释放MemStore占用的内存
hbase.regionserver.global.memstore.lowerLimit 默认是 0.35 也就是 35%,当该RegionServer 下所有的MemStore达到 总Heap 内存的35%时
触发flush个别占用内存大的MemStore,这是会做block,写更新还 是会收影响。 ----> 这个没看懂啊
相关推荐
在HBase这种分布式列式数据库中,Rowkey的设计至关重要,因为它直接影响着数据的分布和查询效率。以下是关于HBase Rowkey设计的一些关键知识点: 1. 唯一性原则:Rowkey必须确保全局唯一,避免数据冲突。这可以通过...
分数不让我设定(最好是0)包含原理概念、架构、单机安装、分布式安装,HBase的优化及Phoenixd的一点拓展知识,二叉树,B树等等。。
HBase是一个分布式的、可扩展的、面向列的存储系统,它是Apache软件基金会的一个开源项目,基于Google的BigTable模型构建。HBase运行在Hadoop生态系统之上,利用Hadoop的文件存储系统HDFS(Hadoop Distributed File ...
hbase学习-脑图总结,涵盖了大部分基础知识点,下个脑图查看器即可,方便大家学习
**HBase学习总结** HBase,全称是Apache HBase,是一个分布式的、面向列的开源数据库,它是基于Google的Bigtable模型构建的,专为处理海量数据而设计。HBase是Apache Hadoop生态系统的一部分,它运行在Hadoop分布式...
### HBase概述与基础知识 #### 一、HBase与OLTP及OLAP 在大数据处理领域,企业常常面临着两种不同的数据处理需求:联机事务处理(OLTP)和联机分析处理(OLAP)。OLTP通常涉及频繁的更新、插入和删除操作,而OLAP...
Hbase学习总结,很不错的资源,对你绝对有帮助
"Java操作HBase总结及示例代码" 使用Java对HBase进行操作是大数据处理中常见的场景,本文将总结使用Java对HBase进行操作的方法,并提供详细的示例代码。 一、Configuration 在使用Java API时,Client端需要知道...
在深入探讨HBase之前,首先理解它是一个基于Google Bigtable理念设计的开源分布式数据库,主要在Apache Hadoop项目中作为NoSQL数据存储解决方案。HBase适用于处理海量结构化数据,尤其适合那些需要实时读写的大数据...
hbase优化总结 HBase 是一个基于列存储的 NoSQL 数据库,广泛应用于大数据存储和处理领域。然而,在实际应用中,HBase 的性能优化变得至关重要。本文档旨在总结 HBase 的优化方法,对项目中使用 HBase 的调优提供...
HBase是一个分布式、可扩展、列式存储的非关系型数据库(NoSQL),它基于Google的BigTable模型构建,并使用Java语言开发,运行在Hadoop的HDFS文件系统之上。HBase提供了高可靠性和高性能的数据存储能力,特别适合于...
Zookeeper和Hbase安装总结手册.
#### 七、总结 通过上述内容可以看出,《HBase权威指南》全面而深入地介绍了HBase的相关知识和技术要点,无论是对于初次接触HBase的新手还是想要深入了解其内部机制的资深开发者来说,都是一本不可多得的好书。该书...
在HBase的生态建设方面,文中提到了构建HBase平台的实践和应用,强调了HBase平台化后的新特性,如HBase2.0&阿里云HBase的解读,进一步说明了HBase在国内生态的成熟度和实用性。 本文档是HBase技术社区成员的共同...
#### 四、总结 通过上述步骤,我们已经完成了 HBase 内置 ZooKeeper 的配置,并成功启动了 HBase 服务。这对于快速搭建 HBase 测试环境或小型开发环境非常有帮助。此外,本文还简要介绍了如何通过 HBase shell 进行...
#### 四、总结 通过以上步骤,我们可以成功地在HBase中配置和启用审计日志功能,这对于保障数据安全、监控系统行为等方面都非常重要。此外,还可以根据实际需求调整相关配置,以满足更具体的审计要求。
HBase是Apache软件基金会旗下一个开源的非关系型分布式数据库(NoSQL),是Google Bigtable的开源实现,主要面向大规模的结构化数据存储。HBase是一种分布式的、面向列的数据库管理系统,它利用Hadoop HDFS作为其...
**HBase实验报告** 在本实验中,我们主要聚焦于HBase,这是一个基于谷歌Bigtable设计的开源NoSQL数据库,广泛应用于大数据存储场景。实验旨在让参与者熟练掌握HBase的Shell操作,包括创建表、输入数据以及进行特定...
【HBase数据库设计】 HBase是一种基于列存储的分布式数据库,它是Apache Hadoop生态系统的一部分,设计用于处理海量数据。HBase的主要特征包括: 1. **分布式存储**:HBase构建在Hadoop的HDFS(Hadoop Distributed...
总结来说,HBase-2.4.17-bin安装包提供了一个强大且高效的NoSQL数据库,适合大数据场景下的实时读写操作。通过理解并掌握上述概念、安装步骤及操作方法,用户可以有效地利用HBase处理海量数据。