命令行部署#
前提#
提前已经部署完成HDFS集群以及Zookeeper集群
Zookeeper安装部署请参考:Zookeeper 部署,假定Zookeeper服务部署在
zookeeper1,zookeeper2,zookeeper3
上。HDFS安装部署请参考:HDFS 部署。HDFS nameservice地址假定为
hdfs://oushu
若需要配置kerberos认证,那么需要提前部署好KDF服务:kerberos 部署。假定配置的默认域为
OUSHU.COM
oushu1, oushu2, oushu3机器上需要配置hbase的yum源,具体步骤如下:
使用root用户登陆oushu1,从yum源所在机器获取repo文件
scp oushu@192.168.1.10:/etc/yum.repos.d/oushu.repo /etc/yum.repos.d/oushu.repo
追加yum源所在机器信息到/etc/hosts文件
安装lava命令行管理工具:
yum clean all yum makecache yum install -y lava
创建一个hostfile文件,包含cluster中的所有机器:
touch ~/hostfile
编辑hostfile文件内容如下(集群各机器的hostname):
oushu1 oushu2 oushu3
和集群内其他机器交换公钥:
lava ssh-exkeys -f ~/hostfile -p ********
将repo文件分发给集群内其他机器:
lava scp -f ~/hostfile /etc/yum.repos.d/oushu.repo =:/etc/yum.repos.d
如果Zookeeper和HDFS部署在其它节点,那么需要在
/etc/hosts
中添加机器映射192.168.1.14 zookeeper1 192.168.1.15 zookeeper2 192.168.1.16 zookeeper3 192.168.1.17 hdfs1 192.168.1.18 hdfs2 192.168.1.19 hdfs3
部署HBase#
所有节点执行yum install安装hbase
lava ssh -f ~/hostfile -e "sudo yum install -y hbase"
安装完成之后,会自动生成以下路径:
名称 |
路径 |
---|---|
HBase安装目录 |
/usr/local/oushu/hbase |
HBase配置目录 |
/usr/local/oushu/conf/hbase |
HBase日志目录 |
/usr/local/oushu/log/hbase |
Phoenix安装目录 |
/usr/local/oushu/phoenix |
配置#
创建数据目录#
登录HDFS所在集群,若HDFS开启了kerberos配置,那么需要进行认证操作
sudo su - hdfs
kinit -kt /etc/security/keytabs/hdfs.keytab hdfs
登录HDFS所在集群,创建HBase集群存放数据的根目录
/hbase
,并赋予权限
sudo su - hdfs
hdfs dfs -mkdir /hbase
hdfs dfs -chown -R hbase:hbase /hbase
配置依赖集群#
若需要配置kerberos认证,所有安装hbase的机器需要安装
kerberos
的客户端
lava ssh -f ~/hostfile "sudo yum install -y krb5-libs krb5-workstation"
登录oushu1机器,从
kerberosserver
上获取/etc/krb5.conf
文件,然后分发到所有要安装hbase
的机器
scp root@kerberosserver:/etc/krb5.conf /etc/krb5.conf
lava scp -f ~/hostfile /etc/krb5.conf =:/etc/krb5.conf
备注
Kerberos中hostname不支持大写,如果hostname带大写字母,请将hostname改为小写字母
创建principal并分发keytab
su - root
kadmin.local
addprinc -randkey hbase/oushu1@OUSHU.COM
addprinc -randkey hbase/oushu2@OUSHU.COM
addprinc -randkey hbase/oushu3@OUSHU.COM
xst -k /etc/hbase.keytab hbase/oushu1@OUSHU.COM
xst -k /etc/hbase.keytab hbase/oushu2@OUSHU.COM
xst -k /etc/hbase.keytab hbase/oushu3@OUSHU.COM
登录oushu1机器,从
kerberosserver
上获取keytab
文件,然后分发到所有要安装hbase
的机器
scp root@kerberosserver:/etc/hbase.keytab /usr/local/oushu/hbase/conf/hbase.keytab
lava scp -f ~/hostfile /usr/local/oushu/hbase/conf/hbase.keytab =:/usr/local/oushu/hbase/conf/hbase.keytab
lava ssh -f ~/hostfile -e "chown hbase:hbase /usr/local/oushu/hbase/conf/hbase.keytab"
修改配置文件#
配置文件的路径都在/usr/local/oushu/conf/hbase
,文件描述如下:
文件名 |
作用描述 |
---|---|
hbase-env.sh |
程序启动环境变量 |
hbase-site.xml |
HBase配置参数 |
登录oushu1机器,配置hbase-env.sh文件
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"
export JAVA_HOME="/usr/lib/jvm/java"
export HBASE_MANAGES_ZK="false"
export HBASE_LOG_DIR="/usr/local/oushu/log/hbase"
将hbase-env.sh分发到所有机器
lava scp -f ~/hostfile /usr/local/oushu/conf/hbase/hbase-env.sh =:/usr/local/oushu/conf/hbase/hbase-env.sh
登录oushu1机器,配置hbase-site.xml文件
<configuration>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://oushu/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>zookeeper1,zookeeper2,zookeeper3</value>
</property>
</configuration>
为hbase-site.xml文件增加kerberos的相关配置
<!-- hbase配置kerberos安全认证 -->
<property>
<name>hbase.security.authentication</name>
<value>kerberos</value>
</property>
<!-- 配置hbase rpc安全通信 -->
<property>
<name>hbase.rpc.engine</name>
<value>org.apache.hadoop.hbase.ipc.SecureRpcEngine</value>
</property>
<property>
<name>hbase.coprocessor.region.classes</name>
<value>org.apache.hadoop.hbase.security.token.TokenProvider</value>
</property>
<!-- hmaster配置kerberos安全凭据认证 -->
<property>
<name>hbase.master.kerberos.principal</name>
<value>hbase/_HOST@OUSHU.COM</value>
</property>
<!-- hmaster配置kerberos安全证书keytab文件位置 -->
<property>
<name>hbase.master.keytab.file</name>
<value>/usr/local/oushu/hbase/conf/hbase.keytab</value>
</property>
<!-- regionserver配置kerberos安全凭据认证 -->
<property>
<name>hbase.regionserver.kerberos.principal</name>
<value>hbase/_HOST@OUSHU.COM</value>
</property>
<!-- regionserver配置kerberos安全证书keytab文件位置 -->
<property>
<name>hbase.regionserver.keytab.file</name>
<value>/usr/local/oushu/hbase/conf/hbase.keytab</value>
</property>
将hbase-site.xml分发到所有机器
lava scp -f ~/hostfile /usr/local/oushu/conf/hbase/hbase-site.xml =:/usr/local/oushu/conf/hbase/hbase-site.xml
若HDFS是HA模式,那么需要将HDFS集群的core-site.xml和hdfs-site.xml文件分发到hbase的conf目录
lava scp -f ~/hostfile /usr/local/oushu/conf/hdfs/core-site.xml =:/usr/local/oushu/conf/hbase/core-site.xml
lava scp -f ~/hostfile /usr/local/oushu/conf/hdfs/hdfs-site.xml =:/usr/local/oushu/conf/hbase/hdfs-site.xml
启动#
登陆oushu1机器,使用root用户创建~/hbasemaster
和~/regionserver
文件
touch ~/hbasemaster
touch ~/regionserver
hbasemaster
文件包含
oushu1
oushu2
regionserver
文件包含
oushu1
oushu2
oushu3
启动HMaster
lava ssh -f ~/hbasemaster -e "sudo -u hbase /usr/local/oushu/hbase/bin/hbase-daemon.sh start master"
启动HRegionserver
lava ssh -f ~/regionserver -e "sudo -u hbase /usr/local/oushu/hbase/bin/hbase-daemon.sh start regionserver"
检查状态#
登录oushu1,oushu2,oushu3节点,使用jps
查询进程是否存活。
oushu1,oushu2节点应该有HMaster
和HRegionserver
进程存在。oushu3节点应该有HRegionserver
进程存在
su - hbase
jps
简单测试#
登录oushu1节点,进入hbase shell客户端
ssh oushu1
su - hbase
hbase shell
若配置了kerberos认证,则需要执行kinit获取认证信息,然后进入客户端
su - hbase
kinit -k -t /xx.keytab xx/hostname@OUSHU.COM
hbase shell
创建一张test表,并简单操作,看是否可用
hbase:008:0> create 'p_test', 'f1';
Created table p_test
Took 0.6230 seconds
=> Hbase::Table - p_test
hbase:009:0> put 'p_test', '1001', 'f1:name', 'wang';
Took 0.1461 seconds
hbase:010:0> scan 'p_test';
ROW COLUMN+CELL
1001 column=f1:name, timestamp=2022-11-03T16:17:01.050, value=wang
1 row(s)
Took 0.0296 seconds
hbase:011:0> describe 'p_test';
Table p_test is ENABLED
p_test
COLUMN FAMILIES DESCRIPTION
{NAME => 'f1', BLOOMFILTER => 'ROW', IN_MEMORY => 'false', VERSIONS => '1', KEEP_DELETED_CELLS => 'FA
LSE', DATA_BLOCK_ENCODING => 'NONE', COMPRESSION => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', BL
OCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
1 row(s)
Quota is disabled
Took 0.0257 seconds
使用sqlline.py
命令在phoenix端创建一张p_test表,查看是否可用
0: jdbc:phoenix:> create table p_test(id bigint primary key, name varchar);
No rows affected (0.713 seconds)
0: jdbc:phoenix:> upsert into p_test values (1, 'p1');
1 row affected (0.04 seconds)
0: jdbc:phoenix:> select * from p_test;
+----+------+
| ID | NAME |
+----+------+
| 1 | p1 |
+----+------+
1 row selected (0.053 seconds)
0: jdbc:phoenix:> !quit
Closing: org.apache.phoenix.jdbc.PhoenixConnection
注册到skylab(可选)#
HBase将要安装的机器需要通过机器管理添加到skylab中,如果您尚未添加,请参考:注册机器。
在oushu1节点修改/usr/local/oushu/lava/conf配置server.json
,替换localhost为skylab的服务器ip,具体skylab的基础服务lava安装步骤请参考:lava安装。
{
"server": "localhost:1612",
"admin": "localhost:1652"
}
创建一个request文件,包含HBase cluster信息:
touch ~/hbase-register.json
编辑json文件内容如下:
{
"data": {
"name": "hbaseserver",
"group_roles": [
{
"role": "hbase.master",
"cluster_name": "hbase",
"group_name": "hbasemaster",
"machines": [
{
"id": 1,
"name": "oushu1",
"subnet": "lava",
"data_ip": "192.168.1.11",
"manage_ip": "192.168.1.11",
"assist_port": 1622,
"ssh_port": 22
},{
"id": 2,
"name": "oushu2",
"subnet": "lava",
"data_ip": "192.168.1.12",
"manage_ip": "192.168.1.12",
"assist_port": 1622,
"ssh_port": 22
}
]
},
{
"role": "hbase.regionserver",
"cluster_name": "hbase",
"group_name": "hbaseregionserver",
"machines": [
{
"id": 1,
"name": "oushu1",
"subnet": "lava",
"data_ip": "192.168.1.11",
"manage_ip": "192.168.1.11",
"assist_port": 1622,
"ssh_port": 22
},{
"id": 2,
"name": "oushu2",
"subnet": "lava",
"data_ip": "192.168.1.12",
"manage_ip": "192.168.1.12",
"assist_port": 1622,
"ssh_port": 22
},{
"id": 3,
"name": "oushu3",
"subnet": "lava",
"data_ip": "192.168.1.13",
"manage_ip": "192.168.1.13",
"assist_port": 1622,
"ssh_port": 22
}
]
}
]
}
}
配置文件说明,整个json分为3部分:
第一部分name,为集群名称,个性化填写。
第二部分为group_roles,对于HBase来说,是2个角色,hbase.master和hbase.regionserver,不可修改。
第三部分,为每个角色添加机器,需要添加的机器信息可以通过下面的方式获得。
在平台基础组件lava所安装的机器执行(端口和用户名按照lava配置修改):
psql lavaadmin -p 4432 -U oushu -c "select m.id,m.name,s.name as subnet,m.private_ip as data_ip,m.public_ip as manage_ip,m.assist_port,m.ssh_port from machine as m,subnet as s where m.subnet_id=s.id;"
获取到所需的机器信息,根据服务角色对应的节点,将机器信息添加到machines数组中。
在oushu1节点调用lava命令注册集群:
lava login -u oushu -p Oushu6@China
lava onprem-register service -s HBase -f ~/hbase-register.json
如果返回值为:
Add service by self success
则表示注册成功,如果有错误信息,请根据错误信息处理。
例如skylab部署在192.168.1.10,访问
http://192.168.1.10:3000/main/Deploy/hbase
从页面登录后,在自动部署模块对应服务中可以查看到新添加的集群,同时列表中会实时监控HBase进程在机器上的状态。