HBase 是一个开源的、分布式 NoSQL 数据库,基于 Hadoop 的 HDFS,因此适合用于实时计算,拥有很好的计算处理能力。
HBase
下载
部署完毕 ZooKeeper 之后即可部署 HBase,在官网下载指定版。
wget https://archive.apache.org/dist/hbase/1.3.5/hbase-1.3.5-bin.tar.gz
解压到安装目录
sudo tar xf hbase-1.3.5-bin.tar.gz -C /opt/
执行用户授权
sudo chown -R $USER:$USER /opt/hbase-1.3.5/
配置环境变量
sudo vim /etc/profile.d/hadoop.sh
## 加入以下内容
export HBASE_HOME=/opt/hbase-1.3.5
export PATH=$HBASE_HOME/bin:$PATH
将环境变量发送至所有节点
sudo rsync -av /etc/profile.d/hadoop.sh root@hadoop2:/etc/profile.d/
sudo rsync -av /etc/profile.d/hadoop.sh root@hadoop3:/etc/profile.d/
生效环境变量或者重新登录终端
## 重载环境变量
source /etc/profile
配置 HBase
修改配置文件
cd $HBASE_HOME
vim conf/hbase-env.sh
## 解除以下参数行的注释并修改(注意根据实际情况修改)
export JAVA_HOME=/usr/java/jdk1.8.0_333-aarch64/
export HBASE_MANAGES_ZK=false
修改配置文件 conf/hbase-site.xml
删除已有的配置,然后写入以下内容:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop1:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop1,hadoop2,hadoop3</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/zookeeper-3.4.14/data</value>
</property>
</configuration>
小贴士:需要注意的是hbase.zookeeper.property.dataDir
的值需要与 Zookeeper 的zoo.cfg
中的dataDir
的值保持一致。
修改配置文件 conf/regionservers
为
hadoop2
hadoop3
创建配置文件 conf/backup-masters
添加内容
hadoop2
架构
Node Name | Master | Zookeeper | RegionServer |
---|---|---|---|
hadoop1 | yes | yes | no |
hadoop2 | backup | yes | yes |
hadoop3 | no | yes | yes |
分发到所有节点
sudo rsync -av /opt/hbase-1.3.5 root@hadoop2:/opt/
sudo rsync -av /opt/hbase-1.3.5 root@hadoop3:/opt/
启动集群
在启动集群前需要确认 HDFS 安全模式处于关闭状态(OFF)
$ hdfs dfsadmin -safemode get
Safe mode is OFF
启动集群
cd $HBASE_HOME
bin/start-hbase.sh
然后使用浏览器访问 http://hadoop1:16010
即可看到管理页面
测试集群
使用命令行客户端访问 HBase 数据库(双井号下行为实际执行的 hbase 命令,注意甄别)
$ hbase shell
Type "exit<RETURN>" to leave the HBase Shell
Version 1.3.5, rb59afe7b1dc650ff3a86034477b563734e8799a9, Wed Jun 5 15:57:14 PDT 2019
## 创建指定表单
hbase(main):001:0> create 'test', 'cf'
0 row(s) in 1.7140 seconds
=> Hbase::Table - test
## 列出指定表单
hbase(main):002:0> list 'test'
TABLE
test
1 row(s) in 0.0320 seconds
=> ["test"]
## 查询表单描述
hbase(main):003:0> describe 'test'
Table test is ENABLED
test
COLUMN FAMILIES DESCRIPTION
{NAME => 'cf', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP
_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMP
RESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '6553
6', REPLICATION_SCOPE => '0'}
1 row(s) in 0.0580 seconds
## 表单插入数据1
hbase(main):004:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.1650 seconds
## 表单插入数据2
hbase(main):005:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0260 seconds
## 表单插入数据3
hbase(main):006:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0250 seconds
## 扫描指定表单
hbase(main):007:0> scan 'test'
ROW COLUMN+CELL
row1 column=cf:a, timestamp=1671509413355, value=value1
row2 column=cf:b, timestamp=1671509418243, value=value2
row3 column=cf:c, timestamp=1671510138664, value=value3
3 row(s) in 0.0880 seconds
## 单行返回形式查询表单
hbase(main):008:0> get 'test', 'row1'
COLUMN CELL
cf:a timestamp=1671509413355, value=value1
1 row(s) in 0.0390 seconds
## 停用表单
hbase(main):009:0> disable 'test'
0 row(s) in 2.4030 seconds
## 启用表单
hbase(main):010:0> enable 'test'
0 row(s) in 1.2920 seconds
## 再次停用表单
hbase(main):011:0> disable 'test'
0 row(s) in 2.2690 seconds
## 删除表单
hbase(main):012:0> drop 'test'
0 row(s) in 1.3260 seconds
常见问题
a) 执行集群停止命令时长时间无响应
执行 stop-hbase.sh
时一直出现等待符(...),且长时间无响应时,在所有节点分别执行
ll /tmp/hbase-*.pid
可以查看节点运行的 hbase 实例类型,比如 master
, regionserver
然后根据实例的类型进行分别关闭
hbase-daemon.sh stop master
hbase-daemon.sh stop regionserver
附录
参考链接
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2022-12-04 10:14 AM