Centos7下HBase安装与配置(亲测!)

Centos7下Hadoop完全分布式安装

  • 电脑系统:macOS 10.15.4
  • 虚拟机软件:Parallels Desktop14
  • Hadoop各节点节点操作系统:CentOS 7
  • JDK版本:jdk1.8.0_162
  • HBase版本:hbase-1.2.0-cdh5.9.3

hbase的下载源地址:
官网:
https://archive.cloudera.com/cdh5/cdh/5/
CDH版本:
https://archive.apache.org/dist/hadoop/

第一步:安装软件

(1)上传文件

将本机的安装包上传到虚拟机node1,上传方式:

scp 本机的文件绝对路径 caizhengjie@10.211.55.49:/opt/Hadoop

(2)解压文件

上传成功之后需要对文件赋予权限

chmod u+x hbase-1.2.0-cdh5.9.3.tar.gz

解压文件:

tar -zxvf hbase-1.2.0-cdh5.9.3.tar.gz

创建软链接:

ln -s hbase-1.2.0-cdh5.9.3 hbase

第二步:配置环境变量

vim ~/.bashrc

然后添加以下内容,注意三台虚拟机都需要配置环境变量

export HBASE_HOME=/opt/Hadoop/hbase
export PATH=$HBASE_HOME/bin:$PATH

最后使之生效

source ~/.bashrc

第三步:修改配置文件

(1)修改hbase-env.sh配置文件

第一步
进入到conf目录下

cd /opt/Hadoop/hbase/conf
vim hbase-env.sh

找到export JAVA_HOME,将前面的**#**去掉
修改为:

export JAVA_HOME=/opt/Hadoop/jdk1.8.0_162

第二步
接着找到图中红框的部分,将它注释掉
在这里插入图片描述
原理解释: 启动hbase的时候报出警告

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0

查看配置文件
#Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+
这里我用的是jdk8,按照上面的操作将那两行注释掉就不会报出警告了。
第三步
找到export HBASE_MANAGES_ZK,将前面的#去掉
修改为:

export HBASE_MANAGES_ZK=false

原理解释:这里我们不用自带的zookeeper,选择用我们自己的zookeeper
想查看zookeeper安装的详细操作点这里!

这样hbase-env.sh文件就配置成功了

(2)修改hbase-site.xml配置文件

首先进入到/opt/Hadoop/hbase目录下

mkdir zookeeper-data

创建zookeeper-data目录文件

vim hbase-site.xml

添加如下内容

<configuration>
         <!-- Hbase的数据保存在HDFS对应的目录下 -->
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://node1:8020/hbase</value>
        </property>

        <!-- 是否是分布式环境 -->
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>

        <!-- 配置ZK的地址,3个节点都启用Zookeeper -->
        <property>
                <name>hbase.zookeeper.quorum</name>
                <value>node1,node2,node3</value>
        </property>

        <!-- 冗余度 -->
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>

        <!-- 主节点和从节点允许的最大时间误差 -->
        <property>
                <name>hbase.master.maxclockskew</name>
                <value>180000</value>
        </property>

        <!-- zookeeper数据目录 -->
        <property>
                <name>hbase.zookeeper.property.dataDir</name>
                <value>/opt/Hadoop/hbase/zookeeper-data</value>
        </property>
		<!-- 设置网页端口号 -->
        <property>
                <name>hbase.master.info.port</name>
                <value>60010</value>
        </property>
</configuration>

根据自己的配置适当修改

(3)修改regionservers 文件

cd /opt/Hadoop/hbase/conf
vim regionservers

将下面的内容换成

node1
node2
node3

(4)配置backup-masters (可选)

为了增加hbase集群的可用性,可以为hbase增加多个backup master。当master挂掉后,backup master可以自动接管整个hbase的集群。配置backup master的方式是在hbase的conf下增加文件backup-masters,在该文件里面增加backup master的机器列表,每台机器一条记录。

cd /opt/Hadoop/hbase/conf
touch backup-masters

在里面添加内容

node2

第四步:分发配置文件

将node1的hbase-1.2.0-cdh5.9.3和hbase-1.2.0-cdh5.9.3.tar.gz文件分发到node2和node3上

scp -r hbase-1.2.0-cdh5.9.3 hbase-1.2.0-cdh5.9.3.tar.gz caizhengjie@node2:/opt/Hadoop/
scp -r hbase-1.2.0-cdh5.9.3 hbase-1.2.0-cdh5.9.3.tar.gz caizhengjie@node3:/opt/Hadoop/

分别在node2和node3上创建软连接

ln -s hbase-1.2.0-cdh5.9.3 hbase

第五步:启动与检测

在启动HBase之前要先把三台机的zookeeper给启动起来,不然会出现刚启动hbase的进程就消失,我通过查看日志文件,找出的原因是zookeeper没有启动。报错信息如下:

020-06-20 11:31:30,550 INFO  [main-SendThread(node1:2181)] zookeeper.ClientCnxn: Opening socket connection to server node1/10.211.55.59:2181. Will not attempt to authenticate using SASL (unknown error)
2020-06-20 11:31:30,550 WARN  [main-SendThread(node1:2181)] zookeeper.ClientCnxn: Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.ConnectException: 拒绝连接
	at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
	at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
	at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:350)
	at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081)
2020-06-20 11:31:30,652 INFO  [main-SendThread(node2:2181)] zookeeper.ClientCnxn: Opening socket connection to server node2/10.211.55.60:2181. Will not attempt to authenticate using SASL (unknown error)
2020-06-20 11:31:30,652 ERROR [main] zookeeper.RecoverableZooKeeper: ZooKeeper create failed after 4 attempts
2020-06-20 11:31:30,652 ERROR [main] master.HMasterCommandLine: Master exiting
java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster. 
	at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:2486)
	at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:231)
	at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:137)
	at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
	at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:127)
	at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2496)
Caused by: org.apache.hadoop.hbase.ZooKeeperConnectionException: master:600000x0, quorum=node1:2181,node2:2181,node3:2181, baseZNode=/hbase Unexpected KeeperException creating base node
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.createBaseZNodes(ZooKeeperWatcher.java:206)
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:187)
	at org.apache.hadoop.hbase.regionserver.HRegionServer.<init>(HRegionServer.java:594)
	at org.apache.hadoop.hbase.master.HMaster.<init>(HMaster.java:420)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:2479)
	... 5 more
Caused by: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:783)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.createNonSequential(RecoverableZooKeeper.java:565)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.create(RecoverableZooKeeper.java:544)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.createWithParents(ZKUtil.java:1204)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.createWithParents(ZKUtil.java:1182)
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.createBaseZNodes(ZooKeeperWatcher.java:194)
	... 13 more

下面开始启动HBase,在node1上输入命令:

start-hbase.sh

查看jps
node1会出现:

[caizhengjie@node1 ~]$ jps
2769 SecondaryNameNode
4804 QuorumPeerMain
4984 HMaster
6202 Jps
2475 NameNode
5244 HRegionServer
2606 DataNode

node2会出现:

[caizhengjie@node2 Hadoop]$ jps
3427 HRegionServer
2215 DataNode
3659 HMaster
3340 QuorumPeerMain
4302 Jps

node3会出现:

[caizhengjie@node3 logs]$ jps
2784 QuorumPeerMain
3431 Jps
2027 DataNode
2878 HRegionServer

则表示HBase安装成功,这里有的人会发现我的node1和node2出现了两个HMaster,因为我设置了backup-masters。

下面我来访问一下网页:http://10.211.55.59:60010/master-status
在这里插入图片描述
在这里插入图片描述
一切正常!

第六步:常见问题

在启动HBase的过程中会出现一些问题,不过也不要被这些问题吓到,通过查看日志文件,都是可以找到解决方案的。
我遇到的第一个问题:No space left on device
意思是磁盘空间不够,之前我安装的Hadoop,Hbase都是安装在/home/caizhengjie/目录下面的,但是随着文件数量新增,出现了磁盘空间不够,我通过df -h命令查看磁盘空间,果然不够
在这里插入图片描述
由图片可以看出home目录下的磁盘空间只有2.6G,而根目录下的空间有27G,因为是虚拟机,所以我可以在后面继续扩磁盘空间。因此我只好把Hadoop那些文件全部转移到/opt/目录下,这下就解决了磁盘不足的问题。

我遇到的第二个问题:运行HBase报SLF4J: Class path contains multiple SLF4J bindings
主要原因是slf4j-log4j12.jar包和Hadoop中的slf4j-log4j12.jar包冲突导致的
解决方法是将/opt/Hadoop/hbase/lib中的slf4j-log4j12.jar包删除即可,但是不要将三台机的slf4j-log4j12.jar包都给删掉,不然又会报错:Failed to load class org.slf4j.impl.StaticLoggerBinder,我是把node1和node2的给删除掉了,留下node3

参考文章:

总结

对于新手安装HBase来说,就是照着其他的模版来也未必能不踩坑的顺利安装好,这里我就总结两点经验。第一:坚持!一定要坚持!行百里者半九十。第二:一定要多看日志文件!这一点非常重要,因为并不是所有的报错信息在网上都能找到,只有看到报错信息才能知道哪里的问题。通常对于小白来说,什么是日志信息?日志信息说白了就是所有的报错信都在日志信息里面。
如何查看日志信息?通常来说可以使用more或cat命令,日志信息在/opt/Hadoop/hbase/logs目录下
可以通过下面的命令来查看日志信息

cat hbase-caizhengjie-master-node1.log 

以上内容仅供参考学习,如有侵权请联系我删除!
如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。
您的鼓励就是博主最大的动力!

  • 17
    点赞
  • 150
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
1. 安装Java环境 在CentOS 7上安装HBase之前,需要先安装Java环境。可以使用以下命令安装OpenJDK 8: ``` sudo yum install java-1.8.-openjdk-devel ``` 2. 下载和安装HBase 可以从HBase官方网站下载最新版本的HBase。下载完成后,解压缩文件并将其移动到适当的位置。例如,可以将HBase解压缩到/opt目录下: ``` sudo tar -xvf hbase-2.2.6-bin.tar.gz -C /opt/ ``` 3. 配置HBaseHBase的安装目录下,有一个conf目录,其中包含了HBase的配置文件。需要根据实际情况修改这些配置文件。 3.1 hbase-env.sh 这个文件包含了HBase的环境变量设置。可以根据需要修改JAVA_HOME和HBASE_HOME变量。例如: ``` export JAVA_HOME=/usr/lib/jvm/java-1.8.-openjdk export HBASE_HOME=/opt/hbase-2.2.6 ``` 3.2 hbase-site.xml 这个文件包含了HBase的主要配置信息。需要根据实际情况修改以下配置项: - hbase.rootdir:HBase数据存储的根目录。可以设置为本地文件系统或HDFS路径。例如: ``` <property> <name>hbase.rootdir</name> <value>file:///opt/hbase-2.2.6/data</value> </property> ``` - hbase.zookeeper.quorum:ZooKeeper集群的地址。例如: ``` <property> <name>hbase.zookeeper.quorum</name> <value>zk1.example.com,zk2.example.com,zk3.example.com</value> </property> ``` - hbase.zookeeper.property.dataDir:ZooKeeper数据存储的目录。例如: ``` <property> <name>hbase.zookeeper.property.dataDir</name> <value>/opt/hbase-2.2.6/zookeeper</value> </property> ``` 3.3 regionservers 这个文件包含了HBase集群中的RegionServer节点列表。可以在这个文件中添加或删除节点。 4. 启动HBase 在完成HBase的配置后,可以使用以下命令启动HBase: ``` sudo /opt/hbase-2.2.6/bin/start-hbase.sh ``` 可以使用以下命令检查HBase是否已经启动: ``` sudo /opt/hbase-2.2.6/bin/hbase shell ``` 如果成功进入HBase Shell,则说明HBase已经成功启动。 5. 停止HBase 可以使用以下命令停止HBase: ``` sudo /opt/hbase-2.2.6/bin/stop-hbase.sh ``` 注意:在停止HBase之前,需要先关闭HBase Shell。可以使用exit命令退出HBase Shell。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

<一蓑烟雨任平生>

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值