Installing the ZooKeeper Packages
There are two ZooKeeper server packages:
- The zookeeper base package provides the basic libraries and scripts that are necessary to run ZooKeeper servers and clients. The documentation is also included in this package.
- The zookeeper-server package contains the init.d scripts necessary to run ZooKeeper as a daemon process. Because zookeeper-server depends on zookeeper, installing the server package automatically installs the base package.
If you have not already done so, install Cloudera's yum, zypper/YaST or apt repository before using the following commands to install ZooKeeper. For instructions, see CDH4 Installation.
Installing the ZooKeeper Base Package
To install ZooKeeper On Red Hat-compatible systems:
$ sudo yum install zookeeper
To install ZooKeeper on Ubuntu and other Debian systems:
$ sudo apt-get install zookeeper
To install ZooKeeper on SLES systems:
$ sudo zypper install zookeeper
Installing the ZooKeeper Server Package and Starting ZooKeeper on a Single Server
The instructions provided here deploy a single ZooKeeper server in "standalone" mode. This is appropriate for evaluation, testing and development purposes, but may not provide sufficient reliability for a production application. See Installing ZooKeeper in a Production Environment for more information.
To install the ZooKeeper Server On Red Hat-compatible systems:
$ sudo yum install zookeeper-server
To install a ZooKeeper server on Ubuntu and other Debian systems:
$ sudo apt-get install zookeeper-server
To install ZooKeeper on SLES systems:
$ sudo zypper install zookeeper-server
To start ZooKeeper
ZooKeeper may start automatically on installation on Ubuntu and other Debian systems. This automatic start will happen only if the data directory exists; otherwise you will be prompted to initialize as shown below.
- To start ZooKeeper after an upgrade from CDH3 or CDH4:
If you are upgrading from CDH3, do not proceed with restarting the server until you have completed Step 4 of the upgrade procedure.
$ sudo service zookeeper-server start
- To start ZooKeeper after a fresh install:
$ sudo service zookeeper-server init $ sudo service zookeeper-server start
If you are deploying multiple ZooKeeper servers after a fresh install, you need to create a myid file in the data directory. You can do this by means of an init command option: $ sudo service zookeeper-server init --myid=1
Installing ZooKeeper in a Production Environment
For use in a production environment, you should deploy ZooKeeper as an ensemble with an odd number of nodes. As long as a majority of the servers in the ensemble are available, the ZooKeeper service will be available. The minimum recommended ensemble size is three ZooKeeper servers, and it is recommended that each server run on a separate machine.
ZooKeeper deployment on multiple servers requires a bit of additional configuration. The configuration file (zoo.cfg) on each server must include a list of all servers in the ensemble, and each server must also have a myid file in its data directory (by default /var/lib/zookeeper) that identifies it as one of the servers in the ensemble.
For instructions describing how to set up a multi-server deployment, see Installing a Multi-Server Setup.
Setting up Supervisory Process for the ZooKeeper Server
The ZooKeeper server is designed to be both highly reliable and highly available. This means that:
- If a ZooKeeper server encounters an error it cannot recover from, it will "fail fast" (the process will exit immediately)
- When the server shuts down, the ensemble remains active, and continues serving requests
- Once restarted, the server rejoins the ensemble without any further manual intervention.
Cloudera recommends that you fully automate this process by configuring a supervisory service to manage each server, and restart the ZooKeeper server process automatically if it fails. See the ZooKeeper Administrator's Guide for more information.