One or more hosts to run Kudu tablet servers. When using replication, a minimum of
three tablet servers is necessary.

Operating System Requirements

Linux

RHEL 6, RHEL 7, Ubuntu 14.04 (Trusty), or SLES 12.

A kernel and fileystem that support hole punching. Hole punching is the use of the
fallocate(2) system call with the FALLOC_FL_PUNCH_HOLE option set. See
troubleshooting hole punching for more
information.

ntp.

OS X

OS X 10.10 Yosemite or OS X 10.11 El Capitan.

Prebuilt OS X packages are not provided.

Windows

Microsoft Windows is unsupported.

Storage

If solid state storage is available, storing Kudu WALs on such high-performance
media may significantly improve latency when Kudu is configured for its highest
durability levels.

Management

If you use Cloudera Manager and CDH, Cloudera Manager 5.4.3 or newer is required.
Cloudera Manager 5.4.7 and newer provide better monitoring and administration options.

To manually install the Kudu RPMs, first download them, then use the command
sudo rpm -ivh <RPM to install> and install the
kudu-master and kudu-tserver packages on the appropriate hosts. These packages
provide the operating system commands to start and stop Kudu.

Additional configuration steps are required on each host before you can start Kudu services.

The packages create a kudu-conf entry in the operating system’s alternatives database,
and they ship the built-in conf.dist alternative. To adjust your configuration,
you can either edit the files in /etc/kudu/conf/ directly, or create a new alternative
using the operating system utilities, make sure it is the link pointed to by /etc/kudu/conf/,
and create custom configuration files there. Some parts of the configuration are configured
in /etc/default/kudu-master and /etc/default/kudu-tserver files as well. You
should include or duplicate these configuration options if you create custom configuration files.

Review the configuration, including the default WAL and data directory locations,
and adjust them according to your requirements.

Start Kudu services using the following commands:

$ sudo service kudu-master start
$ sudo service kudu-tserver start

To stop Kudu services, use the following commands:

$ sudo service kudu-master stop
$ sudo service kudu-tserver stop

Configure the Kudu services to start automatically when the server starts, by adding
them to the default runlevel.

RHEL or CentOS 6.6 or later is required to build Kudu from source. To build
on a version older than 7.0, the Red Hat Developer Toolset must be installed
(in order to have access to a C++11 capable compiler).

Optional: Install some additional packages, including ruby, if you plan to build documentation.

$ sudo yum install gem ruby-devel zlib-devel

Clone the Git repository and change to the new kudu directory.

$ git clone https://github.com/apache/incubator-kudu kudu
$ cd kudu

Build any missing third-party requirements using the build-if-necessary.sh script. Not using
the devtoolset will result in Host compiler appears to require libatomic, but cannot find it.

$ build-support/enable_devtoolset.sh thirdparty/build-if-necessary.sh

Build Kudu, using the utilities installed in the previous step. Choose a build
directory for the intermediate output, which can be anywhere in your filesystem
except for the kudu directory itself. Notice that the devtoolset must still be specified,
else you’ll get cc1plus: error: unrecognized command line option "-std=c++11".

Optional: Install Kudu binaries, libraries, and headers.
If you do not specify an installation directory through the DESTDIR
environment variable, /usr/local/ is the default.

sudo make DESTDIR=/opt/kudu install

Optional: Build the documentation. NOTE: This command builds local documentation that
is not appropriate for uploading to the Kudu website.

$ make docs

Example 1. RHEL / CentOS Build Script

This script provides an overview of the procedure to build Kudu on a
newly-installed RHEL or CentOS host, and can be used as the basis for an
automated deployment scenario. It skips the steps marked Optional above.

Building Kudu on SLES requires building Boost from source, since SLES does not
have system packages containing Boost static libraries. Boost may be built
anywhere, provided that the BOOST_ROOT environment variable is set to the
location while invoking CMake to build Kudu. In the instructions below, Boost is
built alongside Kudu.

The Xcode toolchain is necessary for compiling Kudu. Use xcode-select --install
to install the Xcode Command Line Tools if Xcode is not already installed. These
instructions use Homebrew to install dependencies, but
manual dependency installation is possible.

The documentation for the C++ client APIs is included in the header files in
/usr/include/kudu/ if you installed Kudu using packages or subdirectories
of src/kudu/client/ if you built Kudu from source. If you installed Kudu using parcels,
no headers are included in your installation. and you will need to build
Kudu from source in order to have access to the headers and shared libraries.

The following command is a naive approach to finding relevant header files. Use
of any APIs other than the client APIs is unsupported.

In Kudu 0.9 and higher, you must set partitioning options explicitly when
creating a new table. If you do not specify partitioning options, the table
creation will fail. This behavior change does not affect existing tables.