hbase搭建及指令
本hbase搭建前提已经搭建好hadoop和zookeeper,如果没有搭建好可以看我主页相应搭建或配置文章
环境变量
sudo vim /etc/profile.d/my_env.sh
#HBASE_HOME
export HBASE_HOME=/opt/module/hbase
export PATH=$PATH:$HBASE_HOME/bin
source /etc/profile.d/my_env.sh
配置
cd $HBASE_HOME/conf
vim hbase-env.sh
# Tell HBase whether it should manage it's own instance of ZooKeeper or not.
#是否使用hbase自身的Zookeeper,默认为true,我们选择自己的分布式Zookeeper,所以为false
export HBASE_MANAGES_ZK=false
vim hbase-site.xml
<!--表示我们要部署一个分布式的hbase-->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!--表示我们要使用自己分布式的Zookeeper,三台zk的地址分别为hadoop102...端口号默认为2181可以省略不填-->
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop102,hadoop103,hadoop104</value>
<description>The directory shared by RegionServers.</description>
</property>
<!--zookeeper的配置,一定要修改zookeeper的数据存储地址(默认为tmp目录下,会有丢失风险),我已经在zk改过这里就注释了-->
<!-- <property>-->
<!-- <name>hbase.zookeeper.property.dataDir</name>-->
<!-- <value>/export/zookeeper</value>-->
<!-- <description> 记得修改 ZK 的配置文件 -->
<!-- ZK 的信息不能保存到临时文件夹
<!--</description>-->
<!-- </property>-->
<!--我们要将数据存放在hdfs上,故需要告诉hbase要将数据放到哪-->
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop102:8020/hbase</value>
<description>The directory shared by RegionServers.</description>
</property>
</configuration>
#修改regionservers,他相当于hadoop里的workers,告诉hbase这个分布式架构有哪些节点
vim regionservers
hadoop102
hadoop103
hadoop104
完成后分发到其它节点
常见报错
#hbase和hadoop都有log4j的jar包,会有冲突的风险,我们选择将hbase里的jar包删除(改名)
cd $HBASE_HOME/lib/client-facing-thirdparty
mv slf4j-reload4j-1.7.33.jar slf4j-reload4j-1.7.33.jar.bak
完成后分发到其它节点
启停命令
#单点启动
bin/hbase-daemon.sh start master
bin/hbase-daemon.sh start regionserver
#群起
bin/start-hbase.sh
#对应的停止服务
bin/stop-hbase.sh
启动后可以到master对应的host的16010端口进入hbase的web端
我这里是hadoop102放置master,故为hadoop102:16010
高可用
cd $HBASE_HOME/conf
touch backup-masters
#在文件内配置你选择的备用master,这里我选择的是hadoop103,在文件内就配置hadoop103
hadoop103
分发该文件
启动hbase后可以看到,启动完相应的master和regionserver后会再启动一个master
start-hbase.sh
使用jps查看备用节点,也能看到一个HMaster进程
在hadoop102:16010中的Backup Masters栏下能看见相应备用master信息
在hadoop103:16010也可以打开,但是不显示hbase的分布式信息
可以在主master上jps查看相应进程号,将其kill掉,这时候去hadoop103:16010上就能看到全部的regionserver信息了
使用(只提供简单的语句)
#进入base客户端
hbase shell
#帮助
help
#查看某个命令介绍
help '你要查看的命令'
eg:help 'list_namespace'
#查看命名空间(命名空间可以理解为mysql里的database)
list_namespace
#创建命名空间
create_namespace '命名空间的名字'
#查看表格
list
#创建表格
create '命名空间:表名',{NAME => '列族名',VERSIONS => 数字(维护几个版本)}
#查看表格详细信息
describe '命名空间:表名'
#修改版本号
alter '表名',NAME => '列族名',VERSIONS => 修改后的值
#增加列族
alter '表名',NAME => '要增加的列族名',VERSIONS => 版本号
#删除列族
#方法一
alter '命名空间:表名',NAME => '要删除的列族',METHOD => 'delete'
#方法二
alter '命名空间:表名','delete' => 'f1'
#删除表
disable '命名空间:表名'
drop '命名空间:表名'
#添加/修改数据
put '命名空间:表名','行号','列族名:列名','数据'
#如果你put相同命名空间里的相同表的相同行号的相同列族名的相同列名不同数据
#那么原先的数据将会被覆盖掉,这就起到了修改的作用
#原理是hbase默认填写了一个时间戳
#查看数据
#查看一行
get '命名空间:表名','行号'
#查看一行里的某一列
get '命名空间:表名','行号',{COLUMN => '列族名:列名'}
#查看多个版本的数据,如果查看的版本数超过维护的版本数只能看到最近对应维护的版本数
get '命名空间:表名','行号',{COLUMN => '列族名:列名',VERSIONS => 数字(查看几个版本)}
#查看整张表数据
scan '命名空间:表名'
#查看从某一行到某一行数据(不包含结束行号的那一行数据,左闭右开)
scan '命名空间:表名',{STARTROW => '起始行号',STOPROW => '结束行号'}
#删除数据
#默认删除最新版本的数据
delete '命名空间:表名','行号','列族名:列名'
#删除所有版本
deleteall '命名空间:表名','行号','列族名:列名'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通