2. Zookeeper
的伪集群模式搭建
Zookeeper 不但可以在单机上运行单机模式 Zookeeper,而且可以在单机模拟集群模式
Zookeeper 的运行,也就是将不同节点运行在同一台机器。我们知道伪分布模式下
Hadoop 的操作和分布式模式下有着很大的不同,但是在集群为分布 式模式下对
Zookeeper 的操作却和集群模式下没有本质的区别。显然,集群伪分布式模式为我们体
验 Zookeeper 和做一些尝试性的实验提供了很大 的便利。比如,我们在实验的时候,可
以先使用少量数据在集群伪分布模式下进行测试。当测试可行的时候,再将数据移植到集
群模式进行真实的数据实验。这样不 但保证了它的可行性,同时大大提高了实验的效率。
这种搭建方式,比较简便,成本比较低,适合测试和学习,如果你的手头机器不足,就可
以在一台机器上部署了 3 个 server。
2.1.
注意事项
在一台机器上部署了 3 个 server,需要注意的是在集群为分布式模式下我们使用的每个配
置文档模拟一台机器,也就是说单台机器及上运行多个 Zookeeper 实例。但是,必须保
证每个配置文档的各个端口号不能冲突,除了 clientPort 不同之外,dataDir 也不同。另
外,还要在 dataDir 所对应的目录中创建 myid 文件来指定对应的 Zookeeper 服务器实
例。
(1)clientPort 端口:如果在 1 台机器上部署多个 server,那么每台机器都要不同的
clientPort,比如 server1 是 2181,server2 是 2182,server3 是 2183,
(2)dataDir 和 dataLogDir:dataDir 和 dataLogDir 也需要区分下,将数据文件和日
志文件分开存放,同时每个 server 的这两变量所对应的路径都是不同的。
(3)server.X 和 myid: server.X 这个数字就是对应,data/myid 中的数字。在 3 个
server 的 myid 文件中分别写入了 0,1,2,那么每个 server 中的 zoo.cfg 都配
server.0 server.2,server.3 就行了。因为在同一台机器上,后面连着的 2 个端口,3 个
server 都不要一样,否则端口冲突。
下面是我所配置的集群伪分布模式,分别通过 zoo1.cfg、zoo2.cfg、zoo3.cfg 来模拟由
三台机器的 Zookeeper 集群。详见下图 1.1-1.3
代码清单 1.1 zoo1.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10