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

    xiaoxiao2024-05-16  103

    本节书摘来异步社区《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个节点的集群中,只有一台服务器可以宕机。

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)