一 安装前处理
1 HDFS集群的 Zookeeper 集群启动 ( 方便hbase向zookeeper发送注册信息,zookeeper好监测hbase集群运行情况 )
[root@linux03 ~]# /opt/apps/zookeeper-3.4.6/bin/zkServer.sh start
[root@linux04 ~]# /opt/apps/zookeeper-3.4.6/bin/zkServer.sh start
[root@linux05 ~]# /opt/apps/zookeeper-3.4.6/bin/zkServer.sh start
2 HDFS集群启动
[root@linux03 ~]# start-all.sh
3 查看zk和hdfs的启动情况
[root@linux03 ~]#jps
9703 Jps //jps
2441 ResourceManager //yarn 主节点
1930 NameNode //hdfs namenode
1692 QuorumPeerMain //zookeeper 主节点
2076 DataNode //hdfs datanode
2620 NodeManager //zookeeper 子节点
4 确定创建虚拟机的三台机器时间是否同步
4.1 查看集群中的每一台机器的时间 ,三台机器的时间一定同步误差在一定的范围内
[root@linux03 ~]#date
[root@linux04 ~]#date
[root@linux05 ~]#date
4.2 连接外网时间服务器自动同步数据
yum -y install ntpdate.x86_64
ntpdate 0.asia.pool.ntp.org
// 服务器列表
time.nist.gov
time.nuri.net
0.asia.pool.ntp.org
1.asia.pool.ntp.org
2.asia.pool.ntp.org
3.asia.pool.ntp.org
4.3 手动设置时间
date -s "2020-01-08 17:12:55"
4.4 如果没有时间同步抛出" ClockOutOfSyncException "异常,需要时间同步或者
修改属性 : hbase.master.maxclockskew设置更大的值
<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
<description>Time difference of regionserver from master</description>
</property>
二 安装和集群设置
1 上传解压 hbase jar包
// 上传
[root@linux03 apps]# rz // 在/opt/apps目录下 将hbase-2.2.5-bin.tar.gz 上传
// 解压
[root@linux03 apps]# tar -zxvf hbase-2.2.5-bin.tar.gz
2 hbase 配置
2.1 hbase-env.sh 修改配置内容
[root@linux03 ~]# cd /opt/apps/hbase-2.2.5/conf
[root@linux03 conf]# vi hbase-env.sh
// 将这行的注释 # 去掉 ,并且将jdk的路径写正确
export JAVA_HOME=/opt/apps/jdk1.8.0_251
// 退出编辑模式 ,搜索 ZK
esc /ZK
// 将 ZK 设置为 false ,意思是不使用 hbase 自身的 zookeeper ,而是使用 hdfs 集群的zookeeper集群
export HBASE_MANAGES_ZK=false
2.2 hbase-site.xml 修改配置内容
[root@linux03 conf]# vi hbase-site.xml
// 直接移动到文件内容最下面, 将原本 <configuuration>标签里面的内容删除掉 ,将以下内容添加进去
<configuration>
<!-- 指定hbase在HDFS上存储的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://linux03:8020/hbase</value>
</property>
<!-- 指定hbase是分布式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
<!-- 指定zk的地址,多个用“,”分割 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>linux03:2181,linux04:2181,linux05:2181</value>
</property>
</configuration>
2.3 regionservers 修改配置内容----启动集群中的 Regionserver 机器
vi regionservers
// 添加将要建立集群的三台机器的域名进去
linux03
linux04
linux05
// 保存退出
:wq!
2.4 向集群中的其他两台集群群发修改好的 hbase-2.2.5 软件
/opt/apps/ 目录下
[root@linux03 apps]# scp -r hbase-2.2.5/ linux04:$PWD
[root@linux03 apps]# scp -r hbase-2.2.5/ linux05:$PWD
2.5 启动 hbase
2.5.1 单节点启动 (只有手动单节点启动时,才有备用节点HMaster )
[root@linux03 hbase-2.2.5]# bin/hbase-daemon.sh start master
[root@linux03 hbase-2.2.5]# bin/hbase-daemon.sh start regionserver
提示 : 如果集群之间的节点时间不同步 ,会导致 regionserver 无法启动
2.5.2 集群一键启动
/opt/apps/hbase-2.2.5/bin 目录下
[root@linux03 bin]# ./start-hbase.sh // 启动 HMaster
2.6 hbase集群启动成功后 ,访问HBase管理页面
2.7 为了操作方便(在任何目录路径下 ,都可以启动 hbase集群) ,建议将hbase 配置在系统的环境变量中 .
回到根目录下 /
vi etc/profile
// 添加如下内容
export HBASE_HOME=/opt/apps/hbase-2.2.5
// 在 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin后面拼接上如下内容
:$HBASE_HOME/bin
// 保存退出
:wq!
三 shell客户端
1 开启shell交互客户端
[root@linux03 bin]# ./start-hbase.sh // 启动 HMaster (必须启动 ,否则无法正常使用 hbase)
[root@linux03 /]# hbase shell // 启动 hbase shell 客户端
2 通用和帮助基本命令
hbase(main):001:0>status //查看HBase集群状态
hbase(main):001:0>version //查看HBase版本
hbase(main):001:0>whoami //提供有关用户的信息
hbase(main):001:0>list //查看当前节点的列表清单
hbase(main):001:0>help //查看hbase中所有的shell 命令
hbase(main):001:0>help 'Commands' //查看命令的使用手册
hbase(main):001:0>help 'create' //查看create的用法/语法,单引号里面放任意查询字段
3 namespace
hbase中没有数据库的概念 ,namespace相当于 mysql中的database ,可以用来分类别管理表
3.1 创建 namespace
create_namespace 'hbase01'
Took 1.1417 seconds
3.2 创建 namespace 并添加属性
create_namespace 'hbase02',{'hbase'=>'learning'}
Took 0.2678 seconds
3.3 查看 namespace 详细信息
describe_namespace 'hbase02'
// 查询到的信息
DESCRIPTION
{NAME => 'hbase02', hbase => 'learning'}
Quota is disabled
Took 0.1937 seconds
3.4 查看 namespace 列表
list_namespace
// 查询到的 namespace 列表
NAMESPACE
default // 系统默认的 namespace
hbase // 系统自带的 namespace ,不可删
hbase01 // 创建的普通 namespace
hbase02 // 创建的带有属性的 namespace
4 row(s) // 共四个namespace
Took 0.5190 seconds
3.5 删除 namespace
hbase(main):002:0> drop_namespace 'hbase01'
Took 0.2724 seconds
3.6 查看指定 namespace 下的 table
list_namespace_tables 'default'
// default=>默认的namespace下的列表信息
TABLE
tb_user
tb_user1
tb_user2
3 row(s) // 共3个表
Took 0.0500 seconds
=> ["tb_user", "tb_user1", "tb_user2"]
3.7 alter_namespace 修改名称空间的属性
3.7.1 To add/modify a property:
hbase> alter_namespace 'ns1', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}
3.7.2 To delete a property:
hbase> alter_namespace 'ns1', {METHOD => 'unset', NAME=>'PROPERTY_NAME'}