简介
Apache 开源分布式,非关系列式数据库,位于Hadoop生态的存储层,数据存储于HDFS文件系统,ZooKeeper作为协调服务;
- 大数据,一个表有上亿行,上百万列
- 列式存储和权限控制
- 为空的列不占用空间
Hbase与关系型数据对比
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JEVSRw7K-1687411377633)(C:\Users\务本\AppData\Roaming\Typora\typora-user-images\image-20230603230008858.png)]](https://i-blog.csdnimg.cn/blog_migrate/1bcb54bb077a01afb2333ff2d13a9c75.png)
Hbase数据结构
- 表:数据存于表中,表名为字符串;
- 行:行键(rowkey)和多个列组成,行键没有数据类型,视为byte[];
- 列族:多个列组成,相当于对列分组;
- 列限定符:即为列,

Hbase集群架构

HMaster
- 主节点,本身不存数据,管理HRegionServer节点;
- HRegionServer节点宕机时,HMaster会将HRegion迁移到其他HRegionServer
- 管理用户对表的增删改查
- 管理表的元数据
- 权限控制
HRegion和HRegionServer
Hbase使用rowkey自动将表水平切分成多个区域,这个区域称为HRegion;
HRegionServer用来管理对应相应的HRegion和处理客户端请求

Store
存储一个列族的数据,一个HRegion中包含一个或多个Store;
Store中包含一个MemStore和多个HFile文件,MemStore相当于内存缓存,达到一定值会生成Hfile文件,Hbase数据最终以HFile格式存于HDFS中;
HLog
Hbase日志文件,记录数据的更新操作;写入数据流程,先日志,再MemStore,再HFile;HLog可用于故障修复;
分布式安装
HBase安装包
-
下载地址 https://www.apache.org/dyn/closer.lua/hbase/2.4.17/hbase-2.4.17-bin.tar.gz
-
解压
$ tar -zxf hbase-2.4.17-bin.tar.gz -C /home/
配制文件
-
conf/hbase-env.sh,加入以下配置
export JAVA_HOME=/opt/modules/jdk1.8.0_144 #禁用HBase自带的ZooKeeper,使用外部独立ZooKeeper export HBASE_MANAGES_ZK=false -
hbase-site.xml
<configuration> <!—Hbase数据存储目录。需要与HDFS NameNode端口一致--> <property> <name>hbase.rootdir</name> <value>hdfs://linux00:8020/hbase</value> </property> <!--开启分布式--> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!--ZooKeeper节点列表 --> <property> <name>hbase.zookeeper.quorum</name> <value>linux00:2181,linux01:2181,linux02:2181</value> </property> <!—ZooKeeper配置、日志等数据存放目录--> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/opt/hbase-2.4.17/zkData</value> </property> <!--在分布式环境下设置为false,为解决启动HMaster无法初始化WAL的问题--> <property> <name>hbase.unsafe.stream.capability.enforce</name> <value>false</value> </property> <property> <name>hbase.wal.provider</name> <value>filesystem</value> </property> </configuration>hbase.rootdir:注意地址hdfs://centos01:9000应与Hadoop的fs.defaultFS一致。若HDFS使用的HA模式,还需要将HDFS HA集群的core-site.xml和hdfs-site.xml复制到HBase的conf目录中(初学者不建议将HBase与HDFS HA结合,使用单一NameNode即可)。
regionservers
linux00
linux01
linux02
文件分发
scp -r hbase-2.4.17 linux01:/home
scp -r hbase-2.4.17 linux02:/home
启动&停止
bin/start-hbase.sh
bin/stop-hbase.sh
bin/hbase-daemons.sh stop master
bin/hbase-daemons.sh stop reginserver
HBase shell 命令
#启动
bin/hbase shell
#建表
create 't1','f1'
#添加数据
put 't1','row1','f1:name','hangsan'
#全表扫描
scan 't1'
#查一行数据
get 't1','row1'
#修改表
put 't1','row1','f1:name','lisi'
#删除特定单元格
delete 't1','row1','f1:name'
#删除行
deleteall 't1','row1'
#删除表
disable 't1'
drop 't1'
#列出所有表
list
#查询行数
count 't1'
#表是否存在
exists 't1'
# 批量执行命令,commands.txt放安装目录下
bin/hbase shell ./commands.txt
数据备份
- 启动yarn 集群
- 执行备份命令
bin/hadoop distcp \
hdfs://linux00:8020/hbase \
hdfs://linux00:8020/hbase_backup
- 数据恢复
bin/hadoop distcp \
hdfs://linux00:8020/hbase_backup \
hdfs://linux00:8020/hbase
758

被折叠的 条评论
为什么被折叠?



