Hbase简单入门总结

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

       person  表名

      列簇basic(基本信息),  列簇2(初中信息),  列簇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存储列簇

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

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

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

        变成 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,  直至增长到一定阀值--->

                       触发compact合并请求,多个storeFIle合并成 一个storeFIle, 同时进行版本合并和数据删除--->

                      当storeFiles compact后,逐步形成越来越大的storeFIle---> 到达一定阀值后,开始分割,把当前region分成2个region,  

                       新的两个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

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

猜你喜欢

转载自blog.csdn.net/xc123_java/article/details/88874437