- Hbase简介
- Hbase定义
- Hbase数据模型
- Hbase逻辑结构
- Hbase物理存储结构
- 数据模型
- Hbase基本架构
- Hbase快速入门
- Hbase安装部署
- Zookeeper正常部署
- Hadoop正常部署
- Hbase的解压
- Hbase的配置文件
- Hbase远程发送到其他集群
- Hbase服务的启动
- 查看Hbase页面
- 高可用(可选)
- Hbase Shell *** 作
- 基本 *** 作
- namespace 的 *** 作
- 表的 *** 作
- Hbase进阶
- Hbase API
- Hbase优化
- 整合Phoenix
- 与Hive的集成
Hbase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库
Hbase数据模型逻辑上,Hbase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列
但从Hbase 的底层物理存储结构(K-V)来看,Hbase 更像是一个 multi-dimensional map
- Name Space
命名空间,类似于关系型数据库的 database 概念,每个命名空间下有多个表
Hbase有两个自带的命名空间 :
- hbase
- default
hbase 中存放的是Hbase内置的表,default 表是用户默认使用的命名空间
- Table
类似于关系型数据库的表概念。不同的是,Hbase 定义表时只需要声明列族即可,不需要声明具体的列。这意味着,往 Hbase 写入数据时,字段可以动态、按需指定。因此,和关系型数据库相比,Hbase 能够轻松应对字段变更的场景
- Row
Hbase 表中的每行数据都由一个 RowKey 和多个 Column(列)组成,数据是按照 RowKey 的字典顺序存储的,并且查询数据时只能根据 RowKey 进行检索,所以 RowKey 的设计十分重要
- Column
Hbase 中的每个列都由 Column Family (列族) 和 Column Qualifier(列限定符)进行限定
例如 : info:name,info:age
建表时,只需指明列族,而列限定符无需预先定义
- Time Stamp
用于标识数据的不同版本(version),每条数据写入时,系统会自动为其加上该字段,其值为写入 Hbase 的时间
- Cell
由 {rowkey, column Family:column Qualifier, time Stamp} 唯一确定的单元。cell 中的数据全部是字节码形式存贮
Hbase基本架构架构角色:
Region Server
Region Server 为 Region 的管理者,其实现类为 HRegionServer,主要作用如下:
对于数据的 *** 作:get, put, delete
对于 Region 的 *** 作:splitRegion、compactRegion
Master
Master 是所有 Region Server 的管理者,其实现类为 HMaster,主要作用如下:
对于表的 *** 作:create, delete, alter
对于 RegionServer 的 *** 作:分配 regions 到每个 RegionServer ,监控每个 RegionServer 的状态,负载均衡和故障转移
Zookeeper
Hbase 通过 Zookeeper 来做 master 的高可用、RegionServer 的监控、元数据的入口以及集群配置的维护等工作
HDFS
HDFS 为 Hbase 提供最终的底层数据存储服务,同时为 Hbase 提供高可用的支持
Hbase快速入门 Hbase安装部署 Zookeeper正常部署首先保证 Zookeeper 集群的正常部署,并启动之
zk.sh start
#!/bin/bash case in "start"){ for i in cpucode100 cpucode102 cpucode101 do echo ---------- zookeeper $i 启动 ------------ ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start" done };; "stop"){ for i in cpucode100 cpucode102 cpucode101 do echo ---------- zookeeper $i 停止 ------------ ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop" done };; "status"){ for i in cpucode100 cpucode102 cpucode101 do echo ---------- zookeeper $i 状态 ------------ ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh status" done };; esacHadoop正常部署
Hadoop集群的正常部署并启动:
myhadoop.sh start
#!/bin/bash if [ $# -lt 1 ] then echo "No Args Input..." exit ; fi case in "start") echo " =================== 启动 hadoop 集群 ===================" echo " --------------- 启动 hdfs ---------------" ssh cpucode100 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh" echo " --------------- 启动 yarn ---------------" ssh cpucode102 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh" echo " --------------- 启动 historyserver ---------------" ssh cpucode100 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver" ;; "stop") echo " =================== 关闭 hadoop 集群 ===================" echo " --------------- 关闭 historyserver ---------------" ssh cpucode100 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver" echo " --------------- 关闭 yarn ---------------" ssh cpucode102 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh" echo " --------------- 关闭 hdfs ---------------" ssh cpucode100 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh" ;; *) echo "Input Args Error..." ;; esacHbase的解压
解压 Hbase 到指定目录:
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-2.0.5 export PATH=$PATH:$Hbase_HOME/bin
source /etc/profileHbase的配置文件
修改 Hbase 对应的配置文件
hbase-env.sh 修改内容 :
vim hbase-env.sh
export Hbase_MANAGES_ZK=false
hbase-site.xml 修改内容 :
vim hbase-site.xml
hbase.rootdir hdfs://cpucode100:8020/hbase hbase.cluster.distributed true hbase.zookeeper.quorum cpucode100,cpucode101,cpucode102
regionservers :
cpucode100 cpucode101 cpucode102Hbase远程发送到其他集群
xsync hbase-2.0.5/Hbase服务的启动
- 单点启动
bin/hbase-daemon.sh start master
bin/hbase-daemon.sh start regionserver
提示:如果集群之间的节点时间不同步,会导致 regionserver 无法启动,抛出 ClockOutOfSyncException 异常
修复提示:
a、同步时间服务
b、属性:hbase.master.maxclockskew设置更大的值
hbase.master.maxclockskew 180000 Time difference of regionserver from master
- 群启
bin/start-hbase.sh
对应的停止服务:
bin/stop-hbase.sh查看Hbase页面
启动成功后,可以通过 host:port 的方式来访问Hbase管理页面,例如:
http://cpucode100:16010
高可用(可选)在 Hbase 中 HMaster 负责监控 HRegionServer 的生命周期,均衡RegionServer 的负载,如果 HMaster 挂掉了,那么整个 Hbase 集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。所以 Hbase 支持对HMaster 的高可用配置
关闭 Hbase 集群(如果没有开启则跳过此步)
bin/stop-hbase.sh
在 conf 目录下创建 backup-masters 文件
touch conf/backup-masters
在 backup-masters 文件中配置高可用 HMaster 节点
echo cpucode102 > conf/backup-masters
将整个 conf 目录 scp 到其他节点
xsync conf/
打开页面测试查看
http://cpucode100:16010
Hbase Shell *** 作 基本 *** 作进入 Hbase 客户端命令行
bin/hbase shell
查看帮助命令
helpnamespace 的 *** 作
查看当前 Hbase 中有哪些 namespace
list_namespace
- default (创建表时未指定命名空间的话默认在default下)
- hbase(系统使用的,用来存放系统相关的元数据信息等,勿随便 *** 作)
创建 namespace
create_namespace "test"
create_namespace "test01", {"author"=>"cpucode", "create_time"=>"2021-12-10 08:08:08"}
查看 namespace
describe_namespace "test01"
修改namespace的信息(添加或者修改属性)
添加或者修改属性:
删除属性:
删除 namespace
注意: 要删除的 namespace 必须是空的,其下没有表
表的 *** 作 Hbase进阶 Hbase API Hbase优化 整合Phoenix 与Hive的集成欢迎分享,转载请注明来源:内存溢出
评论列表(0条)