鉴于ZooKeeper 本身的特点,服务器集群的节点数推荐设置为奇数台。这里规划为三台,分别为hadoop1、hadoop2 和hadoop3。
(1)ZooKeeper 的下载
此处使用的是ZooKeeper 3.4.10 版本。
(2)解压安装
将下载的文件解压并安装到ZooKeeper 的目录下,解压缩后的目录图如图5.7 所示。
[hadoop@hadoop1 ~]$tar -zxvf zookeeper-3.4.10.tar.gz -C apps/
图5.7 解压缩后目录图
(3)修改配置文件
找到并修改zoo.cfg 文件,参数如图5.8 所示。
图5.8 修改zoo.cfg 文件参数
(4)基本配置
①tickTime:心跳基本时间单位,毫秒级,ZK 基本上所有的时间都是这个时间的整数倍。
②initLimit:表示在Leader 选举结束后,Followers 与Leader 同步需要的时间,如果Followers比较多或Leader 的数据非常多时,同步时间相应可能会增加,则这个值也需要相应增加。当然,这个值也是Follower 和Observer 在开始同步Leader 的数据时的最大等待时间(setSoTimeout)。
③syncLimit:这时间容易与上面的时间混淆,它也表示Follower 和Observer 与Leader 交互时的最大等待时间,只不过是在与Leader 同步完毕之后,进入正常请求转发或ping 等消息交互时的超时时间。
④dataDir:内存数据库快照存放地址,如果没有指定事务日志存放地址(dataLogDir),默认也是存放在这个路径下,建议两个地址分开存放到不同的设备上。
⑤clientPort:配置ZK 监听客户端连接的端口,如图5.9 所示。
图5.9 中“server.1 =hadoop1:2888:3888”对应的格式:“server.serverid=host:tickpot:electionport”,其中的参数的意义如下:
①server:固定写法。
②serverid:每个服务器的指定ID(必须处于1 ~255,必须每一台机器不能重复)。
图5.9 配置ZK 监听客户端连接的端口
③host:主机名。
④tickpot:心跳通信端口。
⑤electionport:选举端口。
(5)高级配置
①dataLogDir:将事务日志存储在该路径下,这个日志存储的设备效率会影响ZooKeeper 的写吞吐量。
②globalOutstandingLimit:(Java system property: ZooKeeper. globalOutstandingLimit)默认值是“1 000”,限定了所有连接到服务器但还没有返回响应的请求个数(所有客户端请求的总数,不是连接总数),这个参数是针对单台服务器而言的,设定太大可能会导致内存溢出。
③preAllocSize:(Java system property: ZooKeeper.preAllocSize)默认值64 MB,以“KB”为单位,预先分配额定空间用于后续transactionlog 写入,每当剩余空间小于4 KB 时,就会又分配64 MB,如此循环。
④maxClientCnxns:默认值是“10”,一个客户端能够连接同一个服务器的最大连接数,根据IP 来区分。如果设置为“0”,表示没有任何限制。设置该值是为了防止DoS 攻击。
⑤clientPortAddress:与clientPort 匹配,表示某个IP 地址,如果服务器有多个网络接口(多个IP 地址),如果没有设置这个属性,则clientPort 会绑定所有IP 地址,否则只绑定该设置的IP 地址。
⑥minSessionTimeout:最小的session Time 时间,默认值是2 个tick Time,客户端设置的session Time 如果小于这个值,则会被强制协调为这个最小值。
⑦maxSessionTimeout:最大的session Time 时间,默认值是20 个tick Time. ,客户端设置的session Time 如果大于这个值,则会被强制协调为这个最大值。
(6)集群配置选项
①electionAlg:领导选举算法,默认是“3”,“0”表示Leader 选举算法(基于UDP),“1”表示非授权快速选举算法(基于UDP),“2”表示授权快速选举算法(基于UDP),目前“1”和“2”算法都没有应用,不建议使用,“0”算法未来也可能会被淘汰,只保留“3”(Fast Leader Election)算法,因此,最好直接使用默认值。
③leaderServes:如果该值不是no,则表示该服务器作为Leader 时是需要接受客户端连接的。为了获得更高吞吐量,当服务器数有三台以上时,一般建议设置为“no”。(www.xing528.com)
④cnxTimeout:默认值是5 000,单位“ms”表示leaderelection 时打开连接的超时时间。
(7)分发
将配置文件分发到集群其他机器中:
然后到各个ZooKeeper 服务器节点,新建目录“dataDir = /home/hadoop/data/zkdata”,这个目录就是在“zoo. cfg”中配置的dataDir 的目录,建好之后,在里面新建一个文件,文件名为“myid”,里面存放的内容是服务器的ID,也就是“server.1 =hadoop01:2888:3888”当中的ID,为“1”,那么对应的每个服务器节点都应该作类似操作。
用服务器hadoop1 举例:
当以上所有步骤都完成时,意味着ZooKeeper 的配置文件相关的修改都完成。
(8)配置环境变量
找到.bashrc,并配置环境变量ZOOKEEPER_HOME 和PATH,如图5.10 所示。
修改完成后,保存退出,再执行命令“[hadoop@ hadoop1 ~]$source . bash”刷新. bash文件。
(9)验证
启动软件,并验证安装是否成功:
启动命令:zkServer.sh start
停止命令:zkServer.sh stop
查看状态命令:zkServer.sh status
注意:虽然在配置文件中写明了服务器的列表信息,但还是需要逐个启动每一台服务器,不是一键启动集群模式,每启动一台查看一下状态再启动下一台。
1)启动hadoop1
先启动,然后查看状态,这台机器是从属状态,状态展示如图5.11 所示。
图5.10 配置环境变量
图5.11 状态展示
2)启动hadoop2
先启动,然后查看状态,这台机器是领导状态,状态展示如图5.12 所示。
图5.12 状态展示
3)启动hadoop3
先启动,然后查看状态,这台机器是从属状态,状态展示如图5.13 所示。
图5.13 状态展示
(10)查看进程
3 台机器上都有QuorumPeerMain 进程。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。