《HBase管理指南》一1.5 ZooKeeper安装-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

《HBase管理指南》一1.5 ZooKeeper安装

简介:

本节书摘来异步社区《HBase管理指南》一书中的第1章,第1.5节,作者: 蒋燚峰 译者: 苏南,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.5 ZooKeeper安装

分布式的HBase需要运行一个ZooKeeper集群。HBase集群的所有节点和客户端都必须能够访问该ZooKeeper仲裁团。

此节将描述如何建立一个ZooKeeper集群。我们将仅为我们的HBase集群建立一个单机运行的ZooKeeper节点,但是如果是在生产环境中,就应该建立一个至少含有三个节点ZooKeeper仲裁团。此外,还要确保运行节点的个数是奇数。

我们将在本节的“1.5.4 补充说明”一节中讨论集群式ZooKeeper的安装。

1.5.1 准备

首先,要确保在你的ZooKeeper服务器上已经安装好了Java。

我们将使用hadoop用户来作为所有ZooKeeper守护进程和文件的所有者。所有ZooKeeper文件和数据将被存储在/usr/local/ZooKeeper目录下,你需要预先创建好该目录。我们的ZooKeeper也将安装在master1上。

我们将在client1上安装一个ZooKeeper客户端。因此,在client1上也要安装Java并准备好hadoop用户和目录。

1.5.2 操作步骤

安装一个单机运行的ZooKeeper的步骤如下。

1.从ZooKeeper的官方网站(http://ZooKeeper.apache.org/releases.html#download)下载ZooKeeper的最新稳定版本。

2.下载其安装压缩包并将其解压缩到我们为ZooKeeper准备的根目录中。为了更便于安装,我们要设置一个ZK_HOME环境变量。在写作本书时,ZooKeeper的最新稳定版是3.4.3版。

hadoop@master1$ ln -s ZooKeeper-3.4.3 current
hadoop@master1$ export ZK_HOME=/usr/local/ZooKeeper/current

3.为ZooKeeper创建几个目录,用来存储的快照和事务日志。

hadoop@master1$ mkdir -p /usr/local/ZooKeeper/data
hadoop@master1$ mkdir -p /usr/local/ZooKeeper/datalog

4.创建$ZK_HOME/CONF/java.env文件,并在其中输入下列的Java设置。

hadoop@master1$ vi $ZK_HOME/conf/java.env
JAVA_HOME=/usr/local/jdk1.6
export PATH=$JAVA_HOME/bin:$PATH

5.复制ZooKeeper样本配置文件并进行如下一些修改,以设置ZooKeeper存储数据的位置。

hadoop@master1$ cp $ZK_HOME/conf/zoo_sample.cfg $ZK_HOME/conf/zoo.cfg

hadoop@master1$ vi $ZK_HOME/conf/zoo.cfg
dataDir=/usr/local/ZooKeeper/var/data
dataLogDir=/usr/local/ZooKeeper/var/datalog

6.将/usr/local/ZooKeeper下的所有文件从主节点同步到客户端上。在此初始安装时,不要同步${dataDir}和${dataLogDir}目录。

7.在主节点上执行如下命令启动ZooKeeper。

hadoop@master1$ $ZK_HOME/bin/zkServer.sh start

8.连接到正在运行的ZooKeeper上,执行如下一些命令来验证安装是否正确。

hadoop@client1$ $ZK_HOME/bin/zkCli.sh -server master1:2181

[zk: master1:2181(CONNECTED) 0] ls /
[ZooKeeper]
[zk: master1:2181(CONNECTED) 1] quit

9.在主节点上执行如下命令关闭ZooKeeper。

hadoop@master1$ $ZK_HOME/bin/zkServer.sh stop

1.5.3 运行原理

在本节中,我们安装了一个基本的单机运行的ZooKeeper实例。正如你看到的那样,安装非常简单,你所需要做的只是告诉ZooKeeper在哪里可以找到Java和在哪里保存自己的数据。

在第4步中,我们创建了一个名为java.env的文件,然后在该文件中记录了一些Java设置。你必须使用这个文件名,因为ZooKeeper(默认情况下)要从这个文件中读取Java设置。

ZooKeeper的配置文件名为zoo.cfg。你可以从ZooKeeper附带的示例文件复制出一个配置文件来。对于基本安装来说,那些默认设置就很适用。因为ZooKeeper在集群系统中一直起着核心作用,所以必须对其正确设置才能获得最佳的性能。

若要连接一个正在运行的ZooKeeper仲裁团,必须使用它的命令行工具,并且指定要连接的ZooKeeper服务器和端口。默认的客户端口是2181。如果使用默认端口,那么就不需要指定端口号。

我们把所有的ZooKeeper数据称为Znode。Znode在构造上就像一个文件系统的层次结构。ZooKeeper提供了一些命令,可以通过它的命令行工具访问或更新Znode。在命令行工具中键入help可以获得进一步的帮助信息。

1.5.4 补充说明

HBase将ZooKeeper作为自己的协调服务来使用,因此ZooKeeper服务必须非常可靠。在生产环境中,你必须运行一个至少含三个节点的ZooKeeper集群。此外,还要确保运行节点的个数是奇数。

安装一个集群式ZooKeeper的过程与本节前面所示的过程基本相同。你可以先按照前面的步骤来安装好集群中的每一个节点。然后再在每个节点的zoo.cfg文件中添加如下一些设置,这样每一个节点就可以知道仲裁团中其他的每个节点了。

hadoop@node{1,2,3}$ vi $ZK_HOME/conf/zoo.cfg
   server.1=node1:2888:3888
   server.2=node2:2888:3888
   server.3=node3:2888:3888

另外,你还需要在${DATADIR}目录下放置一个myid文件。该myid文件由一行文本组成,内容是该节点的ID。因此,在node1节点的myid文件中,除了包含一行内容为1的文本以外,没有其他内容。

提示

请注意,所有的ZooKeeper节点的时钟必须是同步的。你可以使用NTP(Network Time Protocol,网络时间协议)来同步时钟。

分别在该集群的每个节点上启动ZooKeeper。然后,你就可以使用下面这条命令从客户端连接到ZooKeeper集群上了。

$ zkCli.sh -server node1,node2,node3

在ZooKeeper集群中,只要有一半以上的节点能够正常运行,ZooKeeper就能正常工作。这意味着:在3个节点的集群中,只有一台服务器可以宕机。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章