HBase三种搭建方式
Hbase
底层仍然依赖HDFS
来作为其物理存储,并且还需要Zookeeper
协助提供部分配置服务,包括维护元信息和命名空间
环境准备
Hadoop集群:3.3.4
Zookeeper集群:3.8.1
Hbase: hbase-3.0.0-alpha-3
安装Hbase
从Hbase官网下载好安装包
1 | tar -zxvf hbase-3.0.0-alpha-3-bin.tar.gz -C /mysoft/ |
配置环境变量
配置hbase路径1
2
3#Hbase enviroment variables
export HBASE_HOME=/mysoft/hbase-3.0.0-alpha-3
export PATH=$PATH:$HBASE_HOME/bin
1 | source /etc/profile |
单机(独立)模式
默认模式,HBase不使用HDFS,它使用本地文件系统,他在同一个JVM
中运行所有HBase守护进程和本地Zookeeper。Zookeeper绑定到一个众所周知的端口。
配置hbase-env.sh
文件
编辑hbase/conf下hbase-env.sh,设置JAVA_HOME
1 | export JAVA_HOME=/usr/local/jdk1.8.0_341/ |
配置hbase-site.xml
文件
编辑hbase/conf下hbase-site.xml中,仅需要指定hbase和Zookeeper写数据的本地路径,默认在/tmp下创建新的目录。
1 | <configuration> |
单机(独立)模式启动
启动:start-hbase.sh
关闭:stop-hbase.sh
jps查看进程
使用hsq01:16010在web界面查看
伪分布式模式
伪分布式模式只是单个主机上运行的完全分布式模式。在HBASE上使用此配置测试源和原型设计。请勿将此配置用于生产。
配置hbase-site.xml
文件
1 | <property> |
更改hbase.rootdir
1 | <property> |
应与Hadoop集群中fs.defaultFS
中的配置一致,否则没有HMaster,关闭时出现no hbase master found
指定zookeeper
写的目录
1 | <property> |
注意:由于HBase要使用HDFS的客户端,HDFS客户端的配置必须让hbase看到并使用。有三种方式做到这一点:
- 在hbase-env.sh中,将HADOOP_CONF_DIR添加到HBASE_CLASSPATH环境变量中,HADOOP_CONF_DIR指向HADOOP的etc/hadoop目录。
- 拷贝hdfs-site.xml到HBASE_HOME/conf,当然,最好是做一个符号链接。
- 如果HDFS客户端配置很少,可以直接添加到hbase-site.xml中。
伪分布式模式启动
启动
- 开启Hadoop集群
start-all.sh
start-hbase.sh
jps查看进程
使用hsq01:9870和hsq01:16010在web界面查看
完全分布式搭建
配置hbase-env.sh
文件
1 | HABSE_MANAGES_ZK=false |
配置hbase-site.xml
文件
1 | <property> |
启动Hbase后当web界面只有一个节点启动,添加下面的配置一般可以解决
1 | <!--hbase 结点之间时间不一致造成regionserver启动失败 ,增大容忍度--> |
拷贝hdfs.site.xml
和core.site.xml
因为hbase需要读取Hadoop的hdfs.site.xml
和core.site.xml
当中的文件信息,所以需要进行此操作,使用软连接亦可
1 | cp $HADOOP_HOME/etc/hadoop/hdfs-site.xml $HBASE_HOME/conf/hdfs-site.xml |
配置regionserver
文件
1 | cd $HBASE_HOME |
输入要运行regionserver
的主机名1
2
3hsq01
hsq02
hsq03
配置backup-masters
文件
HBase 支持运行多个 master 节点,因此不会出现单点故障的问题,但只能有一个活动的管理节点(active master),其余为备用节点(backup master),一般设置一个备用节点即可1
hsq02
将hbase目录以及hbase环境分发到其他主机
1 | scp -r /mysoft/hbase-3.0.0-alpha-3/ hsq02:/mysoft/ |
完全分布式模式启动
启动
- 开启Hadoop集群
start-all.sh
- 开启zookeeper集群
zkServer.sh start
start-hbase.sh
jps查看进程
使用hsq01:9870和hsq01:16010在web界面查看
搭建过程中遇到的问题
Class path contains multiple SLF4J bindings.
原因:无效变量名
错误:找不到或无法加载主类,可能是Hadoop和Hbase包冲突所致或者 Hadoop 中的配置文件与 Hbase 不兼容。
解决方法: Hbase 自带是有 Hadoop 中的依赖文件的,我们让 Hbase 不使用本地 Hadoop 中的文件,使用自带的配置文件即可。
这时只需要将配置文件hbase-env.sh
中最后一行的该代码export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=“true”
前面的#删掉即可。
1 | export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true" |
1 | hbase-daemon.sh stop master |