基于 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.mzph.cn/news/731911.shtml

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

相关文章

微信小程序onLoad加载定义好的函数

这里小程序开发中容易犯的错误-1写自定义目录标题 给客户做一个程序。需要在页面加载的时候在onLoad(options){}中加载定义好的函数&#xff0c;代码如下 onLoad(options) {get_week_()},运行时老报错 后来修改为正确的代码 onLoad(options) {this.get_week_()//必须加this},再…

YOLOv8优化策略:SPPF涨点篇 |引入YOLOv9的SPPELAN

🚀🚀🚀本文改进:SPP创新结合ELAN,来自于YOLOv9,助力YOLOv8,将SPPELAN代替原始的SPPF 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1.YOLOv9介绍 论文: 2402.13616.pdf (arxiv.org) 摘要: 如今…

Linux的top命令解析

Top命令是什么 TOP命令是Linux下常用的性能分析工具&#xff0c;能够实时显示系统中各个进程的资源占用状况。 TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系…

RT-DETR优化改进:下采样涨点篇 |引入YOLOv9的下采样ADown

🚀🚀🚀本文改进:YOLOv9的下采样ADown助力RT-DETR,将ADown添加在backbone和head处,提供多个yaml改进方法 🚀🚀🚀RT-DETR改进创新专栏:http://t.csdnimg.cn/vuQTz 🚀🚀🚀学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 🚀🚀🚀RT-DETR模型…

LeetCode Python - 41. 缺失的第一个正数

目录 题目答案运行结果 题目 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 解释&#xff1a…

Java List集合取交集的八种不同实现方式

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 在Java中&#xff0c;取两个List集合的交集可以通过多种方式实现&#xff0c;包括使用Java 8的Stream API、传统的for循环遍历、使…

KH-MCX-KWE-W

KH-MCX-KWE-W品牌: kinghelm(金航标)封装: 插件 描述: 镀金

试题 算法训练 强力党逗志芃

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 逗志芃励志要成为强力党&#xff0c;所以他将身上所以的技能点都洗掉了重新学技能。现在我们可以了解到&#xff0c;每个技能…

第七十九天 WAF攻防-漏洞发现协议代理池GobyAWVSXray

第79天 WAF攻防-漏洞发现&协议&代理池&Goby&AWVS&Xray 知识点&#xff1a; 1、Http/s&Sock5协议 2、Awvs Xray&Goby代理 3、Pxoxifier进程代理使用 4、Safedog&BT&Aliyun防护 演示案例&#xff1a; Awws漏扫-Sadedog-白名单-内置 Awws漏…

webpack5:基本概念整理

写在前头&#xff1a;这篇文章只是我个人在学习过程中对webpack文档的简单总结&#xff0c;更多详细信息请在官网阅读。 一、webpack是什么 webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具。当 webpack 处理应用程序时&#xff0c;它会在内部从一个或多个入口…

鸡肋的Git

1.前言 对于大多数开发人员来说&#xff0c;我们大多数在学习或者工作过程中只关注核心部分&#xff0c;比如说学习Java&#xff0c;可能对于大多数人而言一开始都是从Java基础学起&#xff0c;然后408&#xff0c;Spring&#xff0c;中间件等&#xff0c;当你发现很多高深的技…

开源的Java报表库JasperReports介绍

JasperReports 是一个流行的开源 Java 报表库&#xff0c;它允许开发人员创建丰富的、基于 Java 的报表&#xff0c;这些报表可以与多种数据源交互&#xff0c;并且可以很容易地集成到 Java 应用程序中。JasperReports 提供了丰富的功能&#xff0c;包括数据可视化、图表、子报…

Node.js与Webpack笔记(二)

上一篇&#xff1a;Node.js与Webpack笔记&#xff08;一&#xff09;-CSDN博客 Webpack模块打包工具 1.Webpack简介以及体验 webpack是一个静态模块打包工具&#xff0c;从入口构建依赖图&#xff0c;打包有关的模块&#xff0c;最后用于展示你的内容 静态模块&#xff1a;编写…

vue结合vue-electron创建应用程序

这里写自定义目录标题 安装electron第一种方式&#xff1a;vue init electron-vue第二种方式&#xff1a;vue add electron-builder 启动electron调试功能&#xff1a;background操作和使用1、覆盖窗口的菜单上下文、右键菜单2、监听关闭事件、阻止默认行为3、创建悬浮窗口4、窗…

css 背景图片居中显示

background 简写 background: #ffffff url(https://profile-avatar.csdnimg.cn/b9abdd57de464582860bf8ade52373b6_misnice.jpg) center center / 100% no-repeat;效果如图&#xff1a;

关于手机是否支持h264的问题的解决方案

目录 现象 原理 修改内容 现象 开始以为是手机不支持h264的编码 。机器人chatgpt一通乱扯。 后来检查了下手机&#xff0c;明显是有h264嘛。 终于搞定&#xff0c;不枉凌晨三点起来思考 原理 WebRTC 默认使用的视频编码器是VP8和VP9&#xff0c;WebRTC内置了这两种编码器…

Centos 安装 redis【最简单】

Centos7 使⽤ yum 安装 ⾸先安装 scl 源, 再安装 redis &#xff08;因为 Centos7 yum 提供的软件包只有 3.0 版本的 Redis &#xff0c;太老了&#xff0c;我们要安装 redis 5 系列的&#xff09; yum install centos-release-scl-rh yum install rh-redis5-redis 创建符号…

15-单片机烧录FreeTOS操作系统后,程序的执行流程

任务创建 1、在系统上电后&#xff0c;第一个执行的是启动文件由汇编语言编写的复位函数 通过复位函数来初始化系统的时钟&#xff0c;然后再执行__main,初始化系统的堆和栈&#xff0c;然后跳转到main函数 2、在main函数中可以直接进行任务创建操作 因为在FreeRTOS中会自动…

GSEA -- 学习记录

文章目录 brief统计学原理部分其他注意事项转录组部分单细胞部分 brief 上一篇学习记录写了ORA&#xff0c;其中ORA方法只关心差异表达基因而不关心其上调、下调的方向&#xff0c;也许同一条通路里既有显著高表达的基因&#xff0c;也有显著低表达的基因&#xff0c;因此最后…

3.7号freeRtoS

1. 串口通信 配置串口为异步通信 设置波特率&#xff0c;数据位&#xff0c;校验位&#xff0c;停止位&#xff0c;数据的方向 同步通信 在同步通信中&#xff0c;数据的传输是在发送端和接收端之间通过一个共享的时钟信号进行同步的。这意味着发送端和接收端的时钟需要保持…