Hbase

Hadoop是一个高可靠性、高性能、面向列、可伸缩、 实时读写的分布式数据库

基本结构

hbase shell创建列限定符 hbase的列限定符概念_hadoop

  • 表 table
  • 行 row
  • 行键 rowkey
  • 列族 column family
  • 列限定符 qualifier
  • 单元格 cell
  • 版本、时间戳

数据模型

hbase shell创建列限定符 hbase的列限定符概念_hbase shell创建列限定符_02

id

name

Age

Hobby

Address

01

zhangsan

26

篮球

山东

02

03

04

变成这样:

Rowdy

Family1

Family2

01

Family1:name=zhangsan

Family1:age=26

Family2:hobby=篮球

Family:address=山东

02

hbase shell创建列限定符 hbase的列限定符概念_hbase_03

Shell 操作

# 建表
create "表名", "列族1", "列族2"
create "Student", "StuInfo", "Grades"

# 插入数据
put "表名", "rowKey", "列族1:列族限定符", "数据"
put "Student", "0001", "StuInfo: Name", "Lux"

# 全面扫描
scan "表名"

# 查数据
get "表名", "rowkey", "列族:列限定符"
get "Student", '0003'

# 改数据
put "表名", "rowKey", "列族1:列族限定符", "数据"

# 删除单元格
delete "表名", "rowkey", "列族:限定字符"
# 删除一行
deleteall "表名", "rowkey"
# 删除表 
disable "表名"
drop "表名"

# 列出所有表
list

# 批量执行 
hbase shell 命令文本文件

# 查询表中记录数
count "表名"

# 查询是否存在
exists "表名"

# 多版本数据获取
alter "表名", {NAME=>"列族", VERSIONS=>保留版本数}

Hbase Regios 作用 ?

  • 表拆分到一些较小的片段叫regions
  • 表按行键拆分成多个regions
  • Regions由一个RegionServer 管理
  • RegionServer通常运行在集群中的工作节点
  • RegionServer通常服务多个Regions

Hbase 集群架构

hbase shell创建列限定符 hbase的列限定符概念_表名_04


hbase shell创建列限定符 hbase的列限定符概念_表名_05

hbase shell创建列限定符 hbase的列限定符概念_hadoop_06

HMaster

  • 监控集群中所有 RegionServer进程
  • 管理用户对table结构的增删改查操作
  • 在Region split后,负责新Region的分配
  • HMaster失效仅会导致所有元数据无法修改,表中数据读写还可以操作
  • 管理HRegionServer的负载均衡,调整Region分布
  • 集群中所有 metadata 信息改变的入口
  • 在HRegionServer停机后,负责失效HRegionServer上的Region的迁移

ZooKeeper

  • 保证任何时候,集群中只有一个HMaster(HA)
  • 实时监控RegionServer的上线和下线信息,并实时通知给HMaster
  • 保证任何时候,集群中只有一个HMaster(HA)

HRegionServer

  • 维护Region,并往HDFS中写数据
  • 向Client提供服务
  • 当表的大小超过设置 值时,Split Region
  • 在HRegionServer停机后,负责失效HRegionServer上的Region的迁移

HBase and ZooKeeper

  • HBase元数据存储在Zookeeper中
  • 默认情况下,Hbase管理Zookeeper实例,如启动或停止zookeeper
  • Zookeeper解决Hbase单节点故障问题
  • HA的集群中可以有多个Masters
  • 只能有一台Master管控集群
  • ZooKeeper 负责协调各Master服务
  • Master服务之间相互竟争,取得集群运行控制权
  • 如果控制集群的Master异常,剩下的Master服务器将继续竟争集群管控权

HBase Region 定位

hbase shell创建列限定符 hbase的列限定符概念_hbase shell创建列限定符_07

  1. Client向Zookeeper发出第一个查询,找到hbase:meta的位置
  2. 第二个查询发给hbase:meta
  • hbase:meta查询出所有region和其所在的位置
  • hbase:meta 表永远不会拆分成多个Regions
  1. 第三个查询发给存储了目标Region的RegionServer
  2. 第一个和第二个查询的结果会缓存在Client的机器中

总结:

  • 表通过row key拆分成region
  • 表拆分成regions并且由RegionServers管理
  • HMaster负责协调管理RegionServers
  • HDFS和ZooKeeper为Hbase提供高可用(HA)
  • hbase:meta用于找到哪个RegionServer服务管理哪些region和region的起止rowkey