You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by ab...@apache.org on 2018/12/11 21:11:33 UTC

[10/21] kudu git commit: [docs] Update docs with contributing to blog

http://git-wip-us.apache.org/repos/asf/kudu/blob/87b27857/docs/installation.html
----------------------------------------------------------------------
diff --git a/docs/installation.html b/docs/installation.html
new file mode 100644
index 0000000..05984ce
--- /dev/null
+++ b/docs/installation.html
@@ -0,0 +1,1257 @@
+---
+title: Installing Apache Kudu
+layout: default
+active_nav: docs
+last_updated: 'Last updated 2018-12-07 15:50:19 CET'
+---
+<!--
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+
+<div class="container">
+  <div class="row">
+    <div class="col-md-9">
+
+<h1>Installing Apache Kudu</h1>
+      <div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>You can deploy Kudu on a cluster using packages or you can build Kudu
+from source. To run Kudu without installing anything, use the <a href="quickstart.html#quickstart_vm">Kudu Quickstart VM</a>.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+Cloudera Manager users can install and manage Kudu with
+<a href="http://www.cloudera.com/content/www/en-us/products/cloudera-manager.html">Cloudera Manager</a>,
+instead of following these instructions. For more information, see Cloudera&#8217;s
+<a href="http://www.cloudera.com/documentation/kudu/latest/topics/kudu_installation.html">Kudu documentation</a>.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<div class="title">Upgrading Kudu</div>
+<p>To upgrade Kudu from a previous version, see <a href="#upgrade">Upgrade from a Previous Version of Kudu</a>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_prerequisites_and_requirements"><a class="link" href="#_prerequisites_and_requirements">Prerequisites and Requirements</a></h2>
+<div class="sectionbody">
+<div class="ulist">
+<div class="title">Hardware</div>
+<ul>
+<li>
+<p>One or more hosts to run Kudu masters. It is recommended to have either one master (no fault
+tolerance), or three masters (can tolerate one failure). The number of masters must be odd.</p>
+</li>
+<li>
+<p>One or more hosts to run Kudu tablet servers. When using replication, a minimum of three tablet
+servers is necessary.</p>
+</li>
+</ul>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+A deployment with an even number of masters provides the same level of fault tolerance as a
+deployment with one fewer master. For example, both four-master and three-master deployments can
+only tolerate a single failure; two-master deployments cannot tolerate any failures.
+</td>
+</tr>
+</table>
+</div>
+<div class="dlist">
+<div class="title">Operating System Requirements</div>
+<dl>
+<dt class="hdlist1">Linux</dt>
+<dd>
+<div class="ulist">
+<ul>
+<li>
+<p>RHEL 6, RHEL 7, CentOS 6, CentOS 7, Ubuntu 14.04 (Trusty), Ubuntu 16.04 (Xenial), Debian 8 (Jessie), or SLES 12.</p>
+</li>
+<li>
+<p>A kernel and filesystem that support <em>hole punching</em>. Hole punching is the use of the
+<code>fallocate(2)</code> system call with the <code>FALLOC_FL_PUNCH_HOLE</code> option set. See
+<a href="troubleshooting.html#req_hole_punching">troubleshooting hole punching</a> for more
+information.</p>
+</li>
+<li>
+<p>ntp.</p>
+</li>
+<li>
+<p>xfs or ext4 formatted drives.</p>
+</li>
+</ul>
+</div>
+</dd>
+<dt class="hdlist1">macOS</dt>
+<dd>
+<div class="ulist">
+<ul>
+<li>
+<p>OS X 10.10 Yosemite, OS X 10.11 El Capitan, macOS Sierra, or macOS High Sierra.</p>
+</li>
+<li>
+<p>Prebuilt macOS packages are not provided.</p>
+</li>
+</ul>
+</div>
+</dd>
+<dt class="hdlist1">Windows</dt>
+<dd>
+<div class="ulist">
+<ul>
+<li>
+<p>Microsoft Windows is unsupported.</p>
+</li>
+</ul>
+</div>
+</dd>
+</dl>
+</div>
+<div class="ulist">
+<div class="title">Storage</div>
+<ul>
+<li>
+<p>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.</p>
+</li>
+</ul>
+</div>
+<div class="ulist">
+<div class="title">Java</div>
+<ul>
+<li>
+<p>JDK 7 or JDK 8 is required to build Kudu, but a JRE is not required at runtime
+except for tests.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="install_packages"><a class="link" href="#install_packages">Install Using Packages</a></h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>You can install Kudu using packages managed by the operating system.</p>
+</div>
+<table id="kudu_package_locations" class="tableblock frame-all grid-all spread">
+<caption class="title">Table 1. Kudu Package Locations</caption>
+<colgroup>
+<col style="width: 33.3333%;">
+<col style="width: 33.3333%;">
+<col style="width: 33.3334%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-right valign-top">OS</th>
+<th class="tableblock halign-left valign-top">Repository</th>
+<th class="tableblock halign-left valign-top">Individual Packages</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>RHEL or CentOS</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="http://archive.cloudera.com/kudu/redhat/6/x86_64/kudu/cloudera-kudu.repo">RHEL 6 or CentOS 6</a>,
+                   <a href="http://archive.cloudera.com/kudu/redhat/7/x86_64/kudu/cloudera-kudu.repo">RHEL 7 or CentOS 7</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="http://archive.cloudera.com/kudu/redhat/6/x86_64/kudu/5/RPMS/x86_64/">RHEL 6 or CentOS 6</a>,
+                   <a href="http://archive.cloudera.com/kudu/redhat/7/x86_64/kudu/5/RPMS/x86_64/">RHEL 7 or CentOS 7</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>SLES</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="http://archive.cloudera.com/kudu/sles/12/x86_64/kudu/cloudera-kudu.repo">SLES 12</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="http://archive.cloudera.com/kudu/sles/12/x86_64/kudu/5/RPMS/x86_64/">SLES 12</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>Ubuntu</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="http://archive.cloudera.com/kudu/ubuntu/trusty/amd64/kudu/cloudera.list">Trusty</a>,
+           <a href="http://archive.cloudera.com/kudu/ubuntu/xenial/amd64/kudu/cloudera.list">Xenial</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="http://archive.cloudera.com/kudu/ubuntu/trusty/amd64/kudu/pool/contrib/k/kudu/">Trusty</a>,
+           <a href="http://archive.cloudera.com/kudu/ubuntu/xenial/amd64/kudu/pool/contrib/k/kudu/">Xenial</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>Debian</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="http://archive.cloudera.com/kudu/debian/jessie/amd64/kudu/cloudera.list">Jessie</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="http://archive.cloudera.com/kudu/debian/jessie/amd64/kudu/pool/contrib/k/kudu/">Jessie</a></p></td>
+</tr>
+</tbody>
+</table>
+<div class="sect2">
+<h3 id="_install_on_rhel_or_centos_hosts"><a class="link" href="#_install_on_rhel_or_centos_hosts">Install on RHEL or CentOS Hosts</a></h3>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Download and configure the Kudu repositories for your operating system, or manually
+download individual RPMs, using the appropriate link from <a href="#kudu_package_locations">Kudu Package Locations</a>.</p>
+</li>
+<li>
+<p>If using a Yum repository, use the following commands to install Kudu packages on
+each host, after saving the <code>cloudera-kudu.repo</code> file to <code>/etc/yum.repos.d/</code>.</p>
+<div class="listingblock">
+<div class="content">
+<pre>sudo yum install kudu                         # Base Kudu files
+sudo yum install kudu-master                  # Kudu master init.d service script and default configuration
+sudo yum install kudu-tserver                 # Kudu tablet server init.d service script and default configuration
+sudo yum install kudu-client0                 # Kudu C++ client shared library
+sudo yum install kudu-client-devel            # Kudu C++ client SDK</pre>
+</div>
+</div>
+</li>
+<li>
+<p>To manually install the Kudu RPMs, first download them, then use the command
+<code>sudo rpm -ivh &lt;RPM to install&gt;</code> to install them.</p>
+</li>
+<li>
+<p>Note: the <code>kudu-master</code> and <code>kudu-tserver</code> packages are only necessary on hosts
+where there is a master or tserver respectively (and completely unnecessary if
+using Cloudera Manager). Each provides configuration files and an init.d script to
+manage the corresponding Kudu process. Once installed, the Kudu process is started
+and stopped automatically when the host starts up and shuts down.</p>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_install_on_sles_hosts"><a class="link" href="#_install_on_sles_hosts">Install on SLES Hosts</a></h3>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Download and configure the Kudu repositories for your operating system, or manually
+download individual RPMs, using the appropriate link from <a href="#kudu_package_locations">Kudu Package Locations</a>.</p>
+</li>
+<li>
+<p>If using a Zypper repository, use the following commands to install Kudu packages on
+each host, after saving the <code>cloudera-kudu.repo</code> file to <code>/etc/zypp/repos.d</code>.</p>
+<div class="listingblock">
+<div class="content">
+<pre>sudo zypper install kudu                      # Base Kudu files
+sudo zypper install kudu-master               # Kudu master init.d service script and default configuration
+sudo zypper install kudu-tserver              # Kudu tablet server init.d service script and default configuration
+sudo zypper install kudu-client0              # Kudu C++ client shared library
+sudo zypper install kudu-client-devel         # Kudu C++ client SDK</pre>
+</div>
+</div>
+</li>
+<li>
+<p>To manually install the Kudu RPMs, first download them, then use the command
+<code>sudo rpm -ivh &lt;RPM to install&gt;</code> to install them.</p>
+</li>
+<li>
+<p>Note: the <code>kudu-master</code> and <code>kudu-tserver</code> packages are only necessary on hosts
+where there is a master or tserver respectively (and completely unnecessary if
+using Cloudera Manager). Each provides configuration files and an init.d script to
+manage the corresponding Kudu process. Once installed, the Kudu process is started
+and stopped automatically when the host starts up and shuts down.</p>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_install_on_ubuntu_or_debian_hosts"><a class="link" href="#_install_on_ubuntu_or_debian_hosts">Install on Ubuntu or Debian Hosts</a></h3>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>If using an Ubuntu or Debian repository, use the following commands to install Kudu
+packages on each host after saving the <code>cloudera.list</code> file to <code>/etc/apt/sources.list.d/</code>.</p>
+<div class="listingblock">
+<div class="content">
+<pre>sudo apt-get install kudu                     # Base Kudu files
+sudo apt-get install kudu-master              # Service scripts for managing kudu-master
+sudo apt-get install kudu-tserver             # Service scripts for managing kudu-tserver
+sudo apt-get install libkuduclient0           # Kudu C++ client shared library
+sudo apt-get install libkuduclient-dev        # Kudu C++ client SDK</pre>
+</div>
+</div>
+</li>
+<li>
+<p>To manually install the Kudu RPMs, first download them, then use the command
+<code>sudo rpm -ivh &lt;RPM to install&gt;</code> to install them.</p>
+</li>
+<li>
+<p>Note: the <code>kudu-master</code> and <code>kudu-tserver</code> packages are only necessary on hosts
+where there is a master or tserver respectively (and completely unnecessary if
+using Cloudera Manager). Each provides configuration files and an init.d script to
+manage the corresponding Kudu process. Once installed, the Kudu process is started
+and stopped automatically when the host starts up and shuts down.</p>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_verify_the_installation"><a class="link" href="#_verify_the_installation">Verify the Installation</a></h3>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Verify that services are running using one of the following methods:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>Examine the output of the <code>ps</code> command on servers to verify one or both of <code>kudu-master</code>
+or <code>kudu-tserver</code> processes is running.</p>
+</li>
+<li>
+<p>Access the Master or Tablet Server web UI by opening <code>http://&lt;_host_name_&gt;:8051/</code>
+for masters
+or <code>http://&lt;_host_name_&gt;:8050/</code> for tablet servers.</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>If Kudu isn&#8217;t running, have a look at the log files in '/var/log/kudu', and if there&#8217;s a file
+ending with '.FATAL' then it means Kudu wasn&#8217;t able to start.</p>
+<div class="ulist">
+<ul>
+<li>
+<p>If the error is 'Error during hole punch test', it might be a problem
+<a href="troubleshooting.html#req_hole_punching">with your OS</a>.</p>
+</li>
+<li>
+<p>If the error is 'Couldn&#8217;t get the current time', it&#8217;s a
+<a href="troubleshooting.html#ntp">problem with ntp</a>.</p>
+</li>
+<li>
+<p>If it&#8217;s something else that doesn&#8217;t seem obvious or if you&#8217;ve tried the above solutions without
+luck, you can ask for help on the
+<a href="http://kudu.apache.org/community.html">user mailing list</a>.</p>
+</li>
+</ul>
+</div>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect2">
+<h3 id="required_config_without_cm"><a class="link" href="#required_config_without_cm">Required Configuration</a></h3>
+<div class="paragraph">
+<p>Additional configuration steps are required on each host before you can start Kudu services.</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>The packages create a <code>kudu-conf</code> entry in the operating system&#8217;s alternatives database,
+and they ship the built-in <code>conf.dist</code> alternative. To adjust your configuration,
+you can either edit the files in <code>/etc/kudu/conf/</code> directly, or create a new alternative
+using the operating system utilities, make sure it is the link pointed to by <code>/etc/kudu/conf/</code>,
+and create custom configuration files there. Some parts of the configuration are configured
+in <code>/etc/default/kudu-master</code> and <code>/etc/default/kudu-tserver</code> files as well. You
+should include or duplicate these configuration options if you create custom configuration files.</p>
+<div class="paragraph">
+<p>Review the configuration, including the default WAL and data directory locations,
+and adjust them according to your requirements.</p>
+</div>
+</li>
+</ol>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Start Kudu services using the following commands:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">$ sudo service kudu-master start
+$ sudo service kudu-tserver start</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>To stop Kudu services, use the following commands:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">$ sudo service kudu-master stop
+$ sudo service kudu-tserver stop</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Configure the Kudu services to start automatically when the server starts, by adding
+them to the default runlevel.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">$ sudo chkconfig kudu-master on                # RHEL / CentOS / SLES
+$ sudo chkconfig kudu-tserver on               # RHEL / CentOS / SLES
+
+$ sudo update-rc.d kudu-master defaults        # Debian / Ubuntu
+$ sudo update-rc.d kudu-tserver defaults       # Debian / Ubuntu</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>For additional configuration of Kudu services, see <a href="configuration.html">Configuring
+Kudu</a>.</p>
+</li>
+</ol>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="build_from_source"><a class="link" href="#build_from_source">Build From Source</a></h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>If installing Kudu using parcels or packages does not provide the flexibility you
+need, you can build Kudu from source. You can build from source on any supported operating system.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+<div class="title">Known Build Issues</div>
+<div class="ulist">
+<ul>
+<li>
+<p>It is not possible to build Kudu on Microsoft Windows.</p>
+</li>
+<li>
+<p>A C+11 capable compiler (GCC 4.8) is required.</p>
+</li>
+</ul>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="sect2">
+<h3 id="rhel_from_source"><a class="link" href="#rhel_from_source">RHEL or CentOS</a></h3>
+<div class="paragraph">
+<p>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).</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Install the prerequisite libraries, if they are not installed.</p>
+<div class="listingblock">
+<div class="content">
+<pre>$ sudo yum install autoconf automake cyrus-sasl-devel cyrus-sasl-gssapi \
+  cyrus-sasl-plain flex gcc gcc-c++ gdb git java-1.8.0-openjdk-devel \
+  krb5-server krb5-workstation libtool make openssl-devel patch \
+  pkgconfig redhat-lsb-core rsync unzip vim-common which</pre>
+</div>
+</div>
+</li>
+<li>
+<p>If building on RHEL or CentOS older than 7.0, install the Red Hat Developer
+Toolset.</p>
+<div class="listingblock">
+<div class="content">
+<pre>$ DTLS_RPM=rhscl-devtoolset-3-epel-6-x86_64-1-2.noarch.rpm
+$ DTLS_RPM_URL=https://www.softwarecollections.org/repos/rhscl/devtoolset-3/epel-6-x86_64/noarch/${DTLS_RPM}
+$ wget ${DTLS_RPM_URL} -O ${DTLS_RPM}
+$ sudo yum install -y scl-utils ${DTLS_RPM}
+$ sudo yum install -y devtoolset-3-toolchain</pre>
+</div>
+</div>
+</li>
+<li>
+<p>Optional: Install some additional packages, including ruby, if you plan to build documentation.</p>
+<div class="listingblock">
+<div class="content">
+<pre>$ sudo yum install doxygen gem graphviz ruby-devel zlib-devel</pre>
+</div>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+If building on RHEL or CentOS older than 7.0, the gem package may need to be replaced with rubygems
+</td>
+</tr>
+</table>
+</div>
+</li>
+<li>
+<p>Clone the Git repository and change to the new <code>kudu</code> directory.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">$ git clone https://github.com/apache/kudu
+$ cd kudu</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Build any missing third-party requirements using the <code>build-if-necessary.sh</code> script. Not using
+the devtoolset will result in <code>Host compiler appears to require libatomic, but cannot find it.</code></p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">$ build-support/enable_devtoolset.sh thirdparty/build-if-necessary.sh</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>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 <code>kudu</code> directory itself. Notice that the devtoolset must still be specified,
+else you&#8217;ll get <code>cc1plus: error: unrecognized command line option "-std=c++11"</code>.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">mkdir -p build/release
+cd build/release
+../../build-support/enable_devtoolset.sh \
+  ../../thirdparty/installed/common/bin/cmake \
+  -DCMAKE_BUILD_TYPE=release \
+  ../..
+make -j4</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Optional: Install Kudu binaries, libraries, and headers.
+If you do not specify an installation directory through the <code>DESTDIR</code>
+environment variable, <code>/usr/local/</code> is the default.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">sudo make DESTDIR=/opt/kudu install</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Optional: Build the documentation. NOTE: This command builds local documentation that
+is not appropriate for uploading to the Kudu website.</p>
+<div class="listingblock">
+<div class="content">
+<pre>$ make docs</pre>
+</div>
+</div>
+</li>
+</ol>
+</div>
+<div class="exampleblock">
+<div class="title">Example 1. RHEL / CentOS Build Script</div>
+<div class="content">
+<div class="paragraph">
+<p>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 <strong>Optional</strong> above.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">#!/bin/bash
+
+sudo yum -y install autoconf automake cyrus-sasl-devel cyrus-sasl-gssapi \
+  cyrus-sasl-plain flex gcc gcc-c++ gdb git java-1.8.0-openjdk-devel \
+  krb5-server krb5-workstation libtool make openssl-devel patch pkgconfig \
+  redhat-lsb-core rsync unzip vim-common which
+DTLS_RPM=rhscl-devtoolset-3-epel-6-x86_64-1-2.noarch.rpm
+DTLS_RPM_URL=https://www.softwarecollections.org/repos/rhscl/devtoolset-3/epel-6-x86_64/noarch/${DTLS_RPM}
+wget ${DTLS_RPM_URL} -O ${DTLS_RPM}
+sudo yum install -y scl-utils ${DTLS_RPM}
+sudo yum install -y devtoolset-3-toolchain
+git clone https://github.com/apache/kudu
+cd kudu
+build-support/enable_devtoolset.sh thirdparty/build-if-necessary.sh
+mkdir -p build/release
+cd build/release
+../../build-support/enable_devtoolset.sh \
+  ../../thirdparty/installed/common/bin/cmake \
+  -DCMAKE_BUILD_TYPE=release \
+  ../..
+make -j4</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="ubuntu_from_source"><a class="link" href="#ubuntu_from_source">Ubuntu or Debian</a></h3>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Install the prerequisite libraries, if they are not installed.</p>
+<div class="listingblock">
+<div class="content">
+<pre>$ sudo apt-get install autoconf automake curl flex g++ gcc gdb git \
+  krb5-admin-server krb5-kdc krb5-user libkrb5-dev libsasl2-dev libsasl2-modules \
+  libsasl2-modules-gssapi-mit libssl-dev libtool lsb-release make ntp \
+  openjdk-8-jdk openssl patch pkg-config python rsync unzip vim-common</pre>
+</div>
+</div>
+</li>
+<li>
+<p>Optional: Install some additional packages, including ruby, if you plan to build documentation.</p>
+<div class="listingblock">
+<div class="content">
+<pre>$ sudo apt-get install doxygen gem graphviz ruby-dev xsltproc zlib1g-dev</pre>
+</div>
+</div>
+</li>
+<li>
+<p>Clone the Git repository and change to the new <code>kudu</code> directory.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">$ git clone https://github.com/apache/kudu
+$ cd kudu</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Build any missing third-party requirements using the <code>build-if-necessary.sh</code> script.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">$ thirdparty/build-if-necessary.sh</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>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 <code>kudu</code> directory itself.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">mkdir -p build/release
+cd build/release
+../../thirdparty/installed/common/bin/cmake -DCMAKE_BUILD_TYPE=release ../..
+make -j4</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Optional: Install Kudu binaries, libraries, and headers.
+If you do not specify an installation directory through the <code>DESTDIR</code>
+environment variable, <code>/usr/local/</code> is the default.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">sudo make DESTDIR=/opt/kudu install</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Optional: Build the documentation. NOTE: This command builds local documentation that
+is not appropriate for uploading to the Kudu website.</p>
+<div class="listingblock">
+<div class="content">
+<pre>$ make docs</pre>
+</div>
+</div>
+</li>
+</ol>
+</div>
+<div class="exampleblock">
+<div class="title">Example 2. Ubuntu / Debian Build Script</div>
+<div class="content">
+<div class="paragraph">
+<p>This script provides an overview of the procedure to build Kudu on Ubuntu, and
+can be used as the basis for an automated deployment scenario. It skips
+the steps marked <strong>Optional</strong> above.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">#!/bin/bash
+
+sudo apt-get -y install autoconf automake curl flex g++ gcc gdb git \
+  krb5-admin-server krb5-kdc krb5-user libkrb5-dev libsasl2-dev libsasl2-modules \
+  libsasl2-modules-gssapi-mit libssl-dev libtool lsb-release make ntp \
+  openjdk-8-jdk openssl patch pkg-config python rsync unzip vim-common
+git clone https://github.com/apache/kudu
+cd kudu
+thirdparty/build-if-necessary.sh
+mkdir -p build/release
+cd build/release
+../../thirdparty/installed/common/bin/cmake \
+  -DCMAKE_BUILD_TYPE=release \
+  ../..
+make -j4</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="sles_from_source"><a class="link" href="#sles_from_source">SUSE Linux Enterprise Server</a></h3>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Install the prerequisite libraries, if they are not installed.</p>
+<div class="listingblock">
+<div class="content">
+<pre>$ sudo zypper install autoconf automake curl cyrus-sasl-devel \
+  cyrus-sasl-gssapi flex gcc gcc-c++ gdb git java-1_8_0-openjdk-devel \
+  krb5-devel krb5-server libtool lsb-release make ntp openssl-devel patch \
+  pkg-config python rsync unzip vim</pre>
+</div>
+</div>
+</li>
+<li>
+<p>Clone the Git repository and change to the new <code>kudu</code> directory.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">$ git clone https://github.com/apache/kudu
+$ cd kudu</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Build any missing third-party requirements using the <code>build-if-necessary.sh</code> script.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">$ thirdparty/build-if-necessary.sh</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>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 <code>kudu</code> directory itself.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">mkdir -p build/release
+cd build/release
+../../thirdparty/installed/common/bin/cmake \
+  -DCMAKE_BUILD_TYPE=release \
+  ../..
+make -j4</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Optional: Install Kudu binaries, libraries, and headers.
+If you do not specify an installation directory through the <code>DESTDIR</code>
+environment variable, <code>/usr/local/</code> is the default.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">sudo make DESTDIR=/opt/kudu install</code></pre>
+</div>
+</div>
+</li>
+</ol>
+</div>
+<div class="exampleblock">
+<div class="title">Example 3. SLES Build Script</div>
+<div class="content">
+<div class="paragraph">
+<p>This script provides an overview of the procedure to build Kudu on SLES, and
+can be used as the basis for an automated deployment scenario. It skips
+the steps marked <strong>Optional</strong> above.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">#!/bin/bash
+
+sudo zypper install -y autoconf automake curl cyrus-sasl-devel \
+  cyrus-sasl-gssapi flex gcc gcc-c++ gdb git java-1_8_0-openjdk-devel \
+  krb5-devel libtool lsb-release make ntp openssl-devel patch \
+  pkg-config python rsync unzip vim
+git clone https://github.com/apache/kudu
+cd kudu
+thirdparty/build-if-necessary.sh
+mkdir -p build/release
+cd build/release
+../../thirdparty/installed/common/bin/cmake \
+  -DCMAKE_BUILD_TYPE=release \
+  ../..
+make -j4</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="osx_from_source"><a class="link" href="#osx_from_source">macOS</a></h3>
+<div class="paragraph">
+<p>The <a href="https://developer.apple.com/xcode/">Xcode</a> package is necessary for
+compiling Kudu. Some of the instructions below use <a href="http://brew.sh/">Homebrew</a>
+to install dependencies, but manual dependency installation is possible.</p>
+</div>
+<div class="paragraph">
+<p>After installing Xcode, don&#8217;t forget to accept the license and install command-line
+tools, if it&#8217;s not done yet:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ sudo xcodebuild -license
+$ sudo xcode-select --install</pre>
+</div>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+<div class="title">macOS Known Issues</div>
+<div class="paragraph">
+<p>Kudu support for macOS is experimental, and should only be used for development.
+See <a href="https://issues.apache.org/browse/KUDU-1219">macOS Limitations &amp; Known Issues</a>
+for more information.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Install the prerequisite libraries, if they are not installed.</p>
+<div class="listingblock">
+<div class="content">
+<pre>$ brew install autoconf automake cmake git krb5 libtool openssl pkg-config pstree</pre>
+</div>
+</div>
+</li>
+<li>
+<p>Optional: Install some additional packages, including ruby, if you plan to build documentation.</p>
+<div class="listingblock">
+<div class="content">
+<pre>$ brew install doxygen graphviz ruby
+$ brew install gnu-sed --with-default-names #The macOS default sed handles the -i parameter differently</pre>
+</div>
+</div>
+</li>
+<li>
+<p>Clone the Git repository and change to the new <code>kudu</code> directory.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">$ git clone https://github.com/apache/kudu
+$ cd kudu</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Build any missing third-party requirements using the <code>build-if-necessary.sh</code> script.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">$ thirdparty/build-if-necessary.sh</code></pre>
+</div>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>If different versions of the dependencies are installed and used when calling
+<code>thirdparty/build-if-necessary.sh</code>, you may get stuck with output similar to the
+following:</p>
+<div class="listingblock">
+<div class="content">
+<pre>./configure: line 16299: error near unexpected token `newline'
+./configure: line 16299: `  PKG_CHECK_MODULES('</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The thirdparty builds may be cached and may reflect the incorrect versions of the
+dependencies. Ensure that you have the correct dependencies listed in Step 1, clean
+the workspace, and then try to re-build.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">$ git clean -fdx
+$ thirdparty/build-if-necessary.sh</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Some combinations of Homebrew installations and system upgrades can result with a
+different kind of error:</p>
+<div class="listingblock">
+<div class="content">
+<pre>libtool: Version mismatch error.  This is libtool 2.4.6, but the
+libtool: definition of this LT_INIT comes from libtool 2.4.2.
+libtool: You should recreate aclocal.m4 with macros from libtool 2.4.6
+libtool: and run autoconf again.</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>As described in this <a href="https://github.com/Homebrew/legacy-homebrew/issues/43874">thread</a>,
+a possible fix is to uninstall and reinstall libtool:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">$ brew uninstall libtool &amp;&amp; brew install libtool</code></pre>
+</div>
+</div>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>Build Kudu. Choose a build directory for the intermediate output, which can be
+anywhere in your filesystem except for the <code>kudu</code> directory itself.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">mkdir -p build/release
+cd build/release
+../../thirdparty/installed/common/bin/cmake \
+  -DCMAKE_BUILD_TYPE=release \
+  -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl \
+  ../..
+make -j4</code></pre>
+</div>
+</div>
+</li>
+</ol>
+</div>
+<div class="exampleblock">
+<div class="title">Example 4. macOS Build Script</div>
+<div class="content">
+<div class="paragraph">
+<p>This script provides an overview of the procedure to build Kudu on macOS, and can
+be used as the basis for an automated deployment scenario. It assumes Xcode and Homebrew
+are installed.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>#!/bin/bash
+
+brew tap homebrew/dupes
+brew install autoconf automake cmake git krb5 libtool openssl pkg-config pstree
+git clone https://github.com/apache/kudu
+cd kudu
+thirdparty/build-if-necessary.sh
+mkdir -p build/release
+cd build/release
+../../thirdparty/installed/common/bin/cmake \
+  -DCMAKE_BUILD_TYPE=release \
+  -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl \
+  ../..
+make -j4</pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="build_cpp_client"><a class="link" href="#build_cpp_client">Installing the C++ Client Libraries</a></h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>If you need access to the Kudu client libraries for development,
+install the <code>kudu-client</code> and <code>kudu-client-devel</code> package for your platform.
+See <a href="#install_packages">Install Using Packages</a>.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+Only build against the client libraries and headers (<code>kudu_client.so</code> and <code>client.h</code>).
+Other libraries and headers are internal to Kudu and have no stability guarantees.
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="build_java_client"><a class="link" href="#build_java_client">Build the Java Client</a></h2>
+<div class="sectionbody">
+<div class="ulist">
+<div class="title">Requirements</div>
+<ul>
+<li>
+<p>JDK 7 or JDK 8</p>
+</li>
+<li>
+<p>Apache Maven 3.x</p>
+</li>
+</ul>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+Support for Java 7 is deprecated as of Kudu 1.5.0 and may be removed in
+the next major release.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>To build the Java client, clone the Kudu Git
+repository, change to the <code>java</code> directory, and issue the following command:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">$ mvn install -DskipTests</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>For more information about building the Java API, as well as Eclipse integration,
+see <code>java/README.md</code>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="view_api"><a class="link" href="#view_api">View API Documentation</a></h2>
+<div class="sectionbody">
+<div class="paragraph">
+<div class="title">C++ API Documentation</div>
+<p>You can view the <a href="../cpp-client-api/index.html">C++ client API
+documentation</a> online. Alternatively, after
+<a href="installation.html#build_from_source">building Kudu from source</a>, you can
+additionally build the <code>doxygen</code> target (e.g., run <code>make doxygen</code> if using
+make) and use the locally generated API documentation by opening
+<code>docs/doxygen/client_api/html/index.html</code> file in your favorite Web browser.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+In order to build the <code>doxygen</code> target, it&#8217;s necessary to have
+doxygen with Dot (graphviz) support installed at your build machine. If
+you installed doxygen after building Kudu from source, you will need to run
+<code>cmake</code> again to pick up the doxygen location and generate appropriate
+targets.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<div class="title">Java API Documentation</div>
+<p>You can view the <a href="../apidocs/index.html">Java API documentation</a> online.
+Alternatively, after <a href="installation.html#build_java_client">building the Java
+client</a>, Java API documentation is available in
+<code>java/kudu-client/target/apidocs/index.html</code>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="upgrade"><a class="link" href="#upgrade">Upgrade from a Previous Version of Kudu</a></h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Before upgrading, you should read the <a href="release_notes.html">Release Notes</a> for
+the version of Kudu that you are about to install. Pay close attention to the
+incompatibilities, upgrade, and downgrade notes that are documented there.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+Currently rolling upgrades are not supported. Please shut down all Kudu services before
+  upgrading the software.
+</td>
+</tr>
+</table>
+</div>
+<div class="sect2">
+<h3 id="upgrade_procedure"><a class="link" href="#upgrade_procedure">Upgrade Procedure</a></h3>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Stop the Kudu master and tablet server services:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">$ sudo service kudu-master stop
+$ sudo service kudu-tserver stop</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Upgrade the packages.</p>
+<div class="ulist">
+<ul>
+<li>
+<p>On RHEL or CentOS hosts:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">sudo yum clean all
+sudo yum upgrade kudu</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>On SLES hosts:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">sudo zypper clean --all
+sudo zypper update kudu</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>On Ubuntu or Debian hosts:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">sudo apt-get update
+sudo apt-get install kudu</code></pre>
+</div>
+</div>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>Start the Kudu master and tablet server services:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">$ sudo service kudu-master start
+$ sudo service kudu-tserver start</code></pre>
+</div>
+</div>
+</li>
+</ol>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="next_steps"><a class="link" href="#next_steps">Next Steps</a></h2>
+<div class="sectionbody">
+<div class="ulist">
+<ul>
+<li>
+<p><a href="configuration.html">Configuring Kudu</a></p>
+</li>
+<li>
+<p><a href="administration.html">Kudu Administration</a></p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+    </div>
+    <div class="col-md-3">
+
+  <div id="toc" data-spy="affix" data-offset-top="70">
+  <ul>
+
+      <li>
+
+          <a href="index.html">Introducing Kudu</a> 
+      </li> 
+      <li>
+
+          <a href="release_notes.html">Kudu Release Notes</a> 
+      </li> 
+      <li>
+
+          <a href="quickstart.html">Getting Started with Kudu</a> 
+      </li> 
+      <li>
+<span class="active-toc">Installation Guide</span>
+            <ul class="sectlevel1">
+<li><a href="#_prerequisites_and_requirements">Prerequisites and Requirements</a></li>
+<li><a href="#install_packages">Install Using Packages</a>
+<ul class="sectlevel2">
+<li><a href="#_install_on_rhel_or_centos_hosts">Install on RHEL or CentOS Hosts</a></li>
+<li><a href="#_install_on_sles_hosts">Install on SLES Hosts</a></li>
+<li><a href="#_install_on_ubuntu_or_debian_hosts">Install on Ubuntu or Debian Hosts</a></li>
+<li><a href="#_verify_the_installation">Verify the Installation</a></li>
+<li><a href="#required_config_without_cm">Required Configuration</a></li>
+</ul>
+</li>
+<li><a href="#build_from_source">Build From Source</a>
+<ul class="sectlevel2">
+<li><a href="#rhel_from_source">RHEL or CentOS</a></li>
+<li><a href="#ubuntu_from_source">Ubuntu or Debian</a></li>
+<li><a href="#sles_from_source">SUSE Linux Enterprise Server</a></li>
+<li><a href="#osx_from_source">macOS</a></li>
+</ul>
+</li>
+<li><a href="#build_cpp_client">Installing the C++ Client Libraries</a></li>
+<li><a href="#build_java_client">Build the Java Client</a></li>
+<li><a href="#view_api">View API Documentation</a></li>
+<li><a href="#upgrade">Upgrade from a Previous Version of Kudu</a>
+<ul class="sectlevel2">
+<li><a href="#upgrade_procedure">Upgrade Procedure</a></li>
+</ul>
+</li>
+<li><a href="#next_steps">Next Steps</a></li>
+</ul> 
+      </li> 
+      <li>
+
+          <a href="configuration.html">Configuring Kudu</a> 
+      </li> 
+      <li>
+
+          <a href="kudu_impala_integration.html">Using Impala with Kudu</a> 
+      </li> 
+      <li>
+
+          <a href="administration.html">Administering Kudu</a> 
+      </li> 
+      <li>
+
+          <a href="troubleshooting.html">Troubleshooting Kudu</a> 
+      </li> 
+      <li>
+
+          <a href="developing.html">Developing Applications with Kudu</a> 
+      </li> 
+      <li>
+
+          <a href="schema_design.html">Kudu Schema Design</a> 
+      </li> 
+      <li>
+
+          <a href="scaling_guide.html">Kudu Scaling Guide</a> 
+      </li> 
+      <li>
+
+          <a href="security.html">Kudu Security</a> 
+      </li> 
+      <li>
+
+          <a href="transaction_semantics.html">Kudu Transaction Semantics</a> 
+      </li> 
+      <li>
+
+          <a href="background_tasks.html">Background Maintenance Tasks</a> 
+      </li> 
+      <li>
+
+          <a href="configuration_reference.html">Kudu Configuration Reference</a> 
+      </li> 
+      <li>
+
+          <a href="command_line_tools_reference.html">Kudu Command Line Tools Reference</a> 
+      </li> 
+      <li>
+
+          <a href="known_issues.html">Known Issues and Limitations</a> 
+      </li> 
+      <li>
+
+          <a href="contributing.html">Contributing to Kudu</a> 
+      </li> 
+      <li>
+
+          <a href="export_control.html">Export Control Notice</a> 
+      </li> 
+  </ul>
+  </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kudu/blob/87b27857/docs/known_issues.html
----------------------------------------------------------------------
diff --git a/docs/known_issues.html b/docs/known_issues.html
new file mode 100644
index 0000000..4b804a3
--- /dev/null
+++ b/docs/known_issues.html
@@ -0,0 +1,409 @@
+---
+title: Known Issues and Limitations
+layout: default
+active_nav: docs
+last_updated: 'Last updated 2018-12-07 15:50:19 CET'
+---
+<!--
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+
+<div class="container">
+  <div class="row">
+    <div class="col-md-9">
+
+<h1>Known Issues and Limitations</h1>
+      <div class="sect1">
+<h2 id="_schema"><a class="link" href="#_schema">Schema</a></h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_primary_keys"><a class="link" href="#_primary_keys">Primary keys</a></h3>
+<div class="ulist">
+<ul>
+<li>
+<p>The primary key may not be changed after the table is created.
+You must drop and recreate a table to select a new primary key.</p>
+</li>
+<li>
+<p>The columns which make up the primary key must be listed first in the schema.</p>
+</li>
+<li>
+<p>The primary key of a row may not be modified using the <code>UPDATE</code> functionality.
+To modify a row&#8217;s primary key, the row must be deleted and re-inserted with
+the modified key. Such a modification is non-atomic.</p>
+</li>
+<li>
+<p>Columns with <code>DOUBLE</code>, <code>FLOAT</code>, or <code>BOOL</code> types are not allowed as part of a
+primary key definition. Additionally, all columns that are part of a primary
+key definition must be <code>NOT NULL</code>.</p>
+</li>
+<li>
+<p>Auto-generated primary keys are not supported.</p>
+</li>
+<li>
+<p>Cells making up a composite primary key are limited to a total of 16KB after the internal
+composite-key encoding done by Kudu.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_columns"><a class="link" href="#_columns">Columns</a></h3>
+<div class="ulist">
+<ul>
+<li>
+<p>CHAR, VARCHAR, DATE, and complex types like ARRAY are not supported.</p>
+</li>
+<li>
+<p>Type and nullability of existing columns cannot be changed by altering the table.</p>
+</li>
+<li>
+<p>The precision and scale of <code>DECIMAL</code> columns cannot be changed by altering the table.</p>
+</li>
+<li>
+<p>Tables can have a maximum of 300 columns.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_tables"><a class="link" href="#_tables">Tables</a></h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Tables must have an odd number of replicas, with a maximum of 7.</p>
+</li>
+<li>
+<p>Replication factor (set at table creation time) cannot be changed.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_cells_individual_values"><a class="link" href="#_cells_individual_values">Cells (individual values)</a></h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Cells cannot be larger than 64KB before encoding or compression.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_other_usage_limitations"><a class="link" href="#_other_usage_limitations">Other usage limitations</a></h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Kudu is primarily designed for analytic use cases. You are likely to encounter issues if
+a single row contains multiple kilobytes of data.</p>
+</li>
+<li>
+<p>Secondary indexes are not supported.</p>
+</li>
+<li>
+<p>Multi-row transactions are not supported.</p>
+</li>
+<li>
+<p>Relational features, like foreign keys, are not supported.</p>
+</li>
+<li>
+<p>Identifiers such as column and table names are restricted to be valid UTF-8 strings.
+Additionally, a maximum length of 256 characters is enforced.</p>
+</li>
+<li>
+<p>Dropping a column does not immediately reclaim space. Compaction must run first.</p>
+</li>
+<li>
+<p>There is no way to run compaction manually, but dropping the table will reclaim the
+space immediately.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_partitioning_limitations"><a class="link" href="#_partitioning_limitations">Partitioning Limitations</a></h2>
+<div class="sectionbody">
+<div class="ulist">
+<ul>
+<li>
+<p>Tables must be manually pre-split into tablets using simple or compound primary
+keys. Automatic splitting is not yet possible. Range partitions may be added
+or dropped after a table has been created. See
+<a href="schema_design.html">Schema Design</a> for more information.</p>
+</li>
+<li>
+<p>Data in existing tables cannot currently be automatically repartitioned. As a workaround,
+create a new table with the new partitioning and insert the contents of the old
+table.</p>
+</li>
+<li>
+<p>Tablets that lose a majority of replicas (such as 1 left out of 3) require manual
+intervention to be repaired.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_cluster_management"><a class="link" href="#_cluster_management">Cluster management</a></h2>
+<div class="sectionbody">
+<div class="ulist">
+<ul>
+<li>
+<p>Rack awareness is not supported.</p>
+</li>
+<li>
+<p>Multi-datacenter is not supported.</p>
+</li>
+<li>
+<p>Rolling restart is not supported.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_server_management"><a class="link" href="#_server_management">Server management</a></h2>
+<div class="sectionbody">
+<div class="ulist">
+<ul>
+<li>
+<p>Production deployments should configure a least 4GB of memory for tablet servers,
+and ideally more than 16GB when approaching the data and tablet <a href="#_scale">Scale</a> limits.</p>
+</li>
+<li>
+<p>Write ahead logs (WAL) can only be stored on one disk.</p>
+</li>
+<li>
+<p>Tablet servers cannot be gracefully decommissioned.</p>
+</li>
+<li>
+<p>Tablet servers can’t change address/port.</p>
+</li>
+<li>
+<p>Kudu has a hard requirement on having up-to-date NTP. Kudu masters and tablet servers
+will crash when out of sync.</p>
+</li>
+<li>
+<p>Kudu releases are only tested with NTP. Other time synchronization providers like Chrony
+may or may not work.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_scale"><a class="link" href="#_scale">Scale</a></h2>
+<div class="sectionbody">
+<div class="ulist">
+<ul>
+<li>
+<p>Recommended maximum number of tablet servers is 100.</p>
+</li>
+<li>
+<p>Recommended maximum number of masters is 3.</p>
+</li>
+<li>
+<p>Recommended maximum amount of stored data, post-replication and post-compression,
+per tablet server is 8TB.</p>
+</li>
+<li>
+<p>The maximum number of tablets per tablet server is 2000, post-replication,
+but we recommend 1000 tablets or fewer per tablet server.</p>
+</li>
+<li>
+<p>Maximum number of tablets per table for each tablet server is 60, post-replication,
+at table-creation time.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_replication_and_backup_limitations"><a class="link" href="#_replication_and_backup_limitations">Replication and Backup Limitations</a></h2>
+<div class="sectionbody">
+<div class="ulist">
+<ul>
+<li>
+<p>Kudu does not currently include any built-in features for backup and restore.
+Users are encouraged to use tools such as Spark or Impala to export or import
+tables as necessary.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_security_limitations"><a class="link" href="#_security_limitations">Security Limitations</a></h2>
+<div class="sectionbody">
+<div class="ulist">
+<ul>
+<li>
+<p>Authorization is only available at a system-wide, coarse-grained level. Table-level,
+column-level, and row-level authorization features are not available.</p>
+</li>
+<li>
+<p>Data encryption at rest is not directly built into Kudu. Encryption of
+Kudu data at rest can be achieved through the use of local block device
+encryption software such as <code>dmcrypt</code>.</p>
+</li>
+<li>
+<p>Kudu server Kerberos principals must follow the pattern <code>kudu/&lt;HOST&gt;@DEFAULT.REALM</code>.
+Configuring an alternate Kerberos principal is not supported.</p>
+</li>
+<li>
+<p>Kudu&#8217;s integration with Apache Flume does not support writing to Kudu clusters that
+require Kerberos authentication.</p>
+</li>
+<li>
+<p>Server certificates generated by Kudu IPKI are incompatible with
+<a href="https://www.bouncycastle.org/">bouncycastle</a> version 1.52 and earlier. See
+<a href="https://issues.apache.org/jira/browse/KUDU-2145">KUDU-2145</a> for details.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_other_known_issues"><a class="link" href="#_other_known_issues">Other Known Issues</a></h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The following are known bugs and issues with the current release of Kudu. They will
+be addressed in later releases. Note that this list is not exhaustive, and is meant
+to communicate only the most important known issues.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>If the Kudu master is configured with the <code>-log_force_fsync_all</code> option, tablet servers
+and clients will experience frequent timeouts, and the cluster may become unusable.</p>
+</li>
+<li>
+<p>If a tablet server has a very large number of tablets, it may take several minutes
+to start up. It is recommended to limit the number of tablets per server to 1000
+or fewer. The maximum allowed number of tablets per server is 2000.
+Consider this limitation when pre-splitting your tables. If you notice slow start-up times,
+you can monitor the number of tablets per server in the web UI.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+    </div>
+    <div class="col-md-3">
+
+  <div id="toc" data-spy="affix" data-offset-top="70">
+  <ul>
+
+      <li>
+
+          <a href="index.html">Introducing Kudu</a> 
+      </li> 
+      <li>
+
+          <a href="release_notes.html">Kudu Release Notes</a> 
+      </li> 
+      <li>
+
+          <a href="quickstart.html">Getting Started with Kudu</a> 
+      </li> 
+      <li>
+
+          <a href="installation.html">Installation Guide</a> 
+      </li> 
+      <li>
+
+          <a href="configuration.html">Configuring Kudu</a> 
+      </li> 
+      <li>
+
+          <a href="kudu_impala_integration.html">Using Impala with Kudu</a> 
+      </li> 
+      <li>
+
+          <a href="administration.html">Administering Kudu</a> 
+      </li> 
+      <li>
+
+          <a href="troubleshooting.html">Troubleshooting Kudu</a> 
+      </li> 
+      <li>
+
+          <a href="developing.html">Developing Applications with Kudu</a> 
+      </li> 
+      <li>
+
+          <a href="schema_design.html">Kudu Schema Design</a> 
+      </li> 
+      <li>
+
+          <a href="scaling_guide.html">Kudu Scaling Guide</a> 
+      </li> 
+      <li>
+
+          <a href="security.html">Kudu Security</a> 
+      </li> 
+      <li>
+
+          <a href="transaction_semantics.html">Kudu Transaction Semantics</a> 
+      </li> 
+      <li>
+
+          <a href="background_tasks.html">Background Maintenance Tasks</a> 
+      </li> 
+      <li>
+
+          <a href="configuration_reference.html">Kudu Configuration Reference</a> 
+      </li> 
+      <li>
+
+          <a href="command_line_tools_reference.html">Kudu Command Line Tools Reference</a> 
+      </li> 
+      <li>
+<span class="active-toc">Known Issues and Limitations</span>
+            <ul class="sectlevel1">
+<li><a href="#_schema">Schema</a>
+<ul class="sectlevel2">
+<li><a href="#_primary_keys">Primary keys</a></li>
+<li><a href="#_columns">Columns</a></li>
+<li><a href="#_tables">Tables</a></li>
+<li><a href="#_cells_individual_values">Cells (individual values)</a></li>
+<li><a href="#_other_usage_limitations">Other usage limitations</a></li>
+</ul>
+</li>
+<li><a href="#_partitioning_limitations">Partitioning Limitations</a></li>
+<li><a href="#_cluster_management">Cluster management</a></li>
+<li><a href="#_server_management">Server management</a></li>
+<li><a href="#_scale">Scale</a></li>
+<li><a href="#_replication_and_backup_limitations">Replication and Backup Limitations</a></li>
+<li><a href="#_security_limitations">Security Limitations</a></li>
+<li><a href="#_other_known_issues">Other Known Issues</a></li>
+</ul> 
+      </li> 
+      <li>
+
+          <a href="contributing.html">Contributing to Kudu</a> 
+      </li> 
+      <li>
+
+          <a href="export_control.html">Export Control Notice</a> 
+      </li> 
+  </ul>
+  </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file