记录hbase遇到的问题

这次记录下学习hbase遇到的一些问题,有了新问题也会追加。

背景:使用vmware创建3台桥接模式虚拟机进行集群,熟练之后大概会使用7台。

宿主机操作系统:mac osx 10.11.3 16G 256G SSD。

软件版本:hadoop 2.7.2、zookeeper 3.4.8、hbase 1.2.2

1、瞎捣鼓,通过hdfs将/hbase目录删除了,此时执行在hbase shell中执行list命令是看不到表了的,但是再创建与之前相同名称的表便发生了Table Already Exists异常。

 

因为hbase的所有数据是在hdfs上进行存储的,所以当时以为删除hdfs上的hbase信息就可以了,但是,zookeeper中也对我们的目录结构进行了保存。所以,还需要将zookeeper中的hbase信息删除。

进入zookeeper,然后执行rmr /hbase/table便能清空所有表信息(慎用),当然也可以只删除指定表的信息。

 

2、wifi环境,dhcp协议,java客户端连接zookeeper服务器速度异常缓慢,当使用网线时却没有这个问题。

解决方式:1、使用网线   2、配置静态ip与dns

Ps:该问题仅在mac上发生过。

3、集群的zookeeper服务列表如下:

dataDir=/usr/local/project/hadoop/tmp/zookeeper/data
dataLogDir=/usr/local/project/hadoop/tmp/zookeeper/log
clientPort=2181
server.1=Master:2888:3888
server.2=Slave1:2888:3888
server.3=Slave2:2888:3888

结果启动hbase服务之后,dataDir下的myid遭到了覆写,变成了0、1、2,而且关闭时也会报错

no zookeeper to stop because no pid file /tmp/hbase-root-zookeeper.pid 

关于这个问题,是因为hbase/conf目录下的配置不正确导致的,为hbase/conf/hbase-env.sh添加export HBASE_MANAGES_ZK=false即可。

4、PleaseHoldException:Master is initializing

其实我虚拟机有6台,家里环境一套,公司一套,然后某次突然发生了这个错误。该错误在是通过shell执行list命令时出现的,查资料后发现是几台虚拟机时间不同步导致的,所以我们需要统一配置时间。

[root@Master ~]# date
2016年 08月 04日 星期四 19:14:28 CST
[root@Master ~]# yum install -y ntpdate
.........
[root@Master ~]# ntpdate  0.cn.pool.ntp.org
.........
[root@Slave2 ~]# date
2016年 08月 04日 星期四 11:42:03 CST

这样便能使集群机器的时间同步了。

这之后还可能会继续报错,原因还是时间问题,因为如果之前有table的话,创建时间与现在的时间有差异。

解决时是按照上面第1点中的方式将table表进行了删除,之后便能保证不会发生这样的错误了。

猜你喜欢

转载自zk-chs.iteye.com/blog/2315484