基于 HBase Phoenix 构建实时数仓(2)—— HBase 完全分布式安装

目录

一、开启 HDFS 机柜感知

1. 增加 core-site.xml 配置项

2. 创建机柜感知脚本

3. 创建机柜配置信息文件

4. 分发相关文件到其它节点

5. 重启 HDFS 使机柜感知生效

二、主机规划

三、安装配置 HBase 完全分布式集群

1. 在所有节点上配置环境变量

2. 解压、配置环境

3. 修改 $HBASE_HOME/conf/regionservers 文件

4. 创建 HBase 使用的临时目录

5. 修改 HBase 配置文件

6. 创建备用主节点文件

7. 分发配置文件到其它节点

四、启动 HBase 集群

1. 启动 HBase

2. 查看 HBase 相关进程

3. 查看 web 页面

4. 查看 HBase 在 Zookeeper 中的 znode

五、安装验证

1. 进入 hbase shell 查看状态及简单读写测试

2. 自动切换测试

(1)故障模拟

(2)查看状态

(3)故障恢复

(5)查看状态

(6)再次自动切换

参考:


        完全分布式 HBase 集群的运行依赖于 Zookeeper 和 Hadoop,在前一篇中已经详细介绍了他们的安装部署及运行,参见“基于 HBase & Phoenix 构建实时数仓(1)—— Hadoop HA 安装部署”。本篇继续介绍在相同主机环境下安装配置完全分布式 HBase 集群。

一、开启 HDFS 机柜感知

        HBase 中的数据存储在 HDFS 上,为了优化性能,首先开启 HDFS 的机柜感知功能。在 node1 上执行下面的操作步骤。

1. 增加 core-site.xml 配置项

# 编辑 $HADOOP_HOME/etc/hadoop/core-site.xml 文件
vim $HADOOP_HOME/etc/hadoop/core-site.xml# 增加配置项
<property><name>topology.script.file.name</name><value>/root/hadoop-3.3.6/etc/hadoop/topology.sh</value>
</property>

2. 创建机柜感知脚本

# 编辑 /root/hadoop-3.3.6/etc/hadoop/topology.sh 文件
vim /root/hadoop-3.3.6/etc/hadoop/topology.sh

        内容如下:

#!/bin/bash
# 此处是你的机架配置文件 topology.sh 所在目录
HADOOP_CONF=/root/hadoop-3.3.6/etc/hadoop
while [ $# -gt 0 ] ;
do# 脚本第一个参数节点 ip 或者主机名称赋值给 nodeArgnodeArg=$1# 以只读的方式打开机架配置文件exec<${HADOOP_CONF}/topology.data# 声明返回值临时变量result=""# 开始逐行读取while read linedo# 赋值行内容给 ar,通过这种 变量=( 值 )的方式赋值,下面可以通过数组的方式取出每个词ar=( $line )# 判断输入的主机名或者 ip 是否和该行匹配if [ "${ar[0]}" = "$nodeArg" ]||[ "${ar[1]}" = "$nodeArg" ]then# 将机架信息赋值给 resultresult="${ar[2]}"fidoneshift# -z 判断字符串长度是否为0,不为0输出实际机架,为0返回默认机架信息if [ -z "$result" ]thenecho -n "/default-rack"elseecho -n "$result"fi
done

        修改文件属性为可执行:

chmod 755 /root/hadoop-3.3.6/etc/hadoop/topology.sh

3. 创建机柜配置信息文件

# 编辑 /root/hadoop-3.3.6/etc/hadoop/topology.data 文件
vim /root/hadoop-3.3.6/etc/hadoop/topology.data

        内容如下:

172.18.4.126 node1 /dc1/rack1
172.18.4.188 node2 /dc1/rack1
172.18.4.71 node3 /dc1/rack1
172.18.4.86 node4 /dc1/rack1

4. 分发相关文件到其它节点

scp /root/hadoop-3.3.6/etc/hadoop/core-site.xml node2:/root/hadoop-3.3.6/etc/hadoop/
scp /root/hadoop-3.3.6/etc/hadoop/topology.sh node2:/root/hadoop-3.3.6/etc/hadoop/
scp /root/hadoop-3.3.6/etc/hadoop/topology.data node2:/root/hadoop-3.3.6/etc/hadoop/scp /root/hadoop-3.3.6/etc/hadoop/core-site.xml node3:/root/hadoop-3.3.6/etc/hadoop/
scp /root/hadoop-3.3.6/etc/hadoop/topology.sh node3:/root/hadoop-3.3.6/etc/hadoop/
scp /root/hadoop-3.3.6/etc/hadoop/topology.data node3:/root/hadoop-3.3.6/etc/hadoop/scp /root/hadoop-3.3.6/etc/hadoop/core-site.xml node4:/root/hadoop-3.3.6/etc/hadoop/
scp /root/hadoop-3.3.6/etc/hadoop/topology.sh node4:/root/hadoop-3.3.6/etc/hadoop/
scp /root/hadoop-3.3.6/etc/hadoop/topology.data node4:/root/hadoop-3.3.6/etc/hadoop/

5. 重启 HDFS 使机柜感知生效

# node1 执行
stop-dfs.sh
# node1、node2、node3 执行
hdfs --daemon stop journalnode
hdfs --daemon start journalnode
# node1 执行
start-dfs.sh

        执行 hdfs dfsadmin -printTopology 打印机架信息,可以看到集群已经按照配置感应到节点机架位置。

[root@vvml-yz-hbase-test~]#hdfs dfsadmin -printTopology
Rack: /dc1/rack1172.18.4.71:9866 (node3) In Service172.18.4.188:9866 (node2) In Service172.18.4.86:9866 (node4) In Service[root@vvml-yz-hbase-test~]#

二、主机规划

        所需安装包:HBase-2.5.7

        下表描述了四个节点上分别将会运行的相关进程。简便起见,安装部署过程中所用的命令都使用操作系统的 root 用户执行。

                            节点

进程

node1

node2

node3

node4

HMaster

*

*

HRegionServer

*

*

*

三、安装配置 HBase 完全分布式集群

1. 在所有节点上配置环境变量

# 编辑 /etc/profile 文件
vim /etc/profile# 添加下面两行
export HBASE_HOME=/root/hbase-2.5.7-hadoop3/
export PATH=$HBASE_HOME/bin:$PATH# 加载生效
source /etc/profile

        在 node1 上执行以下步骤。

2. 解压、配置环境

# 解压
tar -zxvf hbase-2.5.7-hadoop3-bin.tar.gz# 编辑 $HBASE_HOME/conf/hbase-env.sh 文件设置 HBase 运行环境
vim $HBASE_HOME/conf/hbase-env.sh# 在文件末尾添加
export JAVA_HOME=/usr/java/jdk1.8.0_202-amd64
export HBASE_LOG_DIR=${HBASE_HOME}/logs
export HBASE_MANAGES_ZK=false
export HBASE_CLASSPATH=/root/hadoop-3.3.6/etc/hadoop
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"
export HBASE_PID_DIR=${HBASE_HOME}/tmp
  • HBASE_MANAGES_ZK 设置成 true,则使用 HBase 自带的 Zookeeper 进行管理,只能实现单机模式,常用于测试环境。设为false,启动独立的 Zookeeper。
  • HBASE_CLASSPATH 用于引导 HBase 找到 Hadoop 集群,一定要改成 Hadoop 的配置文件目录,不然无法识别 Hadoop 集群名称。
  • HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP 设置不扫描 hadoop 的 jar。如果扫描很容易出现异常 object is not an instance of declaring class。

3. 修改 $HBASE_HOME/conf/regionservers 文件

        将下面内容覆盖文件,默认只有 localhost。

# 编辑 $HBASE_HOME/conf/regionservers 文件
vim $HBASE_HOME/conf/regionservers

        内容如下:

node2
node3
node4

4. 创建 HBase 使用的临时目录

mkdir $HBASE_HOME/tmp

5. 修改 HBase 配置文件

# 备份原始文件
cp $HBASE_HOME/conf/hbase-site.xml $HBASE_HOME/conf/hbase-site.xml.bak# 编辑 $HBASE_HOME/conf/hbase-site.xml 文件
vim $HBASE_HOME/conf/hbase-site.xml

        配置如下:

<configuration><property><name>hbase.cluster.distributed</name><value>true</value>
</property><property><name>hbase.rootdir</name><value>hdfs://mycluster/hbase</value>
</property><property><name>hbase.tmp.dir</name><value>/root/hbase-2.5.7-hadoop3/tmp</value>
</property><property><name>hbase.zookeeper.quorum</name><value>node1:2181,node2:2181,node3:2181</value>
</property><!-- Zookeeper元数据快照的存储目录(需要和Zookeeper的zoo.cfg 配置文件中的属性一致)-->
<property><name>hbase.zookeeper.property.dataDir</name><value>/var/lib/zookeeper/data</value>
</property><property><name>hbase.unsafe.stream.capability.enforce</name><value>false</value>
</property><property><name>hbase.unsafe.stream.capability.enforce</name><value>true</value>
</property><property><name>hbase.wal.provider</name><value>filesystem</value>
</property><!-- 为使用 Phoenix,hbase.client.keyvalue.maxsize 不能设置为 0 -->
<property><name>hbase.client.keyvalue.maxsize</name><value>10485760</value>
</property><property><name>hbase.master.distributed.log.splitting</name><value>true</value>
</property><!-- 一次 RPC 请求读取的数据行数,该参数设置有助于优化读取效率 -->
<property><name>hbase.client.scanner.caching</name><value>5000</value>
</property><!-- 当分区中 StoreFile 大小超过该值时,该分区可能会被拆分(受是否开启了自动 split 影响),一般线上集群会关闭 split 以免影响性能,因此会将该值设置的比较大,如 100G -->
<property><name>hbase.hregion.max.filesize</name><value>107374182400</value>
</property><property><name>hbase.hregion.memstore.flush.size</name><value>268435456</value>
</property><property><name>hbase.regionserver.handler.count</name><value>200</value>
</property><property><name>hbase.regionserver.global.memstore.lowerLimit</name><value>0.38</value>
</property><property><name>hbase.hregion.memstore.block.multiplier</name><value>8</value>
</property><property><name>hbase.server.thread.wakefrequency</name><value>1000</value>
</property><property><name>hbase.rpc.timeout</name><value>400000</value>
</property><!-- 当 HStore 的 StoreFile 数量超过该配置时,MemStore 刷新到磁盘之前需要进行拆分(split)或压缩(compact),除非超过 hbase.hstore.blockingWaitTime 配置的时间。因此,当禁止 自动主压缩(major compact)的时候该配置项一定要注意配置一个较大的值 -->
<property><name>hbase.hstore.blockingStoreFiles</name><value>5000</value>
</property><property><name>hbase.client.scanner.timeout.period</name><value>1000000</value>
</property><property><name>zookeeper.session.timeout</name><value>180000</value>
</property><property><name>hbase.regionserver.optionallogflushinterval</name><value>5000</value>
</property><property><name>hbase.client.write.buffer</name><value>5242880</value>
</property><!-- 当 HStore 的 StoreFile 数量超过该配置的值时,可能会触发压缩,该值不能设置得过大,否则会影响性能,一般建议设置为 3~5 -->
<property><name>hbase.hstore.compactionThreshold</name><value>5</value>
</property><property><name>hbase.hstore.compaction.max</name><value>12</value>
</property><!-- 将该值设置为 1 以禁止线上表的自动拆分(split),可以在建表的时候预分区或者之后手动分区 -->
<property><name>hbase.regionserver.regionSplitLimit</name><value>1</value>
</property><property><name>hbase.regionserver.thread.compaction.large</name><value>5</value>
</property><property><name>hbase.regionserver.thread.compaction.small</name><value>8</value>
</property><property><name>hbase.master.logcleaner.ttl</name><value>3600000</value>
</property><!-- 配置主压缩的时间间隔,0 表示禁止自动主压缩,如果是线上响应时间敏感的应用,则建议禁止而等到非高峰期手动压缩,否则很可能导致 HBase 响应超时而引起性能抖动 -->
<property><name>hbase.hregion.majorcompaction</name><value>0</value>
</property><property><name>dfs.client.hedged.read.threadpool.size</name><value>20</value>  <!-- 20 threads -->
</property><property><name>dfs.client.hedged.read.threshold.millis</name><value>5000</value>  <!-- 10 milliseconds -->
</property></configuration>

6. 创建备用主节点文件

# 编辑 $HBASE_HOME/conf/backup-masters 文件
vim $HBASE_HOME/conf/backup-masters

        内容如下:

node4

        注意:该文件不能写注释,因为启动时会把注释的那行当成服务器列表而导致启动失败。

7. 分发配置文件到其它节点

scp -r $HBASE_HOME node2:/root/
scp -r $HBASE_HOME node3:/root/
scp -r $HBASE_HOME node4:/root/

四、启动 HBase 集群

1. 启动 HBase

# 在 node1 节点上执行
start-hbase.sh# 输出
[root@vvml-yz-hbase-test~]#start-hbase.sh
running master, logging to /root/hbase-2.5.7-hadoop3//logs/hbase-root-master-vvml-yz-hbase-test.172.18.4.126.out
node2: running regionserver, logging to /root/hbase-2.5.7-hadoop3/bin/../logs/hbase-root-regionserver-vvml-yz-hbase-test.172.18.4.188.out
node3: running regionserver, logging to /root/hbase-2.5.7-hadoop3/bin/../logs/hbase-root-regionserver-vvml-yz-hbase-test.172.18.4.71.out
node4: running regionserver, logging to /root/hbase-2.5.7-hadoop3/bin/../logs/hbase-root-regionserver-vvml-yz-hbase-test.172.18.4.86.out
node4: running master, logging to /root/hbase-2.5.7-hadoop3/bin/../logs/hbase-root-master-vvml-yz-hbase-test.172.18.4.86.out
[root@vvml-yz-hbase-test~]#

2. 查看 HBase 相关进程

        用 jps 可以看到 HMaster、HRegionServer 进程:

# node1
[root@vvml-yz-hbase-test~]#jps
578 NameNode
32724 JournalNode
9621 QuorumPeerMain
3654 HMaster
15563 ResourceManager
13645 JobHistoryServer
32079 DFSZKFailoverController
4367 Jps
[root@vvml-yz-hbase-test~]## node2
[root@vvml-yz-hbase-test~]#jps
1249 DataNode
17219 NodeManager
4291 HRegionServer
1925 JournalNode
4969 Jps
15007 QuorumPeerMain
[root@vvml-yz-hbase-test~]## node3
[root@vvml-yz-hbase-test~]#jps
5316 QuorumPeerMain
12452 DataNode
13144 JournalNode
7483 NodeManager
15356 HRegionServer
16030 Jps
[root@vvml-yz-hbase-test~]## node4
[root@vvml-yz-hbase-test~]#jps
8352 NodeManager
22480 HRegionServer
19857 NameNode
10531 ResourceManager
23555 Jps
19206 DFSZKFailoverController
22599 HMaster
19116 DataNode
[root@vvml-yz-hbase-test~]#

3. 查看 web 页面

        web地址:
http://node1:16010/
http://node4:16010/

        如下图所示,node1 为 Master,node4 为 Backup Master。

4. 查看 HBase 在 Zookeeper 中的 znode

zkCli.sh -server node1:2181
...
[zk: node1:2181(CONNECTED) 0] ls /hbase
[backup-masters, draining, flush-table-proc, hbaseid, master, master-maintenance, meta-region-server, namespace, online-snapshot, rs, running, splitWAL, switch, table]
[zk: node1:2181(CONNECTED) 1] 

五、安装验证

1. 进入 hbase shell 查看状态及简单读写测试

# 进入 hbase shell
hbase shell
# 查看状态
status
# 创建测试表
create 'test', 'cf'
# 列出表
list 'test'
# 查看表结构
describe 'test'
# 插入数据
put 'test', 'row1', 'cf:a', 'value1'
put 'test', 'row2', 'cf:b', 'value2'
put 'test', 'row3', 'cf:c', 'value3'
# 全表扫描
scan 'test'
# 用 rowkey 查询
get 'test', 'row1'
# 退出 hbase shell
exit

        输出:

[root@vvml-yz-hbase-test~]#hbase shell
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
Version 2.5.7-hadoop3, r6788f98356dd70b4a7ff766ea7a8298e022e7b95, Thu Dec 14 16:16:10 PST 2023
Took 0.0011 seconds                                                                                                                       
hbase:001:0> status
1 active master, 1 backup masters, 3 servers, 0 dead, 0.6667 average load
Took 0.4587 seconds                                                                                                                       
hbase:002:0> create 'test', 'cf'
Created table test
Took 0.6557 seconds                                                                                                                       
=> Hbase::Table - test
hbase:003:0> list 'test'
TABLE                                                                                                                                     
test                                                                                                                                      
1 row(s)
Took 0.0209 seconds                                                                                                                       
=> ["test"]
hbase:004:0> describe 'test'
Table test is ENABLED                                                                                                                     
test, {TABLE_ATTRIBUTES => {METADATA => {'hbase.store.file-tracker.impl' => 'DEFAULT'}}}                                                  
COLUMN FAMILIES DESCRIPTION                                                                                                               
{NAME => 'cf', INDEX_BLOCK_ENCODING => 'NONE', VERSIONS => '1', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FORE
VER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', IN_MEMORY => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'tru
e', BLOCKSIZE => '65536 B (64KB)'}                                                                                                        1 row(s)
Quota is disabled
Took 0.1227 seconds                                                                                                                       
hbase:005:0> put 'test', 'row1', 'cf:a', 'value1'
Took 0.0683 seconds                                                                                                                       
hbase:006:0> put 'test', 'row2', 'cf:b', 'value2'
Took 0.0053 seconds                                                                                                                       
hbase:007:0> put 'test', 'row3', 'cf:c', 'value3'
Took 0.0093 seconds                                                                                                                       
hbase:008:0> scan 'test'
ROW                                 COLUMN+CELL                                                                                           row1                               column=cf:a, timestamp=2024-03-07T11:20:22.299, value=value1                                          row2                               column=cf:b, timestamp=2024-03-07T11:20:29.270, value=value2                                          row3                               column=cf:c, timestamp=2024-03-07T11:20:33.538, value=value3                                          
3 row(s)
Took 0.0241 seconds                                                                                                                       
hbase:009:0> get 'test', 'row1'
COLUMN                              CELL                                                                                                  cf:a                               timestamp=2024-03-07T11:20:22.299, value=value1                                                       
1 row(s)
Took 0.0071 seconds                                                                                                                       
hbase:010:0> exit
[root@vvml-yz-hbase-test~]#

        可以看到,现在是一个 active master,一个 backup masters,三个 RegionServer。

2. 自动切换测试

(1)故障模拟

# 在 active master 节点上(这里是 node1),kill 掉 HMaster 进程
jps|grep HMaster|awk '{print $1}'|xargs kill -9

(2)查看状态

[root@vvml-yz-hbase-test~]#hbase shell
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
Version 2.5.7-hadoop3, r6788f98356dd70b4a7ff766ea7a8298e022e7b95, Thu Dec 14 16:16:10 PST 2023
Took 0.0010 seconds                                                                                                                       
hbase:001:0> status
1 active master, 0 backup masters, 3 servers, 0 dead, 1.0000 average load
Took 0.4730 seconds                                                                                                                       
hbase:002:0> put 'test', 'row4', 'cf:d', 'value4'
Took 0.1254 seconds                                                                                                                       
hbase:003:0> scan 'test'
ROW                                 COLUMN+CELL                                                                                           row1                               column=cf:a, timestamp=2024-03-07T11:20:22.299, value=value1                                          row2                               column=cf:b, timestamp=2024-03-07T11:20:29.270, value=value2                                          row3                               column=cf:c, timestamp=2024-03-07T11:20:33.538, value=value3                                          row4                               column=cf:d, timestamp=2024-03-07T11:26:55.140, value=value4                                          
4 row(s)
Took 0.0244 seconds                                                                                                                       
hbase:004:0> exit
[root@vvml-yz-hbase-test~]#

        现在只有一个 active master,数据正常读写。

(3)故障恢复

# node1 上执行
hbase-daemon.sh start master
jps

        输出:

[root@vvml-yz-hbase-test~]#hbase-daemon.sh start master
running master, logging to /root/hbase-2.5.7-hadoop3//logs/hbase-root-master-vvml-yz-hbase-test.172.18.4.126.out
[root@vvml-yz-hbase-test~]#jps
578 NameNode
7138 Jps
32724 JournalNode
9621 QuorumPeerMain
15563 ResourceManager
13645 JobHistoryServer
6781 HMaster
32079 DFSZKFailoverController
[root@vvml-yz-hbase-test~]#

(5)查看状态

[root@vvml-yz-hbase-test~]#hbase shell
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
Version 2.5.7-hadoop3, r6788f98356dd70b4a7ff766ea7a8298e022e7b95, Thu Dec 14 16:16:10 PST 2023
Took 0.0011 seconds                                                                                                                       
hbase:001:0> status
1 active master, 1 backup masters, 3 servers, 0 dead, 1.0000 average load
Took 5.4624 seconds                                                                                                                       
hbase:002:0> status 'detailed'
version 2.5.7-hadoop3
0 regionsInTransition
active master:  node4:16000 1709780353589RpcServer.priority.RWQ.Fifo.write.handler=0,queue=0,port=16000: status=Waiting for a call, state=WAITING, startTime=1709781875067, completionTime=-1RpcServer.priority.RWQ.Fifo.write.handler=1,queue=0,port=16000: status=Waiting for a call, state=WAITING, startTime=1709781875221, completionTime=-1RpcServer.default.FPBQ.Fifo.handler=199,queue=19,port=16000: status=Servicing call from 172.18.4.126:36280: GetClusterStatus, state=RUNNING, startTime=1709781969214, completionTime=-1
1 backup mastersnode1:16000 1709782204055
master coprocessors: []
3 live serversnode2:16020 1709780352218
...node3:16020 1709780355334
...node4:16020 1709780353541
...
0 dead servers
Took 0.0275 seconds                                                                                                                       
=> #<Java::JavaUtil::Collections::UnmodifiableRandomAccessList:0x7db162f2>
hbase:003:0> exit
[root@vvml-yz-hbase-test~]#

        可以看到,现在 node1 和 node4 互换了角色,node4 为 active master,node1 为 backup master,三个 RegionServer 正常。

(6)再次自动切换

# node4 上执行
jps|grep HMaster|awk '{print $1}'|xargs kill -9# 查看状态
[root@vvml-yz-hbase-test~]#hbase shell
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
Version 2.5.7-hadoop3, r6788f98356dd70b4a7ff766ea7a8298e022e7b95, Thu Dec 14 16:16:10 PST 2023
Took 0.0011 seconds                                                                                                                       
hbase:001:0> status
1 active master, 0 backup masters, 3 servers, 0 dead, 1.0000 average load
Took 5.4625 seconds                                                                                                                       
hbase:002:0> exit
[root@vvml-yz-hbase-test~]## node4 上执行
hbase-daemon.sh start master# 查看状态
[root@vvml-yz-hbase-test~]#hbase shell
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
Version 2.5.7-hadoop3, r6788f98356dd70b4a7ff766ea7a8298e022e7b95, Thu Dec 14 16:16:10 PST 2023
Took 0.0010 seconds                                                                                                                       
hbase:001:0> status 'detailed'
version 2.5.7-hadoop3
0 regionsInTransition
active master:  node1:16000 1709782204055RpcServer.priority.RWQ.Fifo.write.handler=0,queue=0,port=16000: status=Waiting for a call, state=WAITING, startTime=1709782709881, completionTime=-1RpcServer.priority.RWQ.Fifo.write.handler=1,queue=0,port=16000: status=Waiting for a call, state=WAITING, startTime=1709782709895, completionTime=-1RpcServer.default.FPBQ.Fifo.handler=199,queue=19,port=16000: status=Servicing call from 172.18.4.86:39042: GetClusterStatus, state=RUNNING, startTime=1709782750795, completionTime=-1
1 backup mastersnode4:16000 1709782808170
master coprocessors: []
3 live serversnode2:16020 1709780352218
...node3:16020 1709780355334
...node4:16020 1709780353541
...
0 dead servers
Took 0.4674 seconds                                                                                                                       
=> #<Java::JavaUtil::Collections::UnmodifiableRandomAccessList:0x28bd5015>
hbase:002:0> put 'test', 'row5', 'cf:e', 'value5'
Took 0.1138 seconds                                                                                                                       
hbase:003:0> scan 'test'
ROW                                 COLUMN+CELL                                                                                           row1                               column=cf:a, timestamp=2024-03-07T11:20:22.299, value=value1                                          row2                               column=cf:b, timestamp=2024-03-07T11:20:29.270, value=value2                                          row3                               column=cf:c, timestamp=2024-03-07T11:20:33.538, value=value3                                          row4                               column=cf:d, timestamp=2024-03-07T11:26:55.140, value=value4                                          row5                               column=cf:e, timestamp=2024-03-07T11:41:18.171, value=value5                                          
5 row(s)
Took 0.0293 seconds                                                                                                                       
hbase:004:0> exit
[root@vvml-yz-hbase-test~]#

        可以看到,现在 node1 和 node4 再次互换了角色,node1 为 active master,node4 为 backup master,三个 RegionServer 正常,数据正常读写。

参考:

  • Hadoop3.x 机架感知机制与配置
  • 大数据开源框架环境搭建(五)——Hbase完全分布式集群的安装部署
  • Apache HBase ™ Reference Guide
     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/272291.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

瑞_Redis_短信登录(一)

文章目录 项目介绍1 短信登录1.1 项目准备1.1.1 导入SQL1.1.2 导入后端项目1.1.3 导入前端项目 &#x1f64a; 前言&#xff1a;本文章为瑞_系列专栏之《Redis》的实战篇的短信登录章节的项目准备小节。由于博主是从B站黑马程序员的《Redis》学习其相关知识&#xff0c;所以本系…

2023年12月CCF-GESP编程能力等级认证Python编程七级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录・点这里 一、单选题(每题 2 分,共 30 分) 第1题 假设变量 x 为 float 类型,如果下面代码输入为 100,输出最接近( )。 A.0 B.-5 C.-8 D.8 答案:B 第2题 对于下面动态规划方法实现的函数,以下选项中…

简单BFF架构设计

又到周五了有了一个小时的闲暇时间简单写点东西&#xff0c;介绍一个简单的BFF的架构。BFF:Backends For Frontends,其实现在是个比较常见的前端架构设计的方案&#xff0c;其最大的优势便在于前端可以高度自由的在Node层做一些server端才可以做的东西&#xff0c;比如SSR、登录…

Vue保姆级项目教程:十万字零基础开发信贷管理系统!

项目简介与搭建过程 项目简介 需求背景 信贷管理系统是一种用于银行、金融机构或其他借贷组织用于管理信贷流程的软件系统。它可以帮助机构管理贷款申请、贷款审批、合同管理等相关流程,提高信贷业务的效率和准确性。 需求描述 本需求文档旨在定义信贷管理系统的功能和特…

代码随想录训练营第四天|面试题02.07链表相交

题目&#xff1a; 面试题 02.07. 链表相交 已解答 简单 相关标签 相关企业 提示 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目…

设计模式(工厂模式)

设计模式&#xff08;工厂模式&#xff09; 一、工厂模式介绍 在工厂模式中&#xff0c;父类决定生成示例的方式&#xff0c;但不决定所要生成的具体的类&#xff0c;具体的处理部分交给子类负责。这样就可以将生成示例的框架和生成示例的类解耦。 二、示例程序 以下示例程…

ARM中汇编语言的学习(加法、乘法、除法、左移、右移、按位与等多种命令操作实例以及ARM的 N、Z、C、V 标志位的解释)

汇编概述 汇编需要学习的大致框架如下&#xff1a; 汇编中的符号 1.指令&#xff1b;能够北嘁肷梢惶?2bit机器码&#xff0c;并且能够被cpui识别和执行 2.伪指令&#xff1a;本身不是指令&#xff0c;编译器可以将其替换成若干条指令 3.伪操作&#xff1a;不会生成指令…

Kafka | SpringBoot集成Kafka

SpringBoot集成Kafka 一、前言二、项目1. pom2. application.properties4. 消息生产者-测试5. 消息消费者 三、启动测试四、有总结的不对的地方/或者问题 请指正, 我在努力中 一、前言 该文章中主要对SpringBoot 集成Kafka 主要是 application.properties 与 pom坐标就算集成完…

HTML5基础2

drag 可以把拖放事件拆分成4个步骤 设置元素为可拖放。为了使元素可拖动&#xff0c;把 draggable 属性设置为 true 。 <img draggable"true"> 拖动什么。ondragstart 和 setData() const dragestart (ev)>{ev.dataTransfer.setData(play,ev.target.id)} …

[云原生] k8s之存储卷

一、emptyDir存储卷 当Pod被分配给节点时&#xff0c;首先创建emptyDir卷&#xff0c;并且只要该Pod在该节点上运行&#xff0c;该卷就会存在。正如卷的名字所述&#xff0c;它最初是空的。Pod 中的容器可以读取和写入emptyDir卷中的相同文件&#xff0c;尽管该卷可以挂载到每…

如何不丢精度保存PPT中的图片,实测有效

1.在powerpoint软件中 文件-》选项 -》高级-》设置为不压缩&#xff0c;且默认输出为最高 2.导入对应图片后&#xff0c;右键导出图片&#xff0c;选择.emf文件 3.使用windows自带的画图工具打开.emf文件&#xff0c;ctrls另存为.png文件 此方法亲测可以生成清晰度很高的图片

python:布伊山德U检验(Buishand U test,BUT)突变点检测(以NDVI时间序列为例)

作者:CSDN @ _养乐多_ 本文将介绍布伊山德U检验(Buishand U test,BUT)突变点检测代码。以 NDVI 时间序列为例。输入数据可以是csv,一列NDVI值,一列时间。代码可以扩展到遥感时间序列突变检测(突变年份、突变幅度等)中。 结果如下图所示, 文章目录 一、准备数据二、…

【JavaEE进阶】 @Transactional详解

文章目录 &#x1f343;前言&#x1f332;rollbackFor&#xff08;异常回滚属性&#xff09;&#x1f384;事务隔离级别&#x1f6a9;MySQL事务隔离级别&#x1f6a9;Spring事务隔离级别 &#x1f38b;Spring事务传播机制&#x1f6a9;什么是事务传播机制&#x1f6a9;事务有哪…

spark 实验二 RDD编程初级实践

目录 一. pyspark交互式编程示例&#xff08;学生选课成绩统计&#xff09; 该系总共有多少学生&#xff1b; 该系DataBase课程共有多少人选修&#xff1b; 各门课程的平均分是多少&#xff1b; 使用累加器计算共有多少人选了DataBase这门课。 二.编写独立应用程序实现数…

关于Python读取Excel表格中的内容

1、准备 首先准备好Excel表&#xff0c;并向里面填充好内容 2、相关算法 import pandas as pd# file_path rE:\data.xlsx # r对路径进行转义&#xff0c;windows需要 file_path rdata.xlsx# 这行代码括号里的head0&#xff0c;表示excel文件中第一行是表头&#xff0c;…

解决ChatGPT发送消息没有反应

ChatGPT发消息没反应 今天照常使用ChatGPT来帮忙码代码&#xff0c;结果发现发出去的消息完全没有反应&#xff0c;即不给我处理&#xff0c;也没有抱任何的错误&#xff0c;按浏览器刷新&#xff0c;看起来很正常&#xff0c;可以查看历史对话&#xff0c;但是再次尝试还是一…

MySQL安装使用(mac)

目录 一、下载MySQL 二、环境变量 三、启动 MySql 四、初始化密码设置 一、下载MySQL 打开 MySql 官方下载页面 我是macOS12&#xff0c;所以选择了8.0.30 下载完成之后&#xff0c;打开安装&#xff0c;一直下一步安装完成&#xff0c;在最后安装完成时&#xff0c;会弹出…

《赵玉平说职场智慧》读书笔记

目录 一、宋江是如何成为笼络人心的领导 二、给你一个干的理由——宋江的精神激励策略 三、团队如何应对这种多样化的挑战 帮领导解决难题 帮领导打退强敌 替领导四处出席 帮领导做好杂事 帮领导打响名气 四、小人难养&#xff0c;小心唯上 五、如何拒绝&#xff1f; …

Python和Google Colab进行卫星图像二维小波变化和机器学习

2D 小波分解是图像处理中的一种流行技术,使用不同的滤波器将图像分解为不同的频率分量(“近似”和“细节”系数)。该技术对于各种图像处理任务特别有用,例如压缩、去噪、特征提取和边缘检测。 在本文中,我们将演示如何在 Google Colab 中使用 Python 下载高分辨率样本卫星…

什么是MAE和MSE?

平均绝对误差&#xff08;Mean Absolute Error&#xff0c;MAE&#xff09;和平均方差误差&#xff08;Mean Squared Error&#xff0c;MSE&#xff09;是常用的评价回归模型性能的指标。它们用于衡量模型预测值与真实值之间的差异。 在深度学习领域&#xff0c;MAE 和 MSE 是…