| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8" /> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1" /> |
| <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> |
| <meta name="description" content="A new open source Apache Hadoop ecosystem project, Apache Kudu completes Hadoop's storage layer to enable fast analytics on fast data" /> |
| <meta name="author" content="Cloudera" /> |
| <title>Apache Kudu - Installing Apache Kudu</title> |
| <!-- Bootstrap core CSS --> |
| <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" |
| integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" |
| crossorigin="anonymous"> |
| |
| <!-- Custom styles for this template --> |
| <link href="/css/kudu.css" rel="stylesheet"/> |
| <link href="/css/asciidoc.css" rel="stylesheet"/> |
| <link rel="shortcut icon" href="/img/logo-favicon.ico" /> |
| <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" /> |
| |
| |
| |
| <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> |
| <!--[if lt IE 9]> |
| <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> |
| <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> |
| <![endif]--> |
| </head> |
| <body> |
| <div class="kudu-site container-fluid"> |
| <!-- Static navbar --> |
| <nav class="navbar navbar-default"> |
| <div class="container-fluid"> |
| <div class="navbar-header"> |
| <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> |
| <span class="sr-only">Toggle navigation</span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| |
| <a class="logo" href="/"><img |
| src="//d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_80px.png" |
| srcset="//d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_80px.png 1x, //d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_160px.png 2x" |
| alt="Apache Kudu"/></a> |
| |
| </div> |
| <div id="navbar" class="collapse navbar-collapse"> |
| <ul class="nav navbar-nav navbar-right"> |
| <li > |
| <a href="/">Home</a> |
| </li> |
| <li > |
| <a href="/overview.html">Overview</a> |
| </li> |
| <li class="active"> |
| <a href="/docs/">Documentation</a> |
| </li> |
| <li > |
| <a href="/releases/">Download</a> |
| </li> |
| <li > |
| <a href="/blog/">Blog</a> |
| </li> |
| <!-- NOTE: this dropdown menu does not appear on Mobile, so don't add anything here |
| that doesn't also appear elsewhere on the site. --> |
| <li class="dropdown"> |
| <a href="/community.html" role="button" aria-haspopup="true" aria-expanded="false">Community <span class="caret"></span></a> |
| <ul class="dropdown-menu"> |
| <li class="dropdown-header">GET IN TOUCH</li> |
| <li><a class="icon email" href="/community.html">Mailing Lists</a></li> |
| <li><a class="icon slack" href="https://getkudu-slack.herokuapp.com/">Slack Channel</a></li> |
| <li role="separator" class="divider"></li> |
| <li><a href="/community.html#meetups-user-groups-and-conference-presentations">Events and Meetups</a></li> |
| <li><a href="/committers.html">Project Committers</a></li> |
| <!--<li><a href="/roadmap.html">Roadmap</a></li>--> |
| <li><a href="/community.html#contributions">How to Contribute</a></li> |
| <li role="separator" class="divider"></li> |
| <li class="dropdown-header">DEVELOPER RESOURCES</li> |
| <li><a class="icon github" href="https://github.com/apache/incubator-kudu">GitHub</a></li> |
| <li><a class="icon gerrit" href="http://gerrit.cloudera.org:8080/#/q/status:open+project:kudu">Gerrit Code Review</a></li> |
| <li><a class="icon jira" href="https://issues.apache.org/jira/browse/KUDU">JIRA Issue Tracker</a></li> |
| <li role="separator" class="divider"></li> |
| <li class="dropdown-header">SOCIAL MEDIA</li> |
| <li><a class="icon twitter" href="https://twitter.com/ApacheKudu">Twitter</a></li> |
| </ul> |
| </li> |
| <li > |
| <a href="/faq.html">FAQ</a> |
| </li> |
| </ul><!-- /.nav --> |
| </div><!-- /#navbar --> |
| </div><!-- /.container-fluid --> |
| </nav> |
| |
| <!-- |
| |
| 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"> |
| Kudu is currently easier to install and manage with <a href="http://www.cloudera.com/content/www/en-us/products/cloudera-manager.html">Cloudera Manager</a>, |
| version 5.4.7 or newer. If you use Cloudera Manager, see also Cloudera’s |
| <a href="http://www.cloudera.com/content/www/en-us/documentation/betas/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>A host to run the Kudu master.</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="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, Ubuntu 14.04 (Trusty), Debian 8 (Jessie), or SLES 12.</p> |
| </li> |
| <li> |
| <p>A kernel and fileystem 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> |
| </ul> |
| </div> |
| </dd> |
| <dt class="hdlist1">OS X</dt> |
| <dd> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>OS X 10.10 Yosemite or OS X 10.11 El Capitan.</p> |
| </li> |
| <li> |
| <p>Prebuilt OS X 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">Management</div> |
| <ul> |
| <li> |
| <p>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.</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%;"> |
| <col style="width: 33%;"> |
| <col style="width: 33%;"> |
| </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</strong></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="http://archive.cloudera.com/beta/kudu/redhat/6/x86_64/kudu/cloudera-kudu.repo">RHEL 6</a>, |
| <a href="http://archive.cloudera.com/beta/kudu/redhat/7/x86_64/kudu/cloudera-kudu.repo">RHEL 7</a></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="http://archive.cloudera.com/beta/kudu/redhat/6/x86_64/kudu/0.8.0/RPMS/x86_64/">RHEL 6</a>, |
| <a href="http://archive.cloudera.com/beta/kudu/redhat/7/x86_64/kudu/0.8.0/RPMS/x86_64/">RHEL 7</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/beta/kudu/ubuntu/trusty/amd64/kudu/cloudera.list">Trusty</a></p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><a href="http://archive.cloudera.com/beta/kudu/ubuntu/trusty/amd64/kudu/pool/contrib/k/kudu/">Trusty</a></p></td> |
| </tr> |
| </tbody> |
| </table> |
| <div class="admonitionblock note"> |
| <table> |
| <tr> |
| <td class="icon"> |
| <i class="fa icon-note" title="Note"></i> |
| </td> |
| <td class="content"> |
| For later versions of Ubuntu, the Ubuntu Trusty packages are reported to install, though they have not been extensively tested. |
| </td> |
| </tr> |
| </table> |
| </div> |
| <div class="admonitionblock note"> |
| <table> |
| <tr> |
| <td class="icon"> |
| <i class="fa icon-note" title="Note"></i> |
| </td> |
| <td class="content"> |
| packages are not yet provided for SLES. |
| </td> |
| </tr> |
| </table> |
| </div> |
| <div class="sect2"> |
| <h3 id="_install_on_rhel_hosts"><a class="link" href="#_install_on_rhel_hosts">Install On RHEL 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 <RPM to install></code> and install the |
| <code>kudu-master</code> and <code>kudu-tserver</code> packages on the appropriate hosts. These packages |
| provide the operating system commands to start and stop Kudu.</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 individual DEBs, first download them, then use the command |
| <code>sudo dpkg -i <DEB to install></code> to install them.</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://<_host_name_>:8051/</code> |
| for masters |
| or <code>http://<_host_name_>:8050/</code> for tablet servers.</p> |
| </li> |
| </ul> |
| </div> |
| </li> |
| <li> |
| <p>If Kudu isn’t running, have a look at the log files in '/var/log/kudu', and if there’s a file |
| ending with '.FATAL' then it means Kudu wasn’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’t get the current time', it’s a |
| <a href="troubleshooting.html#ntp">problem with ntp</a>.</p> |
| </li> |
| <li> |
| <p>If it’s something else that doesn’t seem obvious or if you’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’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 |
| $ sudo chkconfig kudu-tserver on # RHEL / CentOS |
| |
| $ 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 gcc gcc-c++ autoconf automake libtool cyrus-sasl-devel \ |
| cyrus-sasl-plain patch pkgconfig make rsync vim-common gdb unzip redhat-lsb-core git</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.noarch.rpm |
| $ DTLS_RPM_URL=https://www.softwarecollections.org/en/scls/rhscl/devtoolset-3/epel-6-x86_64/download/${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 gem ruby-devel zlib-devel</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/incubator-kudu 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’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/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 gcc gcc-c++ autoconf automake libtool cyrus-sasl-devel \ |
| cyrus-sasl-plain patch pkgconfig make rsync vim-common gdb unzip redhat-lsb-core git |
| DTLS_RPM=rhscl-devtoolset-3-epel-6-x86_64.noarch.rpm |
| DTLS_RPM_URL=https://www.softwarecollections.org/en/scls/rhscl/devtoolset-3/epel-6-x86_64/download/${DTLS_RPM} |
| wget ${DTLS_RPM_URL} -O ${DTLS_RPM} |
| sudo yum install -y scl-utils ${DTLS_RPM} |
| sudo yum install -y devtoolset-3-toolchain |
| 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/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 git autoconf automake \ |
| curl gcc g++ libsasl2-dev libsasl2-modules \ |
| libtool ntp patch pkg-config make rsync unzip vim-common gdb python lsb-release</pre> |
| </div> |
| </div> |
| </li> |
| <li> |
| <p>Optional: Install additional packages to build the documentation</p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ sudo apt-get install 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/incubator-kudu 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/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 git autoconf automake \ |
| curl gcc g++ libsasl2-dev libsasl2-modules \ |
| libtool ntp patch pkg-config make rsync unzip vim-common gdb python lsb-release |
| git clone https://github.com/apache/incubator-kudu kudu |
| cd kudu |
| thirdparty/build-if-necessary.sh |
| mkdir -p build/release |
| cd build/release |
| ../../thirdparty/installed/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 gcc gcc-c++ \ |
| gdb git libtool make ntp patch pkg-config python rsync unzip vim lsb-release</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/incubator-kudu 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/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 autoconf automake curl cyrus-sasl-devel gcc gcc-c++ \ |
| gdb git libtool make ntp patch pkg-config python rsync unzip vim lsb-release |
| git clone https://github.com/apache/incubator-kudu kudu |
| cd kudu |
| thirdparty/build-if-necessary.sh |
| mkdir -p build/release |
| cd build/release |
| ../../thirdparty/installed/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">OS X</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="admonitionblock warning"> |
| <table> |
| <tr> |
| <td class="icon"> |
| <i class="fa icon-warning" title="Warning"></i> |
| </td> |
| <td class="content"> |
| <div class="title">OS X Known Issues</div> |
| <div class="paragraph"> |
| <p>Kudu support for OS X is experimental, and should only be used for development. |
| See <a href="https://issues.cloudera.org/browse/KUDU-1219">OS X Limitations & 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 libtool pkg-config pstree</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/incubator-kudu 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> |
| </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/bin/cmake -DCMAKE_BUILD_TYPE=release ../.. |
| make -j4</code></pre> |
| </div> |
| </div> |
| </li> |
| </ol> |
| </div> |
| <div class="exampleblock"> |
| <div class="title">Example 4. OSX Build Script</div> |
| <div class="content"> |
| <div class="paragraph"> |
| <p>This script provides an overview of the procedure to build Kudu on OSX, 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 install autoconf automake cmake libtool pkg-config pstree |
| git clone https://github.com/apache/incubator-kudu kudu |
| cd kudu |
| thirdparty/build-if-necessary.sh |
| mkdir -p build/release |
| cd build/release |
| ../../thirdparty/installed/bin/cmake -DCMAKE_BUILD_TYPE=release ../.. |
| 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</p> |
| </li> |
| <li> |
| <p>Apache Maven 3.x</p> |
| </li> |
| <li> |
| <p><code>protoc</code> 2.6 or newer installed in your path, or built from the <code>thirdparty/</code> directory. |
| You can run the following commands to build <code>protoc</code> from the third-party dependencies:</p> |
| </li> |
| </ul> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre>$ thirdparty/download-thirdparty.sh |
| $ thirdparty/build-thirdparty.sh protobuf</pre> |
| </div> |
| </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>The documentation for the C++ client APIs is included in the header files in |
| <code>/usr/include/kudu/</code> if you installed Kudu using packages or subdirectories |
| of <code>src/kudu/client/</code> if you built Kudu from source. If you installed Kudu using parcels, |
| no headers are included in your installation. and you will need to <a href="#build_kudu">build |
| Kudu from source</a> in order to have access to the headers and shared libraries.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The following command is a naive approach to finding relevant header files. Use |
| of any APIs other than the client APIs is unsupported.</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlight"><code class="language-bash" data-lang="bash">$ find /usr/include/kudu -type f -name *.h</code></pre> |
| </div> |
| </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="#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="paragraph"> |
| <p>Additionally, during the beta period:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Upgrades are only supported when going from the previous latest version to |
| the newest released version.</p> |
| </li> |
| <li> |
| <p>Rolling upgrades are not supported. Please shut down all Kudu services before |
| upgrading the software.</p> |
| </li> |
| </ul> |
| </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 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_hosts">Install On RHEL 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">OS X</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="transaction_semantics.html">Kudu Transaction Semantics</a> |
| </li> |
| <li> |
| |
| <a href="contributing.html">Contributing to Kudu</a> |
| </li> |
| <li> |
| |
| <a href="style_guide.html">Kudu Documentation Style Guide</a> |
| </li> |
| <li> |
| |
| <a href="configuration_reference.html">Kudu Configuration Reference</a> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <footer class="footer"> |
| <p class="small"> |
| Copyright © 2016 The Apache Software Foundation. Last updated 2016-08-22 12:38:14 PDT |
| </p> |
| </footer> |
| </div> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> |
| <script> |
| // Try to detect touch-screen devices. Note: Many laptops have touch screens. |
| $(document).ready(function() { |
| if ("ontouchstart" in document.documentElement) { |
| $(document.documentElement).addClass("touch"); |
| } else { |
| $(document.documentElement).addClass("no-touch"); |
| } |
| }); |
| </script> |
| <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" |
| integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" |
| crossorigin="anonymous"></script> |
| <script> |
| (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
| (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
| m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
| })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); |
| |
| ga('create', 'UA-68448017-1', 'auto'); |
| ga('send', 'pageview'); |
| </script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/3.1.0/anchor.js"></script> |
| <script> |
| anchors.options = { |
| placement: 'right', |
| visible: 'touch', |
| }; |
| anchors.add(); |
| </script> |
| </body> |
| </html> |
| |