HBase Zookeeper安装测试排坑

此篇是笔者在学习林子雨老师的《大数据技术原理与应用》第四章的过程中遇到的问题答疑,在这个学习过程中,我遇到了不少的坑,然后像一只无头苍蝇一样百度,得到一堆乱七八糟的答案,心很累,所以现在尽可能多分享一点来帮助其他人。以下若有错误的地方,感谢指出!

macOS
jdk 1.8
hadoop 2.7.7 下载

hbase 2.1.5 下载

zookeeper 3.5.7

1.版本问题

首先最重要的就是版本问题,请去hadoop和hbase版本关系官方说明文档里找到不冲突的版本进行下载,不然会出各种bug,要你命(注意jdk也要不冲突的好),关于zookeeper的版本可以自行百度
在这里插入图片描述
最开始我选的是hadoop3*,hbase2.2.2的,理论上不冲突,但是不知道为什么就是不行,后来参考了这个
选择了hadoop2.x的,感觉可以了!!

2.关于jps的解释

第一次接触这个对这些都很陌生,不知道什么意思,所以我解释一下,懂了就会避免一些不必要的问题。以下分别是:只开启hadoop的jps和开了hadoop和hbase的jps:
在这里插入图片描述
在这里插入图片描述

显示的就是进程编号和进程名字,如果hbase启动正常就会出现HRegionServer和HMaster。
然而有时候在重复开启,关闭hbase的过程中会遇到XXX running as process 12345. Stop it first.网上会告诉你用kill -9 12345 杀死进程再启动就好了,可是有时候会有杀不完的进程,那么请注意:在你下一次start-hbase.sh之前要把以前所有的都杀掉(在start的时候,进程A起来了,且告诉你有进程B在运行,先停止它,所以你杀了进程B,再次start的时候,他又会提醒你进程A在运行,先停止它,所以正确方法是把AB全杀了)。同理,在遇到有多个同内容进程的时候,杀掉“历史遗留进程”
在这里插入图片描述

报错:关闭hbase的时候 stopping hbasecat: /tmp/hbase-root-master.pid: No such file or directory
同网上说的,tmp文件夹经常丢所以需要改路径,怎么改?

3.报错

执行HBase shell时出现ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
截图:(网图)
在这里插入图片描述
解决:解决方法
不行的话,请重新格式化格式化方法及注意点

4.报错

ERROR: Can’t get master address from ZooKeeper; znode data == null
这个问题可就厉害了,我太菜了以至于我在这个坑里躺了n天,甚是绝望,网上的回答我大都试了,都没用,最后定位到是zookeeper的问题,log如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
java.net.ConnectException: Connection refused
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:361)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1141)
2020-04-30 10:39:44,715 ERROR [main] zookeeper.RecoverableZooKeeper: ZooKeeper create failed after 4 attempts
2020-04-30 10:39:44,715 INFO  [main-SendThread(localhost:2181)] zookeeper.ClientCnxn: Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
2020-04-30 10:39:44,822 INFO  [main] zookeeper.ZooKeeper: Session: 0x0 closed
2020-04-30 10:39:44,822 INFO  [main-EventThread] zookeeper.ClientCnxn: EventThread shut down for session: 0x0
2020-04-30 10:39:44,822 ERROR [main] regionserver.HRegionServer: Failed construction RegionServer
org.apache.hadoop.hbase.ZooKeeperConnectionException: master:160000x0, quorum=localhost:2181, baseZNode=/hbase Unexpected KeeperException creating base node
at org.apache.hadoop.hbase.zookeeper.ZKWatcher.createBaseZNodes(ZKWatcher.java:193)
at org.apache.hadoop.hbase.zookeeper.ZKWatcher.<init>(ZKWatcher.java:167)
at org.apache.hadoop.hbase.zookeeper.ZKWatcher.<init>(ZKWatcher.java:119)
at org.apache.hadoop.hbase.regionserver.HRegionServer.<init>(HRegionServer.java:623)
at org.apache.hadoop.hbase.master.HMaster.<init>(HMaster.java:492)
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:3099)
at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:236)
at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:140)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:149)
at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:3117)
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:549)
at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.create(RecoverableZooKeeper.java:528)
at org.apache.hadoop.hbase.zookeeper.ZKUtil.createWithParents(ZKUtil.java:1200)
at org.apache.hadoop.hbase.zookeeper.ZKUtil.createWithParents(ZKUtil.java:1178)
at org.apache.hadoop.hbase.zookeeper.ZKWatcher.createBaseZNodes(ZKWatcher.java:183)
... 14 more
2020-04-30 10:39:44,824 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:3106)
at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:236)
at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:140)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:149)
at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:3117)
Caused by: org.apache.hadoop.hbase.ZooKeeperConnectionException: master:160000x0, quorum=localhost:2181, baseZNode=/hbase Unexpected KeeperException creating base node
at org.apache.hadoop.hbase.zookeeper.ZKWatcher.createBaseZNodes(ZKWatcher.java:193)
at org.apache.hadoop.hbase.zookeeper.ZKWatcher.<init>(ZKWatcher.java:167)
at org.apache.hadoop.hbase.zookeeper.ZKWatcher.<init>(ZKWatcher.java:119)
at org.apache.hadoop.hbase.regionserver.HRegionServer.<init>(HRegionServer.java:623)
at org.apache.hadoop.hbase.master.HMaster.<init>(HMaster.java:492)
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:3099)
... 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:549)
at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.create(RecoverableZooKeeper.java:528)
at org.apache.hadoop.hbase.zookeeper.ZKUtil.createWithParents(ZKUtil.java:1200)
at org.apache.hadoop.hbase.zookeeper.ZKUtil.createWithParents(ZKUtil.java:1178)
at org.apache.hadoop.hbase.zookeeper.ZKWatcher.createBaseZNodes(ZKWatcher.java:183)
... 14 more

在start-hbase.sh之后一开始有HMaster,但是几秒之后就闪退了,重点看有ERROR、Caused by这种关键词那里,查了很久还是没查到,有什么删除zookeeper datadir的,或者关闭防火墙的,或者设置Session Timeout的(这个解决方法大都是外置zookeeper,但是在课程教程里用的是hbase自带的zookeeper)都没用,到现在我也不知道,后来还是使用了外置的zookeeper之后才解决的,解决方法:解决方法
按全分布式配置需要多台主机,我只有一台,所以就按从机是主机来配置

一些参考:
参考1

参考2

参考3

参考4

参考5

从以上的经历来看,报错盲目百度的效率有时候真的不高,要学会看logs(hbase目录/logs)来定位问题,提取关键字再去搜索会节省很多时间!!!!
好了好了,继续学吧~