Hbase+Zookeeper+hadoop使用过程遇到的问题

时间:2022-03-25 08:28:06
下载解压zookeeper-3.4.6 在/etc/profile中添加

$export ZOOKEEPER_INSTALL={zookeeper安装路径}

$export PATH=$PATH:$ZOOKEEPER_INSTALL/bin

之后 source /etc/profile
在zookeeper安装目录下的conf子目录中新建:zoo.cfg添加:

tickTime=2000  Zookeeper服务器心跳时间,单位毫秒

dataDir=/home/zookeeper/data # 数据持久化路径

clientPort=2181 # 连接端口

initLimit=10 # 投票选举新leader的初始化时间。

syncLimit=5 # LeaderFollower之间的最大响应时间单位,响应超过syncLimit*tickTimeLeader认为Follwer死掉,从服务器列表中删除Follwer

dataLogDir={安装路径/logs} 日志保存路径  这个要自己手动新建

server.1=namenode:2888:3888

server.2=datanode1:2888:3888

server.3=datanode2:2888:3888 最好用主机名


把zoo.cfg复制到每台机器的conf子目录里(其他机器也要先安装好zookeeper)
之后在每台机器的持久保存数据的路径(/home/zookeeper/data)里新建myid文件,里面写入n,n是zoo.cfg里server.1, server.2, server.3对应的机器的1,2,3.....(比如主机写1,ubuntu02写2,ubuntu03写3)
在主机的zookeeper安装目录里执行sh bin/zkServer.sh start如果报错syntaxerror,expecting"fi",执行如下语句sudo dpkg-reconfigure dash  原因:兼容性问题,因为linux将sh默认指向了dash,而不是bash
之后再start就可以了。在其他机器上也sh bin/zkServer.sh start之后回到master,jps,发现zookeeper已启动,新增进程QuorumPeerMain,slaves上也增加了这个进程。
sh bin/zkServer.sh status 查看当前节点是否是leaderMode: follower 表示是跟从


----------------------------------------------------------------
安装Hbase:hadoop1.2.1对应的hbase版本是hbase0.98.0
master上解压,找到conf子目录,修改hbase-env.sh, hbase-site.xml, regionservers如下:
hbase-env.sh:添加export JAVA_HOME={jdk安装路径}export HBASE_MANAGES_ZK=false
hbase-site.xml:添加:属性:名:hbase.master.maxclockskew   值:180000  //允许master和slave时间不同步在3分钟以内。
hbase.rootdir hdfs://ubuntuShirui:9000/hbase     //主机名与端口要和hadoop的core-site.xml里的HDFS路径位置相同。hbase.master hdfs://ubuntuShirui:60000   //hbase master的ip+端口hbase.distributed true  //确定分布式部署hbase.zookeeper.property.clientPort 2181 //需要跟zookeeper的conf/zoo.cfg里clientPort的配置一致。hbase.zookeeper.quorum ubuntuShirui,ubuntu02,ubuntu03  //所有机器的iphbase.zookeeper.property.dataDir /home/zookeeper/data     //与zoo.cfg中相同regionservers:添加ubuntu02ubuntu03
复制hbase安装目录下的所有,包括配置文件到其他slave机器上,更改hbase-env.sh里jdk的路径为合适值。
运行bin里的start-hbase.sh,查看jps里是否主机上运行了HMASTER,slave机器里运行了HRegionServer如果是,则搭建成功。
HRegionServer无法启动的话,查看slave机器上regionserver相关的log信息,如果出现ClockOutOfSyncException字样的信息,说明需要手动同步。用date --set= "04/18/14 10:00:00" 来设置一台机器的时间。同时3台机器执行就好。
之后用浏览器打开http://192.168.199.77:60010/master-status如果显示hbase主机的状态,说明正常运行。-----------------------------------搭建完毕,现在可以进入bin的hbase shell调试,建表删表查询了。
关闭步骤:关闭hbase:hbase的bin里:/stop-hbase.sh关闭zookeeper:zookeeper的bin里:/zkServer.sh stop   (每台机器。权利不够时chmod ugo+x * -R)关闭hadoop:stop-all.sh
----------------------------------------------如果遇到进入shell之后HMaster自动挂掉的问题,并且master的log里出现“TableExistsException: hbase:namespace”字样,很可能是更换了Hbase的版本过后zookeeper还保留着上一次的Hbase设置,所以造成了冲突。解决方案:

1.切换到zookeeper的bin目录;

2.执行$sh zkCli.sh

输入‘ls /’

4.输入‘rmr /hbase’

5.退出

重启hbase即可。

------