Hbase简单入门总结

川长思鸟来 2022-02-26 02:10 258阅读 0赞

1. 面向列的数据库; 基本理解为: 各个版本

  1. person 表名
  2. 列簇basic(基本信息), 列簇2(初中信息), 列簇3(高中信息)
  3. \{name列,age\} \{初一,初二,初三\} \{高一,高二,高三\}

2. 插入数据: rowkey + columnfamily + column01 + timestamp : value(值) —- > 单元 cell

3. 默认存储三份,数据安全性, 每一个rowkey唯一 , 默认值 系统时间戳 类型long

4 查看表 list, 创建表 : create ‘user’,’info’ 表名和列簇

5. 查看表的详细信息 : describe ‘user’

6. 插入数据 put ‘表名’,’rowkey ‘ ,’列簇:列名’,’值’

7 .查询三种方式: ① 根据 rowkey查询, 最快; ② 范围查询 scan range ③ 全表扫描 scan

8. 查询命令 : get ‘表名’,’rowkey’ 模糊查询 : scan ‘user’ ,{COLUMNS ==> [‘列簇:列名1’,’列簇:列名2’]}

9. 物理模型: table ;下面很多region 对应regionserver

region 是分布式存储和负载均衡最小单元, 但最小的存储单元但是store,多个store组成region, 每个Stroe存储列簇

  1. 每个store 又由一个memstore 多个storefile组成, memstore存储在内存中, storefile存储在HDFS

10 Hbase 数据写入流程, put 的时候 ,预写日志, 再放到memstore, storefile 写到磁盘

11. 默认的情况下, 创建一个表时候,会给表创建一个region, startkey-endkey(不限制), 当数据足够多的时候,

  1. 变成 startkey-中间值 -endkey

12. 命名空间 default 系统命名空间: meta 和namespeac 创建命名空间的表

13. help ‘’ 查看说明 create_namespace 创建空间 创建表 create ‘命名空间:表名’,’列簇’

14. 导入海量数据的时候, 创建表的时候,多创建几个region,依据rowkey设计 , region 划分, 依赖于rowkey, 预判出现的一些rowkey

strategykey—->自己设计的rowkey rowkey—->endKey

15 自定义创建多个分区: create 表名, 列簇, splits =>[‘rowkey1’,’rowkey1’]

16; 设计根据rowkey ,最好作为前缀,从前到后 123 234

17; 一个主表, 很多索引表; 索引表的列 : 主表的rowkey ; 索引表设计好rowkey,就可以拿到列, 列为主表的rowkey, 就可以查主表

18 : 主表和索引表的数据同步: java中的事物, phoneix 只能通过jdbc方式,才能同步

19 .表属性压缩配置; 1. 先配置haodop压缩 2. 把hadoop-snappy jar 放入lib目录

20 . blockCache 缓存 当用户读取数据的时候, memstore —>blockCache—>hfile

21. 每个regionserver 只有一个blockCache

22. cache分级思想: 用过inMemory类型cache(存储元数据) single(可以先删除)和multi(频繁查询)类型的cache 分别为 0.25, 0.25, 0.5

23.将小文件,合并为大文件; minor合并(重写,减少文件数量,合并速度快) 和 major压缩合并( 真正的合并,扫描所有的键值对,会删除过期数据,真正删除)

24. 自己创建的表,默认在default空间内, 系统自带的元数据命名空间 Hbase

25.自定义表的region存储在Hbase:meta表内;

26. 检索流程: 客户端—->zookper(bin/zkcli.sh) 里面有Hbase文件夹, 里面有一个meta-region-server—->

找到Hbase的meta表—->meta表存储着自定义表的region名称作为rowkey,值为regionserver所在主机——->找到自定义表的regionserver

27. 写入流程; 客户端—>存入memStore , 一直到memstor满了—->flush成一个storeFile, 直至增长到一定阀值—->

  1. 触发compact合并请求,多个storeFIle合并成 一个storeFIle, 同时进行版本合并和数据删除--->
  2. storeFiles compact后,逐步形成越来越大的storeFIle---> 到达一定阀值后,开始分割,把当前region分成2region,
  3. 新的两个region会被Hmaster 分配到相应的regionserver上,

27. Hbase只是增加数据,所有的更新和删除操作, 都是在合并阶段做的,所以用户只需要写到内存就立即返回,非常快;

28.Hlog记录数据的所有变更;每个regionserver有一个;

29.core-site.xml 和 hdfs-site.xml 和 hbase-site.xml

30 . new HTable.get(new Get(rowkey)); cellutil.cloneFamily(cell); new Put(rowkey), new Delete(rowkey), IOutils.closeStrem

  1. table.getScanner(new Scan());

31. client 访问hbase上数据不需要master参与(寻址访问zookeeper和HRegion server, 数据读写访问 HRegion server),HMaster 仅仅
维护着table和region的元数据信息,负载很低;

32. HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行,
HMaster在功能上主要负责Table和Region的管理工作:

  1. 1. 管理用户对Table的增、删、改、查操作
  2. 2. 管理HRegionServer的负载均衡,调整Region分布
  3. 3. Region Split后,负责新Region的分配
  4. 4. HRegionServer停机后,负责失效HRegionServer 上的Regions迁移

发表评论

表情:
评论列表 (有 0 条评论,258人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Hbase总结

    文章目录 总结内容 1.为什么要使用hbase 所有的缓存软件就当成一个map使用; 2.介绍hbase 3.实战

    相关 Hbase入门

    Hbase是一个开源的非关系型数据库(nosql),他参考了谷歌的bigtable建模,实现语言java 是apache软件基金会的hadoop项目的一部分,运行在hdfs