此篇是笔者在学习林子雨老师的《大数据技术原理与应用》第四章的过程中遇到的问题答疑,在这个学习过程中,我遇到了不少的坑,然后像一只无头苍蝇一样百度,得到一堆乱七八糟的答案,心很累,所以现在尽可能多分享一点来帮助其他人。以下若有错误的地方,感谢指出!
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)来定位问题,提取关键字再去搜索会节省很多时间!!!!
好了好了,继续学吧~