文章目录
Hadoop HA 下安装 HBase
上传并解压HBase安装包
将安装包上传到centos01
下的/opt/softwares目录并将其解压到/opt/modules:
tar -axf hbase-1.2.6.1-bin.tar.gz -C /opt/modules
hbase-env.sh
文件配置
修改HBase安装目录下的conf/hbase-env.sh,配置HBase相关JDK,加入以下代码:
export JAVA_HOME=/opt/modules/jdk1.8.0_161
export HBASE_PID_DIR=/opt/modules/data/hbase/pids
export HBASE_MANAGES_ZK=false
mkdir data/hbase/pids -p
hbase-site.xml
文件配置
修改HBase安装目录下的conf/hbase-site.xml:
<configuration>
<!--需要与HDFS NameNode端口一致-->
<property>
<name>hbase.rootdir</name>
<value>hdfs://mycluster/hbase</value>
</property>
<!-- 指定HMaster主机端口 -->
<property>
<name>hbase.master.port</name>
<value>60000</value>
</property>
<!--开启分布式-->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!--节点列表-->
<property>
<name>hbase.zookeeper.quorum</name>
<value>centos01,centos02,centos03</value>
</property>
<!--ZooKeeper数据存放目录-->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/modules/zookeeper-3.4.10</value>
</property>
<!-- 指定ZooKeeper集群端口 -->
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
</configuration>
在conf目录下创建文件backup-masters
并添加如下内容:
centos02
这样做的意思就是将centos02
作为backup-master(HBase HA的备用Master)
regionservers
文件配置
修改HBase安装目录下的conf/regionservers:
centos01
centos02
centos03
复制HBase到其他节点
scp -r hbase-1.2.6.1/ hadoop@centos02:/opt/modules/
scp -r hbase-1.2.6.1/ hadoop@centos03:/opt/modules/
启动与测试
在所有节点启动ZooKeeper集群
bin/zkServer.sh start
在centos01
节点启动HDFS
sbin/start-dfs.sh
启动ZKFC守护进程
在节点centos01
、centos02
:
sbin/hadoop-daemon.sh start zkfc
先启动谁谁就是active(我先启动的centos01)
在centos01
节点启动HBase集群:
bin/start-hbase.sh
访问centos01:16010
和centos02:16010
:
centos01
为Master,centos02
为备用Backup Master
查看各节点java进程:
测试HBase HA
在centos01
中杀掉hbase的HMaster进程后再测试HBase Shell是否可用,若可用则说明HBase HA搭建成功
杀掉centos01
的HMaster后,centos02
自动转变为Master:
此时测试HBase Shell,依然可以使用,说明HBase HA可用:
再次启动centos01
的HBase的Master:
bin/hbase-daemon.sh start master
centos01
变成了Backup Master,Master依旧为centos02
且centos02
下的Backup Masters多了一个centos01
:
HBase HA测试完成且无误
HBase Shell命令行操作
启动HBase Shell
bin/hbase shell
创建表
创建一张表名为“t1”,列族名为“f1”的表:
create 't1','f1'
添加数据
向表“t1”中添加一条数据,rowkey为row1
,列name的值为zhangsan
:
put 't1','row1','f1:name','zhangsan'
再向表“t1”中添加一条数据,rowkey为row2
,列age的值为18
:
put 't1','row2','f1:age','18'
全表扫描
扫描“t1”:
scan 't1'
查询一行数据
查询表“t1”中rowkey为row1
的一整行数据:
get 't1','row1'
修改表
修改表“t1”中行键row1
对应的name
值,将zhangsan改为lisi:
put 't1','row1','f1:name','lisi'
删除特定单元格
删除表中rowkey为row1
的行的name单元格:
delete 't1','row1','f1:name'
删除一整行数据
删除rowkey为row2
的一整行数据:
deleteall 't1','row2'
列出所有表
list
查询表中的记录数
count 't1'
查询表是否存在
exists 't1'
删除整张表
先禁用disable
再删除drop
:
disable 't1'
drop 't1'
批量执行命令
HBase支持将多个Shell命令放入一个文件中,每行一个命令,然后读取文件中的命令,批量执行。例如,在HBase安装目录下新建一个文件test.txt,内容如下:
create 'test','cf'
list
put 'test','row1','cf:a','value1'
put 'test','row2','cf:b','value2'
put 'test','row3','cf:c','value3'
put 'test','row4','cf:d','value4'
scan 'test'
get 'test','row1'
disable 'test'
enable 'test'
bin/hbase shell ../test.txt