CentOS7 部署zookeeper-3.4.6 + Hbase-1.0.0

来源:互联网 发布:解答高数题的软件 编辑:程序博客网 时间:2024/06/06 08:47

之前早早的部署好了Hbase,不过用的是hbase集成的zookeeper,据说效果不好(具体如何没有亲测)。于是决定自己独立搭起zookeeper服务器。 首先下载了最新的zookeeper稳定版,目前是3.4.6,解压后开始修改配置文件
根据官方文档的描述,复制conf/zoo_sampe.cfg改名为zoo.cfg,设置如下:

# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=2# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.dataDir=/hdfs/zookeeper# the port at which the clients will connectclientPort=2181server.1 hadoop0:2888:3888server.2 hadoop1:2888:3888server.3 hadoop2:2888:3888                                 

注释已经写得比较清楚了

tickTime是zookeeper的时钟周期,单位是毫秒。initLimit和syncLimit后面跟的数值都是以这个时钟周期为单位的。

initLimit是follower连接leader的超时周期

syncLimit是follower允许和leader不保持同步的最大容忍周期

dataDir是zookeeper的内存快照等数据的保存目录,由于myid也保存在这个目录里,所以这个目录最好不要设置为系统的临时目录,否则每次重启机器都要重建myid

clientPort就是zookeeper客户端连接zookeeper服务器用的端口,如果修改了2181这个默认值,之后在hbase中也要做相应设置

server.x 就是设置zookeeper服务器了。不过要注意的是,zookeeper识别自己是哪个服务器,是通过dataDir里面的myid文件来确定的,而不是这里的参数。因此这里设置好之后,还要去dataDir(我这里是/hdfs/zookeeper)里面手工建立个文件叫myid,内容就是server.x中的x,比如我这里的hadoop0:/hdfs/zookeeper/myid,内容是

1

server.x后面跟的两个端口号,第一个是zookeeper服务器之间通信用的,第二个则是用来做leader election的。如果修改了2888、3888这两个默认值,在hbase的配置文件中也要做相应的设置

修改好这些后,就可以把zookeeper目录复制到各个zookeeper服务器上并运行了

这里要注意的是,与hdfs、hbase不同,zookeeper服务器是独立启动的,而不是在一台机器上敲个命令所有节点都自动启动。因此这里我写了个脚本:

for i in $(seq 0 2)do        echo hadoop$i:        ssh root@hadoop$i /opt/zookeeper/bin/zkServer.sh $1Done

其中的路径是zookeeper里面的zkServer.sh的所在路径,我这里把zookeeper文件夹整体放到了opt里面。利用这个脚本就可以方便的启动、关闭、查询zookeeper的状态了。比如需要查询zookeeper的状态可以如下操作:

[root@hadoop0 opt]# ./zooKeeper.sh status   hadoop0:JMX enabled by defaultUsing config: /opt/zookeeper/bin/../conf/zoo.cfgMode: followerhadoop1:JMX enabled by defaultUsing config: /opt/zookeeper/bin/../conf/zoo.cfgMode: leaderhadoop2:JMX enabled by defaultUsing config: /opt/zookeeper/bin/../conf/zoo.cfgMode: follower

可以看到,当前hadoop1是leader,其他的是follower。

中间有个插曲,就是启动zookeeper后,zookeeper服务器之间无法通信,原因是被系统的iptables限制了。由于对iptables没有过多的了解也暂时不打算深究,我直接用iptables -F清空了设置就可以了

zookeeper启动好以后可以参考官方文档用zookeeper里的bin/zkCli.sh连接zookeeper服务器做一些小例子,这里就不赘述了。

启动好zookeeper后,hbase作相应的设置就好了,首先修改hbase目录下的conf/hbase-env.sh将hbase的zk关掉,也就是去掉注释并修改这个语句

export HBASE_MANAGES_ZK=false   

然后修改conf/hbase-site.html,注释掉hbase.zookeeper.property.dataDir相关的设置,zookeeper.quorum设置为zookeeper的服务器就可以了,我这里是

 <property>    <name>hbase.zookeeper.quorum</name>    <value>hadoop0,hadoop1,hadoop2</value></property>

与之前hbase的配置相同没做修改。
其他hbase的设置参考我之前的博文 http://blog.csdn.net/strangerzz/article/details/45040471 ,之后启动hbase就可以了

0 0
原创粉丝点击