Hbase的安装配置

注:本文默认已经完成hadoop的下载以及环境配置

1.上传zookeeper和hbase压缩包到指令路径并且解压

(理论上讲,hbase其实内置了zookeeper,我们也可以不另外下载,另外下载的目的在于减少组件间依赖性)

cd /home
mkir hbase
cd /home/hbase
tar -zxvf hbase-2.4.4-bin.tar.gz
tar -zxvf zookeeper-3.4.14.jar

注:这里的下载、解压地址没有特殊规定。本文下载的地址为/home/hbase目录


2.配置zookeeper(也可以不配置zookeeper,配置的原因是防止Hmaster启动后不久自动下线)

打开zookeeper解压文件位置,进入conf目录。本文中地址为/homr/hbase/zookeeper-3.4.14/conf,具体以个人实际地址为准。输入以下代码,进行配置工作

mv zoo_sample.cfg zoo.cfg
vim zoo.cfg

进行如下修改:

添加以下内容:

server.1=hadoop11:2888:3888
server.2=hadoop12:2888:3888
server.3=hadoop13:2888:3888

注:以自己搭建hadoop的机器的机器名为准

修改以下内容:

dataDir=/home/hbase/zookeeper-3.3.4/data

切换回dataDir指向的目录,并建立data目录

cd /home/hbase/zookeeper-3.3.4
mkdir data 
cd data

在data目录中,编辑一个名叫myid的文件,内容就是server.x中x的值,比如hadoop11机器对应的是server.1,那么就这么来修改:

vim myid

#然后在文本中按i进入编辑模式,输入1,按esc退出,再按:wq保存修改

剩下两台机器以此类推


3.配置hbase

进入conf目录,修改hbase-env.sh配置文件

export JAVA_HOME=/home/java/jdk1.8.0_212
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"

第一条指令一定要写,第二条可以不写,写了的目的在于规避hbase自带的hadoop包版本和已搭建的hadoop版本冲突的问题。如果发生了冲突,那么在后面启动hbase时会出现如下报错:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/hadoop/hadoop-3.3.4/share/hadoop/common/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/hadoop/hbase-2.1.5/lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Reload4jLoggerFactory]
running master, logging to /home/hadoop/hbase-2.1.5/bin/../logs/hbase-csr-master-hadoop01.out
: running regionserver, logging to /home/hadoop/hbase-2.1.5/bin/../logs/hbase-csr-regionserver-hadoop01.out

配置完成后,使用source命令使修改生效

2.修改/etc/profile文件

vim /etc/profile

本人的路径配置如下,仅供参考,文件路径以自己的下载路径为准:

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export HADOOP_PID_DIR=/home/hadoop
export HADOOP_HOME=/home/hadoop/hadoop-3.3.4/
PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$HOME/bin
export PATH

配置完成后,同理,使用source命令使其生效

3.修改hbase-site.xml文件

配置如下:

<property>
    <name>hbase.rootdir</name>				
    <value>hdfs://192.168.198.100:9000/hbase</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>		
    <value>true</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>	
    <value>/home/hbase/zookeeper-3.4.14</value>
  </property>
  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>			
    <value>hadoop11:2181,hadoop12:2181,hadoop13:2181</value>	
  </property>
  <property>
    <name>hbase.master.info.port</name>		
  <value>60010</value>
</property>

注:第一个property的配置要与hadoop中hdfs使用的端口一致,因为我hdfs使用的端口就是9000而不是8020,所以保留了9000端口。此外,机器名(或者ip地址)和zookeeper下载地址以自己的为准

特别注意:hbase.zookeeper.quorum中三个地址必须紧挨,不能有任何空格!不然在日志中会出现如下报错:

zookeeper.RecoverableZooKeeper: Unable to create ZooKeeper Connection
java.net.UnknownHostException:  192.168.198.202: 未知的名称或服务

zookeeper.RecoverableZooKeeper: Unable to create ZooKeeper Connection
java.net.UnknownHostException

zookeeper.RecoverableZooKeeper: ZooKeeper create failed after 4 attempts

regionserver.HRegionServer: Failed construction RegionServer
org.apache.hadoop.hbase.ZooKeeperConnectionException: master:160000x0, quorum=192.168.198.100:2181, 192.168.198.101:2181, 192.168.198.102:2181, baseZNode=/hbase Unexpected KeeperException creating base node

org.apache.zookeeper.KeeperException$OperationTimeoutException: KeeperErrorCode = OperationTimeout

 [main] master.HMasterCommandLine: Master exiting
java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster.

这是非常具有迷惑性的一类错误,只有在日志中才会找到,在启动界面不会有任何报错甚至还可以使用hbase shell命令进入数据库!用jps检查守护线程时,头4次(经本人实验,最多可以坚持7次!隐蔽性可见一斑)也会有Hmaster线程出现!这种错误也是引起Hmaster自动消失一类原因。另一类引发Hmaster消失的错误本文已经通过配置zookeeper消除,即Hbase自带的zookeeper奔溃了。报错如下:

quorum.QuorumCnxManager: Cannot open channel to 1 at election address node2/192.168.56.12:3888
java.net.ConnectException: Connection refused(Connection refused)

有一种很简单的检查方法,即尝试能不能进入60010端口,如果进不去,但是刚登进去后,使用jps可以检查出Hmaster线程,那就发生了此类错误。

4.配置域服务器(还是conf目录下)

vim regionservers

#内容同hadoop中workers的配置
192.168.198.100
192.168.198.101
192.168.198.102

5.分发hbase以及zookeeper(以自己的地址为准)

scp -r /home/hbase/zookeeper-3.4.14 root@192.168.198.101:/home/hbase
scp -r /home/hbase/zookeeper-3.4.14 root@192.168.198.102:/home/hbase
scp -r /home/hbase/hbase-2.1.5 root@192.168.198.101:/home/hbase
scp -r /home/hbase/hbase-2.1.5 root@192.168.198.102:/home/hbase

6.切换到hbase压缩后目录,然后,hbase,启动!

bin/start-hbase.sh

其他温馨提醒:

hbase启动或停止卡住的时侯,请不要采用直接虚拟机断电这么暴力的办法,这样做的后果会很严重且无法挽回,会造成你的logs目录整个直接丢失,完全无法开机:

错误: 找不到或无法加载主类 org.apache.hadoop.hbase.util.HBaseConfTool
错误: 找不到或无法加载主类 org.apache.hadoop.hbase.zookeeper.ZKServerTool
running master, logging to /home/haoop/hbase-2.1.5/logs/hbase-csr-master-hadoop01.out
nice: /home/haoop/hbase-2.1.5/bin/hbase: 没有那个文件或目录
cat: /home/haoop/hbase-2.1.5/conf/regionservers: 没有那个文件或目录
cat: /home/haoop/hbase-2.1.5/conf/regionservers: 没有那个文件或目录

如果出现了这种情况,那就可以重新建虚拟机重新搭建Hadoop了。暂时没找到解决的办法。格式化已存在的hadoop或者重新解压hbase都是没有用的(亲测无效)。希望大家都遇不到这种情况,哈哈哈

相关推荐
lucky_syq3 天前
Hive与HBase的区别有哪些
hive·hadoop·hbase
中东大鹅3 天前
分布式数据存储基础与HDFS操作实践
大数据·linux·hadoop·分布式·hbase
Aliano2173 天前
ES对比Hbase
elasticsearch·信息可视化·hbase
skoutain4 天前
Hadoop、Hbase使用Snappy压缩
大数据·hadoop·hbase
ssxueyi4 天前
‌HBase是什么,‌HBase介绍
大数据·hadoop·hbase
逸曦玥泱6 天前
搭建分布式HBase集群
数据库·分布式·hbase
BenChuat6 天前
HBase、Hive、Redis 和 MongoDB的对比
hive·redis·mongodb·hbase
Java Fans8 天前
构建一个简单的基于 HBase 的搜索引擎
数据库·搜索引擎·hbase
好记性+烂笔头9 天前
hbase读写操作后hdfs内存占用太大的问题
数据库·hdfs·hbase
xfcloud11 天前
HBase分布式安装配置(Zookeeper+HBase)
分布式·zookeeper·hbase