下载解压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
dataDir=/home/zookeeper/data
clientPort=2181
initLimit=10
syncLimit=5
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
查看当前节点是否是
leader
Mode: 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
//所有机器的ip
hbase.zookeeper.property.dataDir /home/zookeeper/data
//与zoo.cfg中相同
regionservers:
添加
ubuntu02
ubuntu03
复制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即可。