HBase安装与配置
前提是jdk,zookeeper,ssh都配置完成了
1 安装
官网地址:Index of /hbase
国内镜像:
# 从华为云镜像下载 HBase
wget https://repo.huaweicloud.com/apache/hbase/2.5.7/hbase-2.5.7-bin.tar.gz
1.1 解压
解压到指定路径
tar -zxf hbase-2.5.7-bin.tar.gz -C /usr/local
1.2 切换到 /usr/local
目录下,将文件重命名为hbase
cd /usr/local
mv hbase-2.5.7 hbase
1.3 配置环境变量
将HBase安装目录下的bin目录添加到系统的PATH环境变量中,这样不用切换到/usr/local/hbase目录下也可以启动HBase
vim ~/.bashrc
在.bashrc文件末尾输入以下配置信息,保存信息
export PATH=$PATH:/usr/local/hbase/bin
刷新文件使配置生效
source ~/.bashrc
2 配置HBase
先启动Zookeeper
zkServer.sh start
切换到HBase安装目录下的conf目录中
cd /usr/local/hbase/conf
2.1 配置单机模式
vim hbase-env.sh
- 配置hbase-env.sh
export JAVA_HOME=/opt/programs/jdk1.8.0_202
export HBASE_MANAGES_ZK=TRUE
- 配置hbase-site.xml
将 hbase.rootdir
的路径设置为 hdfs://ns/hbase
通过查看 Hadoop 的core-site.xml
文件来确定fs.defaultFS
的值,然后根据该值来设置hbase.rootdir
如果你的 Hadoop 没有配置高可用性(HA),且core-site.xml
中fs.defaultFS
的值为hdfs://localhost:9000
,那么hbase.rootdir
可以设置为hdfs://localhost:9000/hbase
。其中/hbase
是在 HDFS 上为 HBase 数据保留的目录,你也可以根据实际需求修改为其他目录,但需要确保该目录在 HDFS 上存在且 HBase 有写入权限。
如果你的 Hadoop 配置了高可用性(HA),则需要根据 HDFS 的命名服务名称来设置hbase.rootdir
。假设 HDFS 的命名服务名称为ns
,那么hbase.rootdir
可以设置为hdfs://ns/hbase
。
<!-- 1. 配置 HBase 连接的 ZooKeeper 集群地址(你的 ZooKeeper 在哪几个节点,就写哪几个) -->
<!-- 若 ZooKeeper 只在 hadoop01 启动,就写 hadoop01:2181;若多节点,用逗号分隔 -->
<property><name>hbase.zookeeper.quorum</name><value>hadoop01</value> <!-- 替换为你的 ZooKeeper 节点名,如 hadoop01,hadoop02 -->
</property><!-- 2. 配置 ZooKeeper 端口(默认 2181,与现有 ZooKeeper 一致) -->
<property><name>hbase.zookeeper.property.clientPort</name><value>2181</value>
</property><!-- 3. 禁用 HBase 自带的 ZooKeeper(关键:避免端口冲突) -->
<property><name>hbase.cluster.distributed</name><value>true</value> <!-- true 表示分布式模式,禁用自带 ZooKeeper;单机模式也可设为 true -->
</property><!-- 4. (补充)配置 HBase 在 HDFS 上的存储路径(与你之前 Hadoop HA 命名服务一致) -->
<!-- 你的 Hadoop HA 命名服务是 ns,所以路径为 hdfs://ns/hbase -->
<property><name>hbase.rootdir</name><value>hdfs://ns/hbase</value>
</property>
- 启动HBase
cd /usr/local/hbase
bin/start-hbase.sh
利用jps
命令进行查询
注:
如果出现无效变量名
在hbase-env.sh中添加
# 解决 Hadoop 3.x 与 HBase 2.x 的环境变量兼容问题
export HADOOP_HOME=/opt/programs/hadoop-3.2.4 # 你的 Hadoop 实际安装路径
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true # 禁用 HBase 自动加载 Hadoop 类路径
export HBASE_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native" # 指定 Hadoop 原生库路径
- 关闭HBase
bin/stop-hbase.sh
2.2 配置伪分布模式
- 配置hbase-env.sh
export JAVA_HOME=/opt/programs/jdk1.8.0_202
export HBASE_CLASSPATH=/opt/programs/hadoop-3.3.6/etc/hadoop
export HBASE_MANAGES_ZK=true
- 配置hbase-site.xml
地址和端口要根据自己的实际情况修改,我是在CentOS9下的workers文件里已经设置好了IP地址的映射关系
<property><name>hbase.rootdir</name><value>hdfs://hadoop01:9000/hbase</value></property><property><name>hbase.cluster.distributed</name><value>true</value></property>
- 启动HBase
登录ssh(根据自己设置的更改登录名称)
ssh hadoop01
切换至 /opt/programs/hadoop-3.3.6
目录下,让HDFS处于运行状态(根据自己的实际hadoop目录进行调整)
cd /opt/programs/hadoop-3.3.6
启动Hadoop
sbin/start-dfs.sh
切换到hbase目录下
cd /usr/local/hbase
启动HBase
bin/start-hbase.sh
启动成功后通过jps
查看进程
- 关闭HBase
bin/stop-hbase.sh
关闭Hadoop
cd /opt/programs/hadoop-3.3.6
sbin/stop-dfs.sh
HBase Shell操作
先启动zookeeper(所有节点都要启动)
zkServer.sh start
启动HBase
start-hbase.sh
关闭HBase
stop-hbase.sh
注:如果关闭HBase时出现很多(...)可以使用如下方法快速关闭
hbase-daemons.sh stop master
stop-hbase.sh
使用HBase Shell可以以命令行的方式与HBase交互。
/usr/local/hbase/bin/hbase shell
如下图所示即为启动成功:
可以用list和atatus或者创建一个test表测试一下是否能成功