You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by jd...@apache.org on 2016/02/12 01:16:47 UTC

[1/3] incubator-kudu git commit: Update NOTICE.txt to include Apache copyright

Repository: incubator-kudu
Updated Branches:
  refs/heads/branch-0.7.0 2e28d1aec -> 899d79a24


Update NOTICE.txt to include Apache copyright

According to http://apache.org/legal/src-headers.html#notice the
NOTICE.txt file should follow a particular template. This patch updates
the file to follow the template.

After going through all of the licenses in LICENSE.txt, I believe none
of them require special notification aside from inclusion in LICENSE.txt
for a source distribution.

I kept the mention of Cloudera as a courtesy, since Cloudera was the
original donor of Kudu to the ASF. This has been done in other Apache
projects as well.

Change-Id: I9bfb81f786e33c174eb625fd92b86dcffd97877b
Reviewed-on: http://gerrit.cloudera.org:8080/2108
Tested-by: Kudu Jenkins
Reviewed-by: Jean-Daniel Cryans
(cherry picked from commit 241e650c5aff36dad3c15d0331c4ceb33038d6e3)
Reviewed-on: http://gerrit.cloudera.org:8080/2129
Tested-by: Jean-Daniel Cryans


Project: http://git-wip-us.apache.org/repos/asf/incubator-kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kudu/commit/b3eb88e9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kudu/tree/b3eb88e9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kudu/diff/b3eb88e9

Branch: refs/heads/branch-0.7.0
Commit: b3eb88e95f2bd31f9febade96108b7927e289ae4
Parents: 2e28d1a
Author: Mike Percy <mp...@apache.org>
Authored: Thu Feb 11 00:18:14 2016 +0200
Committer: Jean-Daniel Cryans <jd...@gerrit.cloudera.org>
Committed: Thu Feb 11 23:32:02 2016 +0000

----------------------------------------------------------------------
 NOTICE.txt | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/b3eb88e9/NOTICE.txt
----------------------------------------------------------------------
diff --git a/NOTICE.txt b/NOTICE.txt
index e346c66..f41d702 100644
--- a/NOTICE.txt
+++ b/NOTICE.txt
@@ -1,4 +1,8 @@
-Kudu
+Apache Kudu
+Copyright 2016 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
 
 Portions of this software were developed at
 Cloudera, Inc (http://www.cloudera.com/).


[3/3] incubator-kudu git commit: Set -rpath in all thirdparty libs for compat with gold

Posted by jd...@apache.org.
Set -rpath in all thirdparty libs for compat with gold

Make sure that thirdparty shared libs are built with a -rpath that
includes thirdparty/installed-deps* because the GNU gold linker
specifies RUNPATH by default, instead of RPATH. This is due to the fact
that at the time of this writing, gold defaults to --enable-new-dtags
while binutils ld defaults to --disable-new-dtags [1].

Unfortunately, glibc does not search an executable's RUNPATH for
transitive dependencies [2], like it does for RPATH. This results in
symbol not found errors for full builds done using gold as the linker
unless we apply this change.

This patch adds the installed-deps directory to the -rpath of thirdparty
shared objects so that the correct paths are set and the symbols are
resolved.

This issue was originally identified by Todd, and here is the text of
his email to the dev list:

a) I usually use gold rather than binutils ld as my linker. gold generates
RUNPATH instead of RPATH by default, which has the difference that RUNPATH
doesn't propagate transitively. In other words, even though
protoc-gen-insertions has installed-deps/lib in its RUNPATH, it doesn't use
_that_ RPATH when looking for dependencies of libglog.so, because
libglog.so has its own RUNPATH.

b) my libglog.so's RUNPATH doesn't have installed-deps/. It turns out that,
after I rebuilt my thirdparty from git completely clean, that one didn't
end up with it either. It only got installed-deps/ in its RUNPATH before
because I had an old 'libgflags.la' file lying around.

c) we no longer generate 'libgflags.la' from the gflags build
after 7a68e1f8baee04eaf259f7567ddc39e09a0f0938 which switched from using
autotools to cmake to build and install gflag. This means that we don't
generate the libtool control file 'libgflags.la' anymore, though my old one
got orphaned in the build directory.

[1] http://blog.tremily.us/posts/rpath/
[2] https://sourceware.org/bugzilla/show_bug.cgi?id=13945

Change-Id: Ic50b3667f96cec73497248751e9afc785e3f7979
Reviewed-on: http://gerrit.cloudera.org:8080/2123
Reviewed-by: Adar Dembo <ad...@cloudera.com>
Tested-by: Kudu Jenkins
(cherry picked from commit 2567ed0087ed6664a93ce1400e5f4f89c730cb14)
Reviewed-on: http://gerrit.cloudera.org:8080/2130
Reviewed-by: Jean-Daniel Cryans
Tested-by: Jean-Daniel Cryans


Project: http://git-wip-us.apache.org/repos/asf/incubator-kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kudu/commit/899d79a2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kudu/tree/899d79a2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kudu/diff/899d79a2

Branch: refs/heads/branch-0.7.0
Commit: 899d79a246161b4429663f23d135bc8fdcac4372
Parents: a9af916
Author: Mike Percy <mp...@apache.org>
Authored: Thu Feb 11 19:35:03 2016 +0200
Committer: Jean-Daniel Cryans <jd...@gerrit.cloudera.org>
Committed: Fri Feb 12 00:13:59 2016 +0000

----------------------------------------------------------------------
 thirdparty/build-thirdparty.sh | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/899d79a2/thirdparty/build-thirdparty.sh
----------------------------------------------------------------------
diff --git a/thirdparty/build-thirdparty.sh b/thirdparty/build-thirdparty.sh
index 4d6b8a6..6c88fca 100755
--- a/thirdparty/build-thirdparty.sh
+++ b/thirdparty/build-thirdparty.sh
@@ -154,6 +154,19 @@ fi
 EXTRA_CFLAGS="-g $EXTRA_CFLAGS"
 EXTRA_CXXFLAGS="-g $EXTRA_CXXFLAGS"
 
+save_env
+
+# Specifying -Wl,-rpath has different default behavior on GNU binutils ld vs.
+# the GNU gold linker. ld sets RPATH (due to defaulting to --disable-new-dtags)
+# and gold sets RUNPATH (due to defaulting to --enable-new-dtags). At the time
+# of this writing, contrary to the way RPATH is treated, when RUNPATH is
+# specified on a binary, glibc doesn't respect it for transitive (non-direct)
+# library dependencies (see https://sourceware.org/bugzilla/show_bug.cgi?id=13945).
+# So we must set RUNPATH for all deps-of-deps on the dep libraries themselves.
+# This applies both here and the locations elsewhere in this script where we
+# add $PREFIX/lib to -Wl,-rpath.
+EXTRA_LDFLAGS="-Wl,-rpath,$PREFIX/lib $EXTRA_LDFLAGS"
+
 if [ -n "$OS_LINUX" ] && [ -n "$F_ALL" -o -n "$F_LIBUNWIND" ]; then
   build_libunwind
 fi
@@ -204,10 +217,15 @@ if [ -n "$OS_LINUX" ] && [ -n "$F_ALL" -o -n "$F_NVML" ]; then
   build_nvml
 fi
 
+restore_env
+
 ### Build C++ dependencies
 
 PREFIX=$PREFIX_DEPS
 
+save_env
+EXTRA_LDFLAGS="-Wl,-rpath,$PREFIX/lib $EXTRA_LDFLAGS"
+
 if [ -n "$F_ALL" -o -n "$F_GFLAGS" ]; then
   build_gflags
 fi
@@ -236,6 +254,8 @@ if [ -n "$F_ALL" -o -n "$F_CRCUTIL" ]; then
   build_crcutil
 fi
 
+restore_env
+
 ## Build C++ dependencies with TSAN instrumentation
 
 if [ -n "$F_TSAN" ]; then
@@ -298,7 +318,7 @@ if [ -n "$F_TSAN" ]; then
   EXTRA_CXXFLAGS="-isystem $PREFIX_LIBSTDCXX_TSAN/include/c++/$GCC_VERSION/backward $EXTRA_CXXFLAGS"
   EXTRA_CXXFLAGS="-isystem $PREFIX_LIBSTDCXX_TSAN/include/c++/$GCC_VERSION $EXTRA_CXXFLAGS"
   EXTRA_CXXFLAGS="-L$PREFIX_LIBSTDCXX_TSAN/lib $EXTRA_CXXFLAGS"
-  EXTRA_LDFLAGS="-Wl,-rpath,$PREFIX_LIBSTDCXX_TSAN/lib $EXTRA_LDFLAGS"
+  EXTRA_LDFLAGS="-Wl,-rpath,$PREFIX_LIBSTDCXX_TSAN/lib,-rpath,$PREFIX/lib $EXTRA_LDFLAGS"
 
   if [ -n "$F_ALL" -o -n "$F_PROTOBUF" ]; then
     build_protobuf
@@ -311,7 +331,7 @@ if [ -n "$F_TSAN" ]; then
   EXTRA_CXXFLAGS="-isystem $PREFIX_LIBSTDCXX/include/c++/$GCC_VERSION/backward $EXTRA_CXXFLAGS"
   EXTRA_CXXFLAGS="-isystem $PREFIX_LIBSTDCXX/include/c++/$GCC_VERSION $EXTRA_CXXFLAGS"
   EXTRA_CXXFLAGS="-L$PREFIX_LIBSTDCXX/lib $EXTRA_CXXFLAGS"
-  EXTRA_LDFLAGS="-Wl,-rpath,$PREFIX_LIBSTDCXX/lib $EXTRA_LDFLAGS"
+  EXTRA_LDFLAGS="-Wl,-rpath,$PREFIX_LIBSTDCXX/lib,-rpath,$PREFIX/lib $EXTRA_LDFLAGS"
 
   if [ -n "$F_ALL" -o -n "$F_GFLAGS" ]; then
     build_gflags


[2/3] incubator-kudu git commit: Reorg of release notes to be more flexible as we add more releases in future

Posted by jd...@apache.org.
Reorg of release notes to be more flexible as we add more releases in future

Change-Id: I2199ac2aae97a4152a8ca2c20e405fd6b27bf7fd
Reviewed-on: http://gerrit.cloudera.org:8080/2091
Reviewed-by: Adar Dembo <ad...@cloudera.com>
Tested-by: Kudu Jenkins
(cherry picked from commit 715722bc989d5db441d04839110a601178416515)
Reviewed-on: http://gerrit.cloudera.org:8080/2132
Reviewed-by: Jean-Daniel Cryans
Tested-by: Jean-Daniel Cryans


Project: http://git-wip-us.apache.org/repos/asf/incubator-kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kudu/commit/a9af9160
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kudu/tree/a9af9160
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kudu/diff/a9af9160

Branch: refs/heads/branch-0.7.0
Commit: a9af9160b67d257a8e5155ddbb205ceb395a0130
Parents: b3eb88e
Author: Misty Stanley-Jones <ms...@cloudera.com>
Authored: Mon Feb 8 10:55:47 2016 -0800
Committer: Jean-Daniel Cryans <jd...@gerrit.cloudera.org>
Committed: Thu Feb 11 23:49:33 2016 +0000

----------------------------------------------------------------------
 docs/release_notes.adoc | 193 ++++++++++++++++++++++++++-----------------
 1 file changed, 118 insertions(+), 75 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/a9af9160/docs/release_notes.adoc
----------------------------------------------------------------------
diff --git a/docs/release_notes.adoc b/docs/release_notes.adoc
index b850b31..7962913 100644
--- a/docs/release_notes.adoc
+++ b/docs/release_notes.adoc
@@ -53,7 +53,7 @@ By combining all of these properties, Kudu targets support for families of
 applications that are difficult or impossible to implement on current-generation
 Hadoop storage technologies.
 
-[0.7.0]
+[[rn_0.7.0]]
 === Release notes specific to 0.7.0
 
 Kudu 0.7.0 is the first release done as part of the Apache Incubator and includes a number
@@ -64,7 +64,7 @@ See also +++<a href="https://issues.cloudera.org/issues/?jql=project%20%3D%20Kud
 for Kudu 0.7.0</a>+++ and +++<a href="https://github.com/apache/incubator-kudu/compare/branch-0.6.0...branch-0.7.0">Git
 changes between 0.6.0 and 0.7.0</a>+++.
 
-[0.7.0_incompatible_changes]
+[[rn_0.7.0_incompatible_changes]]
 ==== Incompatible changes
 
 . The C++ client includes a new API, `KuduScanBatch`, which performs better when a
@@ -84,13 +84,13 @@ quality and testing. The read path (scanners) has been improved by adding many o
 the features already supported by the C++ and Java clients. The Python client is no
 longer considered experimental.
 
-[0.7.0_new_features]
+[[rn_0.7.0_new_features]]
 ==== New features
 
 . With the goal of Spark integration in mind, a new `kuduRDD` API has been added,
 which wraps `newAPIHadoopRDD` and includes a default source for Spark SQL.
 
-[0.7.0_improvements]
+[[rn_0.7.0_improvements]]
 ==== Improvements
 
 . The Java client includes new methods `countPendingErrors()` and
@@ -99,7 +99,11 @@ retrieve outstanding row errors when configuring sessions with `AUTO_FLUSH_BACKG
 
 . New server-level metrics allow you to monitor CPU usage and context switching.
 
-[0.7.0_fixed_issues]
+. Kudu now builds on RHEL 7, CentOS 7, and SLES 12. Extra instructions are included
+for SLES 12.
+
+
+[[rn_0.7.0_fixed_issues]]
 ==== Fixed Issues
 
 . https://issues.cloudera.org/browse/KUDU-1288[KUDU-1288] fixes a severe file descriptor
@@ -108,7 +112,7 @@ leak, which could previously only be resolved by restarting the tablet server.
 . https://issues.cloudera.org/browse/KUDU-1250[KUDU-1250] fixes a hang in the Java
 client when processing an in-flight batch and the previous batch encountered an error.
 
-[0.7.0_changes]
+[[rn_0.7.0_changes]]
 ==== Other noteworthy changes
 
 . The file block manager's performance was improved, but it is still not recommended for
@@ -130,7 +134,19 @@ as well. This is typically achieved by defining the `_GLIBCXX_USE_CXX11_ABI` mac
 at compile-time when building your application. For more information, see the
 previous link and link:http://developerblog.redhat.com/2015/02/05/gcc5-and-the-c11-abi/.
 
-[0.6.0]
+. The Python client is no longer considered experimental.
+
+==== Limitations
+
+See also <<beta_limitations>>. Where applicable, this list adds to or overrides that
+list.
+
+===== Operating System Limitations
+* Kudu 0.7 is known to work on RHEL 7 or 6.4 or newer, CentOS 7 or 6.4 or newer, Ubuntu
+Trusty, and SLES 12. Other operating systems may work but have not been tested.
+
+
+[[rn_0.6.0]]
 === Release notes specific to 0.6.0
 
 The 0.6.0 release contains incremental improvements and bug fixes. The most notable
@@ -149,7 +165,57 @@ instructions in link:installation.html#osx_from_source[OS X].
 
 The upgrade instructions are situated at link:installation.html#upgrade[Upgrade from 0.5.0 to 0.6.0].
 
-=== Kudu-Impala Integration Features
+==== Limitations
+
+See also <<beta_limitations>>. Where applicable, this list adds to or overrides that
+list.
+
+===== Operating System Limitations
+* Kudu 0.6 is known to work on RHEL 6.4 or newer, CentOS 6.4 or newer, and Ubuntu
+Trusty. Other operating systems may work but have not been tested.
+
+===== API Limitations
+* The Python client is still considered experimental.
+
+
+[[rn_0.5.0]]
+=== Release Notes Specific to 0.5.0
+
+==== Limitations
+
+See also <<beta_limitations>>. Where applicable, this list adds to or overrides that
+list.
+
+===== Operating System Limitations
+* Kudu 0.5 is known to work on RHEL 7 or 6.4 or newer, CentOS 7 or 6.4 or newer, Ubuntu
+Trusty, and SLES 12. Other operating systems may work but have not been tested.
+
+===== API Limitations
+* The Python client is considered experimental.
+
+=== About the Kudu Public Beta
+
+This release of Kudu is a public beta. Do not run this beta release on production clusters.
+During the public beta period, Kudu will be supported via a
+link:https://issues.cloudera.org/projects/KUDU[public JIRA] and a public
+link:http://mail-archives.apache.org/mod_mbox/incubator-kudu-user/[mailing list], which will be
+monitored by the Kudu development team and community members. Commercial support
+is not available at this time.
+
+* You can submit any issues or feedback related to your Kudu experience via either
+the JIRA system or the mailing list. The Kudu development team and community members
+will respond and assist as quickly as possible.
+* The Kudu team will work with early adopters to fix bugs and release new binary drops
+when fixes or features are ready. However, we cannot commit to issue resolution or
+bug fix delivery times during the public beta period, and it is possible that some
+fixes or enhancements will not be selected for a release.
+* We can't guarantee time frames or contents for future beta code drops. However,
+they will be announced to the user group when they occur.
+* No guarantees are made regarding upgrades from this release to follow-on releases.
+While multiple drops of beta code are planned, we can't guarantee their schedules
+or contents.
+
+==== Kudu-Impala Integration Features
 `CREATE TABLE`::
   Impala supports creating and dropping tables using Kudu as the persistence layer.
   The tables follow the same internal / external approach as other tables in Impala,
@@ -177,67 +243,14 @@ High-efficiency queries::
   are evaluated as close as possible to the data. Query performance is comparable
   to Parquet in many workloads.
 
-== About the Kudu Public Beta
+[[beta_limitations]]
+==== Limitations of the Kudu Public Beta
 
-This release of Kudu is a public beta. Do not run this beta release on production clusters.
-During the public beta period, Kudu will be supported via a
-link:https://issues.cloudera.org/projects/KUDU[public JIRA] and a public
-link:https://groups.google.com/forum/#!forum/kudu-user[mailing list], which will be
-monitored by the Kudu development team and community members. Commercial support
-is not available at this time.
+Items in this list may be amended or superseded by limitations listed in the release
+notes for specific Kudu releases above.
 
-* You can submit any issues or feedback related to your Kudu experience via either
-the JIRA system or the mailing list. The Kudu development team and community members
-will respond and assist as quickly as possible.
-* The Kudu team will work with early adopters to fix bugs and release new binary drops
-when fixes or features are ready. However, we cannot commit to issue resolution or
-bug fix delivery times during the public beta period, and it is possible that some
-fixes or enhancements will not be selected for a release.
-* We can't guarantee time frames or contents for future beta code drops. However,
-they will be announced to the user group when they occur.
-* No guarantees are made regarding upgrades from this release to follow-on releases.
-While multiple drops of beta code are planned, we can't guarantee their schedules
-or contents.
 
-== Disclaimer on Apache Incubation
-
-Apache Kudu is an effort undergoing incubation at The Apache Software
-Foundation (ASF), sponsored by the Apache Incubator PMC. Incubation is
-required of all newly accepted projects until a further review
-indicates that the infrastructure, communications, and decision making
-process have stabilized in a manner consistent with other successful
-ASF projects. While incubation status is not necessarily a reflection
-of the completeness or stability of the code, it does indicate that
-the project has yet to be fully endorsed by the ASF.
-
-
-== Resources
-
-- link:http://getkudu.io[Kudu Website]
-- link:http://github.com/cloudera/kudu[Kudu Github Repository]
-- link:index.html[Kudu Documentation]
-
-== Installation Options
-* A Quickstart VM is provided to get you up and running quickly.
-* You can install Kudu using provided deb/yum packages.
-* You can install Kudu, in clusters managed by Cloudera Manager, using parcels or deb/yum packages.
-* You can build Kudu from source.
-
-For full installation details, see link:installation.html[Kudu Installation].
-
-== Limitations of the Public Beta
-
-=== Operating System Limitations
-* RHEL 6.4 or newer, CentOS 6.4 or newer, and Ubuntu Trusty are are the only
-operating systems supported for installation in the public beta. Others may work
-but have not been tested.
-
-=== Storage Limitations
-* Kudu has been tested with up to 4 TB of data per tablet server. More testing
-is needed for denser storage configurations.
-
-=== Schema Limitations
-* Testing with more than 20 columns has been limited.
+===== Schema Limitations
 * Kudu is primarily designed for analytic use cases and, in the beta release,
 you are likely to encounter issues if a single row contains multiple kilobytes of data.
 * The columns which make up the primary key must be listed first in the schema.
@@ -251,7 +264,7 @@ primary key definition.
 There is no way to run compaction manually, but dropping the table will reclaim the
 space immediately.
 
-=== Ingest Limitations
+===== Ingest Limitations
 * Ingest via Sqoop or Flume is not supported in the public beta. The recommended
 approach for bulk ingest is to use Impala’s `CREATE TABLE AS SELECT` functionality
 or use the Kudu Java or C++ API.
@@ -261,12 +274,12 @@ link:schema_design.html[Schema Design].
 * Tablets cannot currently be merged. Instead, create a new table with the contents
 of the old tables to be merged.
 
-=== Replication and Backup Limitations
+===== Replication and Backup Limitations
 * Replication and failover of Kudu masters is considered experimental. It is
 recommended to run a single master and periodically perform a manual backup of
 its data directories.
 
-=== Impala Limitations
+===== Impala Limitations
 * To use Kudu with Impala, you must install a special release of Impala called
 Impala_Kudu. Obtaining and installing a compatible Impala release is detailed in Kudu's
 link:kudu_impala_integration.html[Impala Integration] documentation.
@@ -288,24 +301,28 @@ a string key `name`, the predicate `WHERE ts >= 12345` will convert into an
 efficient range scan, whereas `where name > 'lipcon'` will currently fetch all
 data from the table and evaluate the predicate within Impala.
 
-=== Security Limitations
+===== Security Limitations
+
 * Authentication and authorization are not included in the public beta.
 * Data encryption is not included in the public beta.
 
-=== Client and API Limitations
+===== Client and API Limitations
+
 * Potentially-incompatible C++, Java and Python API changes may be required during the
 public beta.
 * `ALTER TABLE` is not yet fully supported via the client APIs. More `ALTER TABLE`
 operations will become available in future betas.
 
-=== Application Integration Limitations
+===== Application Integration Limitations
+
 * The Spark DataFrame implementation is not yet complete.
 
-=== Other Known Issues
+===== Other Known Issues
+
 The following are known bugs and issues with the current beta release. They will
 be addressed in later beta releases.
 
-* Building Kudu from source using `gcc` 4.6 causes runtime and test failures. Be sure
+* Building Kudu from source using `gcc` 4.6 or 4.7 causes runtime and test failures. Be sure
 you are using a different version of `gcc` if you build Kudu from source.
 * If the Kudu master is configured with the `-log_fsync_all` option, tablet servers
 and clients will experience frequent timeouts, and the cluster may become unusable.
@@ -314,7 +331,33 @@ to start up. It is recommended to limit the number of tablets per server to 100
 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.
 
-== Next Steps
+
+=== Disclaimer on Apache Incubation
+
+Apache Kudu is an effort undergoing incubation at The Apache Software
+Foundation (ASF), sponsored by the Apache Incubator PMC. Incubation is
+required of all newly accepted projects until a further review
+indicates that the infrastructure, communications, and decision making
+process have stabilized in a manner consistent with other successful
+ASF projects. While incubation status is not necessarily a reflection
+of the completeness or stability of the code, it does indicate that
+the project has yet to be fully endorsed by the ASF.
+
+=== Resources
+
+- link:http://getkudu.io[Kudu Website]
+- link:http://github.com/cloudera/kudu[Kudu Github Repository]
+- link:index.html[Kudu Documentation]
+
+=== Installation Options
+* A Quickstart VM is provided to get you up and running quickly.
+* You can install Kudu using provided deb/yum packages.
+* You can install Kudu, in clusters managed by Cloudera Manager, using parcels or deb/yum packages.
+* You can build Kudu from source.
+
+For full installation details, see link:installation.html[Kudu Installation].
+
+=== Next Steps
 - link:quickstart.html[Kudu Quickstart]
 - link:installation.html[Installing Kudu]
 - link:configuration.html[Configuring Kudu]