HBase基础笔记

优质博客

  1. https://juejin.im/post/5c666cc4f265da2da53eb714
  2. http://hbasefly.com/
  3. https://hbase.apache.org/book.html

hbase是一个运行与、于hadoop上的分布式,可扩展,多版本,大数据存储的非关系型数据库。具有广泛的使用场景。

特点

  1. 可扩展,即水平扩展
  2. 严格一致性读写
  3. 自动或者可配置的表切片
  4. regionServer之间failover
  5. 块缓存和布隆过滤器用于实时查询。
  6. 通过服务器端过滤器查询谓词下推
  7. 支持通过Hadoop指标子系统将指标导出到文件或Ganglia;或者jmx

架构

架构

hbase是一个分布式的系统,基于master/slaver架构,并且依赖zookeeper,主要分为HMaster和HRegionServer模块

HMaster

Hmaster是master,通常运行在有namenode的机器上,功能:

  • 处理用户的各种管理请求:建表,修改表,删除表,权限操作,切分表,合并分片,compactions
  • 管理所有的RS,包括Region的负载均衡,RS的宕机恢复,Region的迁移
  • 清理过期日志以及文件,每隔一段时间会检查hdfs上的hlog,hfile是否过期,过期则删除

HMaster提供的接口:

  • Table (createTable, modifyTable, removeTable, enable, disable)
  • ColumnFamily (addColumn, modifyColumn, removeColumn)
  • Region (move, assign, unassign)
    可以认为是ddl

当master挂掉后,集群仍可以运行一段时间,并且不会影响对数据的读写,但是对于RegionServer的failover,分片功能无法使用

HRegionServer

HRegionServer 是slaver,通常放在datanode的机器上,主要响应用户的IO请求,管理一些Region。

对外提供的接口
  • Data (get, put, delete, next, etc.)
  • Region (splitRegion, compactRegion, etc.)

zookeeper

  • 实现master的高可用:为了避免单点故障,启动多个master,但是只有一个master是active;当zk观测到master宕机时,会选举出一个master
  • 管理元数据:正常的RS,hbase:meta的所载RS的位置等
  • 参与RS宕机恢复,存储各种中间过程状态
  • 实现分布式表锁

数据模型

在hbase中,分为命名空间(namespace),表(table),行,(row),列簇(column family),列(column),cell,timestamp

  1. namespace:表的逻辑分组,用来区分表在哪一个命名空间,类似mysql中的database
  2. table:属于一个namespace,一个table由很多行组成
  3. row:一行由多个列的值组成,每一行有一个唯一的rowkey,按照字典序升序排列;每一行都有相同的列簇,但是列可以不同
  4. column family:每一个表由多个列簇,一个列簇可以包含多个列,在创建表时需要指定
  5. column Qualifier:每一个列都属于一个列簇,由“列簇:列标识”标识,创建表的时候不用指定列标识
  6. cell,一个单元格,由rowkey,(column family:column),timestamp,value确定,标识一个版本;时间戳表示写入数据时在RegionServer上的时间,在将数据放入单元格时也可以指定其他时间戳值。
  7. timestamp,时间戳,用来确定一个值得版本,一个cell可有由多个版本,但是只有最新的有效
  8. version:一个单元格可以有多个版本,并且按照时间戳降序排序;可以设置版本数,最小版本数
  9. 排序:HBase的所有数据模型操作均按排序顺序返回数据。首先是按行,然后是ColumnFamily,然后是column qualifier,最后是时间戳(按相反顺序排序,因此首先返回最新记录)。

例子:

# 创建表名为test,包含一个列簇cf1
# 没有指定命名空间,默认为default
create 'test','cf1'
# 存入rowkey为1,列为cf1:name,值为zzzz,当前时间错得数据
put 'test','rowkey1','cf1:name','zzzz'
put 'test','rowkey1','cf1:age','18'
put 'test','rowkey2','cf1:addr','china'
put 'test','rowkey2','cf1:color','yello'
# 查看test存储的所有的数据,2行,一个列簇,4列,4个单元格
ROW                           COLUMN+CELL
 rowkey1                      column=cf1:age, timestamp=1572506321932, value=18
 rowkey1                      column=cf1:name, timestamp=1572506338839, value=mjh
 rowkey2                      column=cf1:addr, timestamp=1572507573798, value=china
 rowkey2                      column=cf1:color, timestamp=1572507585208, value=yello
2 row(s)

数据并非像mysql一样按行存储,而是按列存储,每一个单元格就是一个key-value对

存储

表的数据存储在hdfs上,也就是datanode

  1. Region:表的横向切分,当表过大的时候就会分片,分为多个region
  2. store,在一个Region中按照列簇切分为多个store
  3. storeFile:在store内部,包含多个storeFile,sotreFile是由memStore一次flush产生的
  4. memStore:内存中的数据,为了加快写的速度而存在
  5. Hlog:wal中的预写日志
  6. HFile:数据格式

shell命令

https://blog.csdn.net/vbirdbest/article/details/88236575

hbase shell启动shell

hbase(main):013:0> help

COMMAND GROUPS:
  Group name: general
  Commands: processlist, status, table_help, version, whoami

  Group name: ddl
  Commands: alter, alter_async, alter_status, clone_table_schema, create, describe, disable, disable_all, drop, drop_all, enable, enable_all, exists, get_table, is_disabled, is_enabled, list, list_regions, locate_region, show_filters

  Group name: namespace
  Commands: alter_namespace, create_namespace, describe_namespace, drop_namespace, list_namespace, list_namespace_tables

  Group name: dml
  Commands: append, count, delete, deleteall, get, get_counter, get_splits, incr, put, scan, truncate, truncate_preserve

  Group name: tools
  Commands: assign, balance_switch, balancer, balancer_enabled, catalogjanitor_enabled, catalogjanitor_run, catalogjanitor_switch, cleaner_chore_enabled, cleaner_chore_run, cleaner_chore_switch, clear_block_cache, clear_compaction_queues, clear_deadservers, close_region, compact, compact_rs, compaction_state, flush, hbck_chore_run, is_in_maintenance_mode, list_deadservers, major_compact, merge_region, move, normalize, normalizer_enabled, normalizer_switch, split, splitormerge_enabled, splitormerge_switch, stop_master, stop_regionserver, trace, unassign, wal_roll, zk_dump

  Group name: replication
  Commands: add_peer, append_peer_exclude_namespaces, append_peer_exclude_tableCFs, append_peer_na
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值