Phoenix初遇HBase的问题解决思路分析

Phoenix初遇HBase的问题,思路分析

刺激星期一,快乐星期二。
仅此记录自己解决一个问题的思路。
Phoenix+HBase的初次碰撞!
环境介绍:Hadoop2.7.7、HBase2.0.3、Phoenix5.0
Hadoop的环境是已经搭建好的高可用,完全分布,3节点,所以这边搭建的HBase也是对应的分布式。
故事高潮要从搭建完HBase开始说起,Phoenix在首次使用的过程中,需要执行

./sqlline.py master,slave1,slave2:2181

问题来了,在执行这条命令后,5mins后shell界面毫无反应,执行退出按键,出现报错如下:

Traceback (most recent call last):
File “bin/sqlline.py”, line 120, in
(output, error) = childProc.communicate()
File “/usr/lib64/python2.7/subprocess.py”, line 797, in communicate
self.wait()
File “/usr/lib64/python2.7/subprocess.py”, line 1376, in wait
pid, sts = _eintr_retry_call(os.waitpid, self.pid, 0)
File “/usr/lib64/python2.7/subprocess.py”, line 478, in _eintr_retry_call
return func(*args)
KeyboardInterrupt

找错误常规第一步:度娘。
很可惜,找到个报错一样的,但是过程不一样,而且错误发生的根本原因还没说,无奈,自己动手!
可能一:怀疑是python的版本造成了上述错误的出现,那么好,本地下的python2.7,啪啪打自己脸,排除。
可能二:Phoenix本身问题?日志查看,发现配置文件上是直接输出控制台的也就是以上所见,排除。
可能三:HBase问题,你和HBase连接,那么好,我去看HBase的日志输出log。什么错不重要重要的是找到了错误,滴,DataNode操作不了,hadoop进入安全模式。

找准方向

咱本着学习进步的心态,就一探它到底是何原因。
#命令行输入

hdfs dfsadmin -safemode get

结果如下
Safe mode is ON in slave1/xxx.16.xxx.xx:8020
Safe mode is ON in master/xxx.16.xxx.xx:8020

HDFS进入安全模式,最常见的就是副本数对应不上你自己设定的,文件破损,block丢失等问题。
那么好,改配置降低属性限定这条路是寻找不到根本原因的,那么去查询哪些文件破损丢失了。
1、查看HDFS上的各个文件路径。
2、命令

hadoop fsck /user

将每个HDFS上的路径都试了个遍,发现是在/hbase/data/hbase下出现了大量的文件破损情况。
status:CORRUPT(破损)
Missing replicas:xxxxx 【重点位置,允许适量miss】
在这里插入图片描述
解决方式:删除破损文件
这个时候要先退出安全模式,否则会卡着不动,且日志报错。

hdfs dfsadmin -safemode leave

重启hadoop,安全模式解除!
想法:问题还是处在HBase上,由于HDFS开启了安全模式,导致数据无法写入、无法读取、无法操作,所以也间接导致了Phoenix连接不上HBase(其实这里在HBase已经错了,重现了一下错误场景,这个时候HBase Shell能成功进入,但是执行list命令出现报错)。
重启HBase,进入Hbase Shell,执行list,成功。进入Phoenix执行

./sqlline.py master,slave1,slave2:2181

成功!
在这里插入图片描述
后面午休的时候,想了想其实这是一次由DataNode未格式化完全引起的效应,粗心了。

猜你喜欢

转载自blog.csdn.net/qq_42035364/article/details/102686704