Hbase完全分布式搭建
1 简要说明
完全分布式,指的就是除了hmaster守护进程外,有多个regionserver守护进程,并且每一个regionserver守护进程独占一个机器节点。使用的文件系统是HDFS。
布局如下:
hadoop01: hmaster regionserver
hadoop02: hmaster regionserver
hadoop03: regionserver
环境说明:
必须配置好集群的免密登录认证
必须配置时间同步。保证集群节点的时间差不能超过30秒,否则regionserver启动失败
2 搭建步骤
步骤1): 上传、解压、配置环境变量 、重导生效
[root@hadoop01 ~]# tar -zxvf hbase-1.2.1-bin.tar.gz -C /usr/local/
[root@hadoop01 ~]# cd /usr/local/
[root@hadoop01 local]# mv hbase-1.2.1/ hbase
[root@hadoop01 local]# vim /etc/profile
…省略…
#hbase environment
export HBASE_HOME=/usr/local/hbase
export PATH=$HBASE_HOME/bin:$PATH
[root@hadoop01 local]# source /etc/profile
步骤2):配置hbase-env.sh环境脚本
[root@hadoop01 local]# vi $HBASE_HOME/conf/hbase-env.sh
#找到下面内容,解开注释,添加具体路径
#The java implementation to use. Java 1.7+ required.
export JAVA_HOME=/usr/local/jdk
#Tell HBase whether it should manage it's own instance of Zookeeper or not.
export HBASE_MANAGES_ZK=false #禁止内置zookeeper
步骤3):配置hbase-site.xml文件
<configuration>
<!-- 指定hbase在HDFS上存储的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop01:8020/hbase</value>
</property>
<!-- 指定hbase是分布式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定zk的地址,多个用“,”分割 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
<!--将属性hbase.unsafe.stream.capability.enforce 改为true -->
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>true</value>
</property>
<!-- 取消内存检查 -->
<property>
<name>hbase.table.sanity.checks</name>
<value>false</value>
</property>
</configuration>
步骤4):配置regionservers文件,添加regionserver所在机器的host
[root@hadoop01 local]# vi $HBASE_HOME/conf/regionservers
删除localhost
添加:
hadoop01
hadoop02
hadoop03
步骤5):配置备份hmaster: 创建backup-masters文件
[root@hadoop01 local]# cd $HBASE_HOME/conf/
[root@hadoop01 conf]# echo "hadoop02">> backup-masters
步骤6): 将hadoop的core-site.xml和hdfs-site.xml拷贝到hbase的conf目录下
[root@hadoop01 conf]# cp $HADOOP_HOME/etc/hadoop/{core-site.xml,hdfs-site.xml} $HBASE_HOME/conf/
步骤7):同步到其他节点上
[root@hadoop01 local]# scp -r /usr/local/hbase hadoop02:/usr/local
[root@hadoop01 local]# scp -r /usr/local/hbase hadoop03:/usr/local
[root@hadoop01 local]# scp /etc/profile hadoop02:/etc/
[root@hadoop01 local]# scp /etc/profile hadoop03:/etc/
注意:
重新引导一下各个节点的环境变量配置情况
3 启动集群
启动顺序如下:
第一步:必须先启动hdfs和zookeeper
[root@hadoop01 ~]# zkServer.sh start
[root@hadoop02 ~]# zkServer.sh start
[root@hadoop03 ~]# zkServer.sh start
别忘记:zkServer.sh status查看状态
[root@hadoop01 ~]# start-dfs.sh
第二步:启动hbase的守护进程
[root@hadoop01 ~]# start-hbase.sh
第三步:检查相关进程
方式1: jps
方式2: webui ---> hadoop01:16010
4 客户端连接集群
1)hbase本身自己就提供了一个命令行连接工具
[root@hadoop01 ~]# hbase shell
2)可以使用java语言调用API接口连接