HBase集群搭建实验(3)_完全分布式部署(使用内置ZooKeeper,非HMaster HA)

HBase完全分布式模式:
1)不同的HBase进程分别独立运行在多台硬件配置较高的服务器主机构成的集群中,适合HBase的运维和生产环境
2)依赖于HDFS存储数据,因此布署Hbase完全分布式之前必须有一个正常运行的HDFS集群

3)依赖于独立的外部ZooKeeper集群,使用HBase内置的ZooKeeper

实验前提:HBase完全分布式部署方式依赖Hadoop,本实验紧接Hadoop完全分布式集群部署实验,在Hadoop完全分布式实验完成并运行成功的基础上继续进行Hbase完全分布式(非HA)部署演示
 

实验目标:在3台主机组成的小型集群上部署分布式数据库HBase ,用于教学演示
环境要求:虚拟机VirtualBox     操作系统 Centos7    Hadoop版本  hadoop-2.6.0-cdh5.7.0  Hbase版本 hbase-1.2.0-cdh5.7.0.tar.gz

集群规划:无需复制虚拟机,直接利用完全分布式集群的3台主机master,slave1,slave2完成Hbase完全分布式(非HA)部署

主机IP 主机名 集群角色
192.168.56.20 master HQuorumPeer  NameNode    DataNode   HMaster HRegionServer
192.168.56.21 slave1 HQuorumPeer  DataNode   HRegionServer
192.168.56.22 slave2 HQuorumPeer  DataNode   HRegionServer

〇 首先必须要部署完成并运行成功Hadoop完全分布式集群

一 搭建HBase完全分布式(非HA)集群的实验步骤

 

1)启动完全分布式集群中的3台主机master,slave1和slave2

2)在win7用XSHELL远程登录,注意VirtualBox主机网络管理器的虚拟网卡IP(192.168.56.1)地址必须和虚拟机Linux处于一个网段

3)解压缩hbase-1.2.0-cdh5.7.0.tar.gz安装包到指定目录/usr/local

在master, slave1,slave2三台主机上都要依次(不要同时)解压缩安装包:

tar -zxvf hbase-1.2.0-cdh5.7.0.tar.gz -C /usr/local/        解压缩到/usr/local目录

特别提醒:千万不同时在3台虚拟机执行解压缩命令,很有可能造成死机!!!

4)设置环境变量并使之生效

在master, slave1,slave2三台主机上都要设置环境变量

vi /etc/profile   在配置文件profile的末尾增加蓝色字体的内容:

# jdk
export JAVA_HOME=/usr/local/java/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin

# hadoop
export HADOOP_HOME=/usr/local/hadoop-2.6.0-cdh5.7.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# hbase
export HBASE_HOME=/usr/local/hbase-1.2.0-cdh5.7.0
export PATH=$PATH:$HBASE_HOME/bin

记得要执行source /etc/profile命令使得HBase的环境变量生效

5)关闭防火墙firewall和SeLinux

执行关闭防火墙命令 systemctl disable firewalld      执行关闭SeLinux命令 setenforce 0 

6)检查master, slave1,slave2互相之间的SSH免密登录(特别重要)

在每台主机上都要依次执行ssh master, ssh slave2, ssh slave2命令,检查免密登录,免密登录成功后,必须输入exit退出并返回原会话,以免搞混

7)修改配置文件(关键步骤)

cd /usr/local/hbase-1.2.0-cdh5.7.0/conf 切换到hbase-env.sh配置文件所在目录

a)先在master主机上修改hbase-env.sh

vi hbase-env.sh 修改以下参数:

export JAVA_HOME=/usr/local/java/jdk1.8

export HBASE_MANAGES_ZK=true            # 使用HBase内置的ZooKeeper!!!

执行source hbase-env.sh命令使得HBase配置参数生效

b)在master主机上修改hbase-site.xml

vi hbase-site.xml修改以下参数:

在<configuration> </configuration>之间增加蓝色字体配置参数

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://master:8020/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/root/hbase/zookeeper</value>
  </property>

  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>master,slave1,slave2</value>
  </property>

</configuration>

参数说明:

hbase.rootdir:用于指定HBase数据在HDFS的存储路径

hbase.zookeeper.quorum:对于HBase的完全分布式模式(使用HBase内置的ZooKeeper),应将该参数的值设置为作为内置ZooKeeper的主机列表,此时在配置文件hbase-env.sh中的HBASE_MANAGES_ZK参数必须为true

hbase.cluster.distributed:设置为true,告诉HBase按照完全分布式模式启动

c)修改regionservers文件

vi regionservers

删除原有行,新添加三行:

master
slave1
slave2

8)拷贝Hadoop的两个配置文件core-site.xml和hdfs-site.xml到HBase的配置文件目录(HBase对HDFS有依赖关系

依次执行命令 cp /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop/core-site.xml /usr/local/hbase-1.2.0-cdh5.7.0/conf

cp /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hdfs-site.xml /usr/local/hbase-1.2.0-cdh5.7.0/conf

重要说明:拷贝Hadoop的两个配置文件的原因是,让HBase能读取到HDFS的配置参数(因为HBase完全分布式部署方式依赖于Hadoop),让HBase读取到HDFS的配置参数有三种方式:

1.把$HADOOP_CONF_DIR(即Hadoop的配置文件路径/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop)赋值给hbase-env.sh文件的HBASE_CLASSPATH 参数(推荐方式,但本实验未采用,稍嫌麻烦)

2.把HDFS的配置文件拷贝一份到HBase的conf目录(本实验采用此方式,最简单)

3.把HDFS的几个配置参数直接写入HBase的配置文件hbase-site.xml中(最麻烦,不推荐)

9)将master上的多个配置文件远程拷贝复制到另外两台主机slave1和slave2

cd  /usr/local/hbase-1.2.0-cdh5.7.0/conf   切换到配置文件所在目录

依次执行命令

scp hbase-env.sh hbase-site.xml core-site.xml hdfs-site.xml regionservers  [email protected]:/usr/local/hbase-1.2.0-cdh5.7.0/conf/

scp hbase-env.sh hbase-site.xml core-site.xml hdfs-site.xml regionservers  [email protected]:/usr/local/hbase-1.2.0-cdh5.7.0/conf/

别忘了要在master,slave1,slave2依次执行source hbase-env.sh命令,使得HBase的配置参数生效

10)在master执行start-dfs.sh启动HDFS(如果之前HDFS已经启动可跳过本步骤)

11)启动HBase集群

在master主机执行HBase启动脚本start-hbase.sh,该脚本的作用是启动HBase的所有相关进程,最好是在master主机执行启动命令

[[email protected] ~]# jps
2176 NameNode
3015 Jps
2808 HMaster
2952 HRegionServer
2729 HQuorumPeer
2268 DataNode

[[email protected] ~]# jps
2097 DataNode
2356 HRegionServer
2423 Jps
2154 SecondaryNameNode
2285 HQuorumPeer

[[email protected] ~]# jps
2260 HRegionServer
2363 Jps
2189 HQuorumPeer
2094 DataNode

12)在win7下,用chrome浏览器访问HBase自带的web配置网站 http://192.168.56.20:60010 ,能出现如下页面说明访问成功:

HBase集群搭建实验(3)_完全分布式部署(使用内置ZooKeeper,非HMaster HA)

一些重要的属性信息的截图:

HBase集群搭建实验(3)_完全分布式部署(使用内置ZooKeeper,非HMaster HA)

13)测试一下HBase是否成功连接HDFS

测试方法:如果HBase成功连接HDFS,会在HDFS上创建目录路径/hbase

执行hadoop fs -ls /命令,检查HDFS根目录下是否存在hbase子目录

14)执行命令hbase shell进入hbase shell环境

15)HBase Shell命令的简单测试

  执行命令create 'testTable', 'testFamily'     创建一张表testTable,包含一个列族testFamily 

 执行命令list  列出HBase中的所有表

 执行命令describe 'testTable'   描述表testTable的属性信息