前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hbase的基本操作

Hbase的基本操作

作者头像
姜同学
发布2022-10-27 16:39:01
1.1K0
发布2022-10-27 16:39:01
举报
文章被收录于专栏:姜同学姜同学

一.概述

HBase 是一个构建在 Hadoop 文件系统之上的面向列的数据库管理系统。

要想明白为什么产生 HBase,就需要先了解一下 Hadoop 存在的限制?Hadoop 可以通过 HDFS 来存储结构化、半结构甚至非结构化的数据,它是传统数据库的补充,是海量数据存储的最佳方法,它针对大文件的存储,批量访问和流式访问都做了优化,同时也通过多副本解决了容灾问题。

但是 Hadoop 的缺陷在于它只能执行批处理,并且只能以顺序方式访问数据,这意味着即使是最简单的工作,也必须搜索整个数据集,无法实现对数据的随机访问。实现数据的随机访问是传统的关系型数据库所擅长的,但它们却不能用于海量数据的存储。在这种情况下,必须有一种新的方案来解决海量数据存储和随机访问的问题,HBase 就是其中之一 (HBase,Cassandra,couchDB,Dynamo 和 MongoDB 都能存储海量数据并支持随机访问)。

基本概念

代码语言:javascript
复制
RowKey(行键)

相当于RDBMS中的主键 创建表时不需要指定行键,添加数据时指定

代码语言:javascript
复制
Column Family(列族)

创建表时需要指定列族,理论上列族的数量不受限制,实际开发中 建议不超过三个

代码语言:javascript
复制
Column(列)

建表时无需指定,添加数据时可以自动增删

代码语言:javascript
复制
cell(单元)

如何锁定HBase中的一条数据? 行键+列族+列+时间戳 每一条数据都在这个单元中 默认只获取最后一个版本的数据

代码语言:javascript
复制
namespace(名称空间)

相当于RDBMS中的数据库 建表时如果不指定名称空间则使用默认的defult名称空间

HBase Table
HBase Table

基本命令

代码语言:javascript
复制
#建立集群连接
start-hbase.sh
#创建客户端连接
hbase shell
#查看状态
status
#获取帮助
help
#查看版本
version

#创建person表(规定指定一个列族,理论上列族不限制数量)
create 'person' ,'basic' , 'other'
#向person表中添加name列值为jmy(添加数据需要指定行键)
put 'person','p1','basic:name','jmy'
#修改person表中p1的name值为jjj
put 'person','p1','basic:name','jjj'
#查看person表中p1的name值
get 'person','p1','basic:name'
#查看person表中所有数据
scan 'person'
#查看person表中basic和other列族中所有的值
scan 'person',{COLUMNS=>['basic','other']}
#查看person表中name和addr的值
scan 'person', {COLUMNS=>['basic:name','other:addr']}
#删除person表中行键为p1列族basic列name的值
delete 'person','p1','basic:name'
#删除person表中行键为p1的所有列
deleteall 'person','p1'
#禁用person表(删除表之前需要先禁用表)
disable 'person'
#删除person表
drop 'person'
#查看所有表
list
#查看所有名称空间
list_namespace
#创建person名称空间
create_namespace 'person'
#创建person名称空间下的teacher表
create 'person:teacher','name'
#查看person名称空间下的表
list_namespace_tables 'person'
#删除person名称空间(要求person名称空间为空)
drop_namespace person

基本理论

存储结构
  1. HBase中表的数据按行键分类存在不同的HRegion中
  2. HRegion和HDFS中的datanode处于同一个节点
  3. 因为行键的字典序排序规则,所以HRegion中的数据不会出现交叉
  4. 存在不同的HRegion中是为了分布式管理
  5. HRegion中存在多个HStore
  6. HStore的数量由列族的数量决定,一个HStore中存在一个列族的数据
  7. 一个HRegion如果超过指定大小(默认10G)则会进行切分
  8. 每一个HStore中都包含0~多个HFile/StoreFile,最终会落地到HDFS上所以HBase也具备副本策略
HMaster
  • HBase也是主从结构
  • HBase的主节点叫做HMaster
  • HMaster中管理这HBase的元数据

HMaster不存在单点故障,是因为可以在任意一个节点上利用 sh hbase-daemon.sh start master启动一个HMasterZookeeper会监听HMaster的active和backup节点完成故障转移当出现多个HMaster时,启动顺序决定了他们的角色,先启动的是actice后启动的是backup节点。

  • 虽然HMaster的数量不受限制,但是HMaster之间要进行热备,为了减少节点间的资源消耗,所以建议HMaster的数量不超过3个。
  • HMaster通过向Zookeeper发送心跳传递节点状态,心跳间隔为180s.实际过程中会将这个时间缩短到10s-30s HMaster的职责: a.管理HRegionServer b.管理表结构(DDL而不是DML)
zookeeper的作用

HBase在第一次启动的时候会在zookeeper上注册一个持久节点/hbaseHMaster启动之后会在zookeeper上注册一个/hbase/master临时节点,后续的backup节点也会在被注册的/hbase/backup-masters节点管理起来。

zookeeper会监控/hbase/master节点的状态,如果Active节点宕机了,zookeeper会从/hbase/backup-masters节点中挑选一个节点成为Activezookeeper也会监控/hbase/backup-masters状态以确保热备数据。

HRegionServer在启动的时候也会在/hbase/rs节点下来注册临时子节点

代码语言:javascript
复制
HRegionServer
代码语言:javascript
复制
  HRegionServer是用来管理HRegion的,官方数据表明一个HRegionServer
可以管理个HRegion
  HRegionServer和datanode部署在同一个节点
HRegionServer的构造
  
  a.WAL(write ahead log)
  HBase在进行写操作的时候会将写操作先记录到WAL上,记录成功之后才
会写入memStore中
  WAL是维系在磁盘中的
  
  b.blockcache(读缓存)
  在进行读操作的时候会先读取blockcache,blockcache的默认大小是
128MB,维系在内存中
  blockcache具有局限性
  时间局限性:一条数据在被读取之后,HBase认为这条数据在下一次被
读取的概率大于其他数据,就会被放入到blockcache中。
  空间局限性:一条数据被读取之后,他周围的数据HBase认为下次读取的
概率大于其他数据,周围的数据就会被放入到blockcache中
  blockcache的清理采用LRU策略
  
  c.HRegion
  HRegion由memStore和到多个HFile/storeFile组成
  memStore:memStore是一块写缓存,写入数据之后会先将数据保存到
写缓存中,默认大小为128MB并且维系在内存中。
  memStore满足指定条件之后会冲刷成为HFile:
  i.memStore达到指定容量
  ii.WAL达到1G之后会冲刷memStore和产生新的HFile
  iii.WAL和所有的memStore所占的内存超过了物理内存的%,会冲刷
  较大的memStore。
代码语言:javascript
复制
HBase的读写流程

客户端第一次访问HBase,会先访问zookeeper获取.mate.的存储位置, 然后访问.mate.文件获取对应HRegion的HRegionServer,最后在访问HRegion 执行读写操作。(不同版本的读写操作不同,此为0.96之后的版本)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-06T,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.概述
  • 基本概念
  • 基本命令
  • 基本理论
    • 存储结构
      • HMaster
        • zookeeper的作用
        相关产品与服务
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档