HBase

HBase是一款分布式、可扩展的NoSQL数据库,用于海量数据存储。它依赖于Hadoop和Zookeeper,数据逻辑关系为表-Region-Store-列族-列。每个Region由RegionServer管理,RegionServer负责数据的增删查改,Master管理RegionServer并通过Zookeeper实现故障转移。安装HBase需要启动Zookeeper和Hadoop集群,配置环境变量和相关配置文件。HBase客户端提供丰富的操作命令,如帮助、创建和管理命名空间,以及Region Server的详细架构,包括StoreFile、Memstore和WAL等组件。

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

定义
分布式,可扩展,支持海量数据存储的 NoSQL(非关系型)数据库
数据存储在 hadoop上,依赖 zookeeper和 hadoop

逻辑关系
表->Region-> store ->列族 -> 列
store -> RowKey

名词
Name Space 命名空间
类似于数据库中“库”的存在,每个命名空间下可以有多个表

Table 表
HBase 在定义表时只需要声明列族,不需要声明具体的列,灵活性相对关系型数据库更高

Row 行
HBase 中表的每行数据由一个 RowKey 和多个列组成,数据按照 RowKey 的字典顺序(序号1和2之间会存在序号11)存储,查询时只能按照 RowKey 进行检索

Column 列
列由列族(Column	Family)和列限定符(Column Qualifier)(大列名:小列名)进行限定,如 班级:一班  创建表时需要指明列族(大列名)不需要明确列限定符(小列名)

Time Stamp
时间戳 每条数据写入时都会被加上,用于区分数据的新旧,相当于数据的身份证

物理关系
每一行的 rowkey 列 时间戳 数据 组成了 StoreFile
StoreFile 组成了 store
store 组成了 Region
Region 由 RegionServer 管理
RegionServer 由 Master 管理
通过 Zookeeper 实现 Master 的备胎等功能

名词
region server
是 region 的管理员 实现类为 HRegionServer
对数据可以 get(得到) put (增加或者修改) delete (删除)
对 region 可以 splitRegion 切割 compactRegion 合并

Master 
	是所有 region server的管理员,实现类为HMaster 
	对表可以 create 创建  delete 删除  alter 修改
	对 region server 分配 regions 过去并监控region server的状态,实现负载均衡和故障转移

Zookeeper
	HBase 通过他实现 master的高可用(备份) region server的监控 元数据入口 集群配置维护 等

HDFS
	为HBase提供底层数据存储,同时提供高容错的支持

安装
启动 zookeeper集群 启动 hadoop集群
解压到 module 目录下
tar -zxvf hbase-2.0.5-bin.tar.gz -C /opt/module
配置环境变量
sudo vim /etc/profile.d/my_env.sh
添加
#HBASE_HOME
export HBASE_HOME=/opt/module/hbase
export PATH=PATH:PATH:PATH:HBASE_HOME/bin
修改配置文件 进入安装路径 conf 目录
1.修改 hbase-env.sh内容:(位于末尾位置125行,true改为false并取消注释)
export HBASE_MANAGES_ZK=false
2.修改 hbase-site.xml修改内容:(文末位置已有 configuration构造框,注意不要重复,只复制属性 property 即可)
第一个是指明 hbase的目录在hadfs的位置
第二个是明确 hbase是否是集群的分布式的
第三个是指明 zookeeper集群所在的服务器


hbase.rootdir
hdfs://hadoop102:8020/hbase

        <property>
            <name>hbase.cluster.distributed</name>
            <value>true</value>
        </property>
    
        <property>
            <name>hbase.zookeeper.quorum</name>
            <value>hadoop102,hadoop103,hadoop104</value>
        </property>                
    </configuration>
  3.修改 regionservers:(填入集群的服务器名称)
      hadoop102
      hadoop103
      hadoop104
  4.在 conf 目录下创建 backup-masters 并 添加启动 master 备份的服务器名称
  	  vim backup-masters
  	  Hadoop103
  5.使用脚本分发 Hbase 目录和环境配置文件	
  	  xsync /opt/module/hbase的目录名称
  	  xsync /etc/profile.d/my_env.sh
  6.启动 Hbase
  	  start-hbase.sh
  7.在网页界面查看 HBase 
  	  http://hadoop102:16010
  8.进入客户端
  	 hbase shell
  9.退出客户端
  	 exit 或者 ctrl+c 
  10.关闭 HBase
  	  stop-hbase.sh

客户端的基本操作(HBase严格度很高,必须准确使用大小写,单双引号以及特殊字符)
help 帮助 可以查看有哪些可以使用的命令
help “命令符” 可以查看该命令符的书写规范
list_namespace 查看所有命名空间
创建命名空间
create_namespace ‘需要创建的空间名称’
create_namespace ‘需要创建的空间名称’,{‘空间的某种属性’=>‘该属性的值’}
第二种没有实际用途,不常用
''单引号注释的东西是需要根据实际用途修改的,自己决定的
没有引号的大写单词是固定格式,不可改动
查看命名空间详情
describe_namespace ‘想要查看的空间名’
通过这种方式可以查看到空间的某些属性
添加或修改空间的属性
alter_namespace ‘想要修改的空间名称’,{METHOD => ‘set’,‘添加的属性名称’ => ‘添加的属性值’}
alter_namespace ‘想要修改的空间名称’,{METHOD => ‘set’,‘想修改属性名称’ => ‘修改的属性值’}
删除空间的属性
alter_namespace ‘想要修改的空间名称’,{METHOD => ‘unset’,NAME => ‘要删除的属性名称’}
删除空间
drop_namespace ‘要删除的空间名称’

创建表
 标准点 create '空间名:表名',{NAME => '列族名1' ,VERSIONS => 想要保留的版本数1},{NAME => '列族名2' ,VERSIONS => 想要保留的版本数2}
 简略版 create '表名','列族名'
 	简略版的空间为默认空间 版本数量默认为1
 	标准版创建的
查看表
  list 查看所有表
  describe '要查看的表名'  可以查看该表的所有信息
修改或增加表的列族及版本数
  alter'表名',NAME => '列族名', VERSIONS => 维护的版本数  
删除表的列族
  alter'表名',NAME => '列族名',METHOD => 'delete'
删除表
  先将表标记为不可用的
  	disable '表名'
  再执行删除命令	
  	drop '表名'  


向表中添加数据 写入
   put '表名','rowkey的值','列族名:列名','添加的值'
读取数据
   get '表名','rowkey的值'  读取整行的数据
   get '表名','rowkey的值',{COLUMN => '列名'}  读取某行某列(一格)的值
   每次读取只取时间戳最新的版本的值
   get '表名','rowkey的值',{COLUMN => '列名',VERSIONS => 4} 读取某行某列(一格)的最新四个版本的值
   注意超出此列族维护的版本数是读不出来的 
清空表
   truncate '表名'
删除数据
	delete '表名','rowkey值','列族名:列名',时间戳
	如果不写时间戳默认删除最新的时间戳版本,一次删除一个版本
	deleteall '表名','rowkey值','列族名:列名'  删除所有版本   
扫描表
    scan '表名' 扫描整张表 ,实际开发由于数据量大 不能使用
    scan '表名' ,{STARTROW => 'rowkey值',STOPROW => 'rowkey值'}
    通过rowkey值进行筛选扫描,但会收到rowkey字典排序的影响
    左 【 右 )含开始的左不含结束右	的值

Region Server 详细架构
Store File
保存实际的物理文件,StoreFile以 Hfile 的形式 有序 保存在HDFS上,每个Store有一个或多个StoreFile(Hfile)
Memstore
写缓存,数据在 Memstore 中排好序,达到刷写条件时再刷写到 Hfile ,每次刷写都是一个新的 Hfile
WAL Write-Ahead logfile
数据在写入Memstore前先写入WAL,防止缓存中的数据丢失问题
BlockCache
读缓存 查询出的数据存在这里方便下次读取
WAL=>Memstore=>SroreFile=>HDFS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值