菜鸟先飞之Hbase进阶之路

本文详细介绍了Hbase的架构,包括HMaster、RegionServer和Zookeeper的角色,以及Hbase的数据存储和管理。此外,还涵盖了Hbase在大数据生态中的应用和Hbase的基本操作,如创建表、数据插入、查询和删除等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hbase是一个基于HDFS的面向列的分布式数据库,源于Google的bigTable论文。

如果需要实时地随机访问超大规模数据集,使用Hbase是一个更好的选择。

 

Hbase同样是采用Master/Slaves的主从服务器结构,它是由一个HMaster服务器和多个HReginServer服务器构成,而所有服务器都是通过Zookeeper协调并处理各服务器运行期间可能遇到的错误。

 

HBase采用Master/Slave架构
1)HMaster
2)RegionServer
3)Zookeeper
4)HBase Client
5)Region
 

HMaster的作用
1、是HBase集群的主节点,可以配置多个,用来实现HA
2、处理元数据的变更
3、监控RegionServer
4、负责RegionServer的负载均衡
5、处理RegionServer故障转移
6、通过ZooKeeper发布自己的位置给客户端

 

RegionServer负责管理维护Region,负责存储HBase实际数据
1)一个RegionServer包含一个WAL、一个BlockCache (读缓存)和多个Region
2)一个Region包含多个存储区,每个存储区对应一个列族
3)一个存储区由多个StoreFile和MemStore组成
4)一个StoreFile对应于一个HFile和一个列族
5)HFile和WAL作为序列化文件保存在HDFS上
6)Client与RegionServer交互

 

功能
1、负责管理HBase的实际数据
2、处理分配给它的Region
3、刷新缓存到HDFS
4、维护HLog
5、执行Compaction
6、负责处理Region分片
 

HBase物理架构 - RegionTable

单个Table(表)被分区成大小大致相同的Region
Region是HBase集群分布数据的最小单位
Region被分配给集群中的RegionServer
一个Region只能分配给一个RegionServer
 

 

HBase逻辑架构 - Row

Rowkey(行键)是唯一的并已排序
Schema可以定义何时插入记录
每个Row都可以定义自己的列,即使其他Row不使用
相关列定义为列族
使用唯一时间戳维护多个Row版本
在不同版本中值类型可以不同
HBase数据全部以字节存储

 

HBase生态圈技术
1)Lily – 基于HBase的CRM
2)OpenTSDB – HBase面向时间序列数据管理
3)Kylin – HBase上的OLAP
4)Phoenix – SQL操作HBase工具
5)Splice Machine – 基于HBase的OLTP
6)Apache Tephra – HBase事务支持
7)TiDB – 分布式SQL DB 
8)Apache Omid - 优化事务管理
9)Yarn application timeline server v.2 迁移到HBase
10)Hive metadata存储可以迁移到HBase
11)Ambari Metrics Server将使用HBase做数据存储

 

 

HBase数据管理

数据管理目录
系统目录表hbase:meta
存储元数据
ZooKeeper存储hbase:meta表的位置信息
HBase实际数据存储在HDFS上


HBase 命令

(1)判断表存在与否:exists ‘表名’

(2)使用通配符的方式列出所有表:list

(3)查看HBase的版本:version

(4)查看HBase的状态:stuts

  1. 查看HBase帮助文档:help
  2. 创建一个表user,列族为baseinfo,privateinfo:create ‘user’,{NAME => ‘baseinfo’},{NAME => ‘privateinfo’}
  3. 查看user表信息 whoaml
  4. 向user表中入数据:put ‘user’,’1001’,’baseinfo:name’,’zhangsan’
  5. 根据rowkey获取数据:

1)get ‘user’,’001’

2) scan ‘usr’,{COLUMN => [’baseinfo:name’}

      6.获取指定CF数据的两种方式

遍历获取 scan ‘user’

按列读取 scan ‘user’,{COLUMN => [‘baseinfo:name’]}

      7.获取指定列的数据

按列读取 scan ‘user’,{COLUMN => [‘prvate’]}

     8.更新数据put ‘user’,1001,’baseinfo:name’,’lisi’直接覆盖

     9.修改多版本存

alter ‘user’,NAME => ‘baseinfo’ ,VERSIONS => ‘5

     10.多版本数据查询 

Scan ‘user’,{COLUMN => [‘baseinfo:name’],VERSIONS => 5}

     11.统计user表中数据个数

Count ‘user’

     12.指定rowkey范围查询

Scan ‘user’,{STARTROW => ‘a’,STOPROW => ‘n’}

     13.删除整行

Delete ‘user’,1001

     14.删除一个单元格的值

Delet ‘user’,102,’baseinfo:name’, 1595237734474

     15.删除一列

Delete ‘user’,’private:age’

     16.删除一个列族数据

Alter ‘user’,’delete’ => ‘private’

     17.启动user表: Enable ‘user’

         禁用表:Disable ‘user’ 

     18.清

Truncate ‘user’

     19.删除user表

Disable ‘user’

Drop ‘user’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值