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 root@slave1:/usr/local/hbase-1.2.0-cdh5.7.0/conf/
scp hbase-env.sh hbase-site.xml core-site.xml hdfs-site.xml regionservers root@slave2:/usr/local/hbase-1.2.0-cdh5.7.0/conf/
10)在master执行start-dfs.sh启动HDFS(如果之前HDFS已经启动可跳过本步骤)
11)启动HBase集群
在master主机执行HBase启动脚本start-hbase.sh,该脚本的作用是启动HBase的所有相关进程,最好是在master主机执行启动命令
[root@master ~]# jps
2176 NameNode
3015 Jps
2808 HMaster
2952 HRegionServer
2729 HQuorumPeer
2268 DataNode
[root@slave1 ~]# jps
2097 DataNode
2356 HRegionServer
2423 Jps
2154 SecondaryNameNode
2285 HQuorumPeer
[root@slave2 ~]# jps
2260 HRegionServer
2363 Jps
2189 HQuorumPeer
2094 DataNode
12)在win7下,用chrome浏览器访问HBase自带的web配置网站 http://192.168.56.20:60010 ,能出现如下页面说明访问成功:
一些重要的属性信息的截图:
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的属性信息