安装指南

原文链接 :http://kudu.apache.org/docs/installation.html

译文链接 : http://cwiki.apachecn.org/pages/viewpage.action?pageId=10813613

贡献者 : 小瑶 ApacheCN Apache中文网

安装 Apache Kudu

您可以使用软件包在集群上部署 Kudu ,也可以从源代码构建 Kudu 。要运行 Kudu 而不安装任何东西,请使用 Kudu QuickStart VM

注意

Kudu 目前更容易使用 Cloudera Manager 5.4.7 或更高版本进行安装和管理。如果您使用 Cloudera Manager ,请参阅 ClouderaKudu 文档

升级 Kudu

要从以前的版本升级 Kudu ,请参阅从以前版本的 Kudu 升级

先决条件和要求

硬件

  • 一个或者多个主机运行 Kudu masters。建议使用一个主站 ( master ) ( 无容错 ),三个 masters ( 可以容忍一个故障 ) 或 五个 masters ( 可以容忍两个故障 )。
  • 运行 Kudu tablet servers 的一个或多个主机。使用副本时,至少需要三个 tablet servers

操作系统要求

Linux

  • RHEL 6RHEL 7CentOS 6CentOS 7Ubuntu 14.04 (Trusty)Ubuntu 16.04 (Xenial)Debian 8 (Jessie) , 或 SLES 12
  • 支持 hole punching ( 打孔的 ) 内核和文件系统。打孔是使用 FALLOC_FL_PUNCH_HOLE 选项设置的 fallocate(2) 系统调用。有关详细信息,请参阅 故障排除 hole punching
  • ntp
  • xfs 或者 ext4 格式化的驱动器。

macOS

  • OS X 10.10 YosemiteOS X 10.11 El Capitan , 或 macOS Sierra
  • 未提供预建的 macOS 包。

Windows

  • Microsoft Windows 不受支持。

Storage ( 存储 )

  • 如果固态存储可用,在这种高性能介质上存储 Kudu WAL 可以显著改善 Kudu 配置为其最高耐久性水平时的延迟。

Management ( 管理 )

  • 如果您使用 Cloudera ManagerCDH ,则需要 Cloudera Manager 5.4.3 或更高版本。Cloudera Manager 5.4.7 及更新版本提供更好的监控和管理选项。

使用包安装

您可以使用操作系统管理的软件包来安装 Kudu

表1.Kudu 包位置

OS ( 操作系统 ) Repository ( 存储库 ) Individual Packages ( 单个包 )
RHEL 或 CentOS RHEL 6 or CentOS 6, RHEL 7 or CentOS 7 RHEL 6 or CentOS 6, RHEL 7 or CentOS 7
SLES SLES 12 SLES 12
Ubuntu Trusty, Xenial Trusty, Xenial
Debian Jessie Jessie

安装在 RHEL 或 CentOS 主机上

  1. 下载并配置您的操作系统的 Kudu 存储库,或使用 Kudu Package Locations 的相应链接手动下载各个 RPM
  2. 如果使用 Yum 存储库,请在将 cloudera-kudu.repo 文件保存到 /etc/yum.repos.d/ 之后,使用以下命令在每个主机上安装 Kudu 软件包。

    1. sudo yum install kudu # Base Kudu files
    2. sudo yum install kudu-master # Kudu master init.d service script and default configuration
    3. sudo yum install kudu-tserver # Kudu tablet server init.d service script and default configuration
    4. sudo yum install kudu-client0 # Kudu C++ client shared library
    5. sudo yum install kudu-client-devel # Kudu C++ client SDK
  3. 要手动安装 Kudu RPM ,首先下载它们,然后使用命令 sudo rpm -ivh <RPM安装> 来安装。

  4. 注意:kudu-masterkudu-tserver 软件包仅在分别有 mastertserver 的主机上需要 ( 如果使用 Cloudera Manager 则完全不必要 )。每个提供配置文件和一个 init.d 脚本来管理相应的 Kudu 进程。一旦安装, Kudu 进程将在主机启动并关闭时自动启动和停止。

安装在 SLES 主机上

  1. 下载并配置您的操作系统的 Kudu 存储库,或使用 Kudu Package Locations 的相应链接手动下载各个 RPM
  2. 如果使用 Zypper 存储库,请在将 cloudera-kudu.repo 文件保存到 /etc/zypper/repos.d 之后,使用以下命令在每个主机上安装 Kudu 软件包。

    1. sudo zypper install kudu # Base Kudu files
    2. sudo zypper install kudu-master # Kudu master init.d service script and default configuration
    3. sudo zypper install kudu-tserver # Kudu tablet server init.d service script and default configuration
    4. sudo zypper install kudu-client0 # Kudu C++ client shared library
    5. sudo zypper install kudu-client-devel # Kudu C++ client SDK
  3. 要手动安装 Kudu RPM ,首先下载它们,然后使用命令 sudo rpm -ivh <RPM安装> 来安装。

  4. 注意:kudu-masterkudu-tserver 软件包仅在分别有 mastertserver 的主机上需要 ( 如果使用 Cloudera Manager 则完全不必要 )。每个提供配置文件和一个 init.d 脚本来管理相应的 Kudu 进程。一旦安装, Kudu 进程将在主机启动并关闭时自动启动和停止。

安装在 Ubuntu 或 Debian 主机上

  1. 如果使用 ubuntudebian 存储库,请在将 cloudera.list 文件保存到 /etc/apt/sources.list.d/ 之后,使用以下命令在每个主机上安装 Kudu 软件包。

    1. sudo apt-get install kudu # Base Kudu files
    2. sudo apt-get install kudu-master # Service scripts for managing kudu-master
    3. sudo apt-get install kudu-tserver # Service scripts for managing kudu-tserver
    4. sudo apt-get install libkuduclient0 # Kudu C++ client shared library
    5. sudo apt-get install libkuduclient-dev # Kudu C++ client SDK
  2. 要手动安装 Kudu RPM ,首先下载它们,然后使用命令 sudo rpm -ivh <RPM安装> 来安装。

  3. 注意:kudu-masterkudu-tserver 软件包仅在分别有 mastertserver 的主机上需要 ( 如果使用 Cloudera Manager 则完全不必要 ) 。每个提供配置文件和一个 init.d 脚本来管理相应的 Kudu 进程。一旦安装, Kudu 进程将在主机启动并关闭时自动启动和停止。

验证安装

  1. 使用以下方法之一验证服务是否正在运行: * 在服务器上检查 ps 命令的输出,以验证 kudu-masterkudu-tserver 进程之一或两者正在运行。 * 打开 Master 或者 Tablet Server web UI ,方法是打开 http://<_host_name_>:8051/ for master 或者 http://<_host_name_>:8050/ for tablet servers
  2. 如果 Kudu 没有运行,请查看 ‘/var/log/kudu’ 中的日志文件,如果有一个以 ‘.FATAL’ 结尾的文件,那意味着 Kudu 无法启动。
    • 如果 error“ Error during hole punch test” ,可能是 您的操作系统的问题
    • 如果 error“ Couldn’t get the current time “ ,这是 ntp 的问题
    • 如果这是其他似乎不明显的东西,或者如果您没有运气尝试上述解决方案,您可以在 用户邮件列表 中寻求帮助。

必需配置

在启动 Kudu 服务之前,需要在每个主机上执行其他配置步骤。

  1. 这些包在操作系统的备用数据库中创建一个 kudu-conf 条目,并且它们运送内置的 conf.dist 替代。要调整配置,您可以直接编辑 /etc/kudu/conf/ 中的文件,或者使用操作系统实用程序创建一个新的选项,确保它是 /etc/kudu/conf/ 指向的链接,在那里创建自定义配置文件配置的某些部分也配置在 /etc/default/kudu-master/etc/default/kudu-tserver 文件中。如果创建自定义配置文件,您应该包括或者复制这些配置选项。 查看配置,包括默认的 WAL 和数据目录位置,并根据您的要求进行调整。
  2. 使用以下命令启动 Kudu 服务:

    1. $ sudo service kudu-master start
    2. $ sudo service kudu-tserver start
  3. 要停止 Kudu 服务,请使用以下命令:

    1. $ sudo service kudu-master stop
    2. $ sudo service kudu-tserver stop
  4. Kudu 服务配置为在服务器启动时自动启动,将其添加到默认运行级别:

    1. $ sudo chkconfig kudu-master on # RHEL / CentOS / SLES
    2. $ sudo chkconfig kudu-tserver on # RHEL / CentOS / SLES
    3. $ sudo update-rc.d kudu-master defaults # Debian / Ubuntu
    4. $ sudo update-rc.d kudu-tserver defaults # Debian / Ubuntu
  5. 有关 Kudu 服务的其他配置,请参阅 配置 Kudu

从源代码构建

如果使用包裹或者软件包安装 Kudu 不能提供所需的灵活性,则可以从源代码构建 Kudu 。您可以在任何支持的操作系统上从源代码构建。

注意

已知的构建问题

  • 不可能在 MicroSoft Windows 上构建 Kudu
  • 需要一个 C+ 11 编译器 ( GCC 4.8 ) 。

RHEL 或者 CentOS

需要 RHEL 或者 CentOS 6.6 或更高版本从源代码构建 Kudu 。要建立在 7.0 以上的版本上,必须安装 Red Hat Developer Toolset ( 才能访问支持 C++ 11 的编译器 )。

  1. 安装必备库( 如果没有安装 )。

    1. $ sudo yum install autoconf automake cyrus-sasl-devel cyrus-sasl-gssapi \
    2. cyrus-sasl-plain gcc gcc-c++ gdb git krb5-server krb5-workstation libtool \
    3. make openssl-devel patch pkgconfig redhat-lsb-core rsync unzip vim-common which
  2. 如果建立在 7.0 以上的 RHELCentOS 上,请安装 Red Hat Developer Toolset

    1. $ DTLS_RPM=rhscl-devtoolset-3-epel-6-x86_64-1-2.noarch.rpm
    2. $ DTLS_RPM_URL=https://www.softwarecollections.org/repos/rhscl/devtoolset-3/epel-6-x86_64/noarch/${DTLS_RPM}
    3. $ wget ${DTLS_RPM_URL} -O ${DTLS_RPM}
    4. $ sudo yum install -y scl-utils ${DTLS_RPM}
    5. $ sudo yum install -y devtoolset-3-toolchain
  3. 可选:如果您计划构建文档,请安装其他包,包括 ruby

    1. $ sudo yum install doxygen gem graphviz ruby-devel zlib-devel

    注意

    如果建立在 7.0 以上的 RHEL 或者 CentOS 上,则可能需要使用 rubygems 替换 gem

  4. 克隆 Git 存储库并切换到新的 kudu 目录

    1. $ git clone https://github.com/apache/kudu
    2. $ cd kudu
  5. 使用 build-if-necessary.sh 脚本构建任何缺少的第三方要求。不使用 devtoolset 会导致主机编译器似乎需要 libatomic ,但找不到它。

    1. $ build-support/enable_devtoolset.sh thirdparty/build-if-necessary.sh
  6. 使用上一步中安装的实用程序构建 Kudu 。为中间输出选择一个构建目录,除了 Kudu 目录本身之外,它可以在文件系统中的任何位置。请注意,devtoolset 仍然必须指定,否则您会得到 cc1plus:错误:unrecognized command line option “-std=c++11”

    1. mkdir -p build/release
    2. cd build/release
    3. ../../build-support/enable_devtoolset.sh \
    4. ../../thirdparty/installed/common/bin/cmake \
    5. -DCMAKE_BUILD_TYPE=release \
    6. ../..
    7. make -j4
  7. 可选:安装 Kudu 二进制文件,库和标题。如果不通过 DESTDIR 环境变量指定安装目录,则默认为 /usr/local/

    1. sudo make DESTDIR=/opt/kudu install
  8. 可选:构建文档。注意:此命令构建不适合上传到 Kudu 网站的本地文档。

    1. $ make docs

示例 1 . RHEL / CentOS 构建脚本

此脚本概述了在新安装的 RHELCentOS 主机上构建 Kudu 的过程,可用作自动部署场景的基础。它跳过上面标记为可选步骤的步骤。

  1. #!/bin/bash
  2. sudo yum -y install autoconf automake cyrus-sasl-devel cyrus-sasl-gssapi \
  3. cyrus-sasl-plain gcc gcc-c++ gdb git krb5-server krb5-workstation libtool \
  4. make openssl-devel patch pkgconfig redhat-lsb-core rsync unzip vim-common which
  5. DTLS_RPM=rhscl-devtoolset-3-epel-6-x86_64-1-2.noarch.rpm
  6. DTLS_RPM_URL=https://www.softwarecollections.org/repos/rhscl/devtoolset-3/epel-6-x86_64/noarch/${DTLS_RPM}
  7. wget ${DTLS_RPM_URL} -O ${DTLS_RPM}
  8. sudo yum install -y scl-utils ${DTLS_RPM}
  9. sudo yum install -y devtoolset-3-toolchain
  10. git clone https://github.com/apache/kudu
  11. cd kudu
  12. build-support/enable_devtoolset.sh thirdparty/build-if-necessary.sh
  13. mkdir -p build/release
  14. cd build/release
  15. ../../build-support/enable_devtoolset.sh \
  16. ../../thirdparty/installed/common/bin/cmake \
  17. -DCMAKE_BUILD_TYPE=release \
  18. ../..
  19. make -j4

Ubuntu 或者 Debian

  1. 安装必备库 ( 如果它们没有安装 )

    1. $ sudo apt-get install autoconf automake curl g++ gcc gdb git \
    2. krb5-admin-server krb5-kdc krb5-user libkrb5-dev libsasl2-dev libsasl2-modules \
    3. libsasl2-modules-gssapi-mit libssl-dev libtool lsb-release make ntp openssl \
    4. patch pkg-config python rsync unzip vim-common
  2. 可选:如果您计划构建文档,请安装其他包,包括 ruby

    1. $ sudo apt-get install doxygen gem graphviz ruby-dev xsltproc zlib1g-dev
  3. 克隆 Git 存储库并切换到新的 kudu 目录。

    1. $ git clone https://github.com/apache/kudu
    2. $ cd kudu
  4. 使用 build-if-necessary.sh 脚本构建任何缺少的第三方要求。

    1. $ thirdparty/build-if-necessary.sh
  5. 使用上一步中安装的实用程序构建 Kudu 。为中间输出选择一个构建目录,除了 kudu 目录本身之外,它可以在文件系统中的任何位置。

    1. mkdir -p build/release
    2. cd build/release
    3. ../../thirdparty/installed/common/bin/cmake -DCMAKE_BUILD_TYPE=release ../..
    4. make -j4
  6. 可选:安装 Kudu 二进制文件,库和标题。如果不通过 DESTDIR 环境变量指定安装目录,则默认为 /usr/local/

    1. sudo make DESTDIR=/opt/kudu install
  7. 可选:构建文档。注意:此命令构建不适合上传到 Kudu 网站的本地文档。

    1. $ make docs

示例 2 . Ubuntu 或者 Debian 构建脚本

该脚本概述了在 Ubuntu 上构建 Kudu 的过程,可以作为自动部署场景的基础。它跳过上面标记为可选步骤的步骤。

  1. #!/bin/bash
  2. sudo apt-get -y install autoconf automake curl g++ gcc gdb git \
  3. krb5-admin-server krb5-kdc krb5-user libkrb5-dev libsasl2-dev libsasl2-modules \
  4. libsasl2-modules-gssapi-mit libssl-dev libtool lsb-release make ntp openssl \
  5. patch pkg-config python rsync unzip vim-common
  6. git clone https://github.com/apache/kudu
  7. cd kudu
  8. thirdparty/build-if-necessary.sh
  9. mkdir -p build/release
  10. cd build/release
  11. ../../thirdparty/installed/common/bin/cmake \
  12. -DCMAKE_BUILD_TYPE=release \
  13. ../..
  14. make -j4

SUSE Linux Enterprise Server

  1. 安装必备库(如果没有安装)。

    1. $ sudo zypper install autoconf automake curl cyrus-sasl-devel \
    2. cyrus-sasl-gssapi gcc gcc-c++ gdb git krb5-devel libtool lsb-release make ntp \
    3. openssl-devel patch pkg-config python rsync unzip vim
  2. 克隆 Git 存储库并切换到新的 kudu 目录。

    1. $ git clone https://github.com/apache/kudu
    2. $ cd kudu
  3. 使用 build-if-necessary.sh 脚本构建任何缺少的第三方要求。

    1. $ thirdparty/build-if-necessary.sh
  4. 使用上一步中安装的实用程序构建 Kudu 。为中间输出选择一个构建目录,除了 kudu 目录本身之外,它可以在文件系统中的任何位置。

    1. mkdir -p build/release
    2. cd build/release
    3. ../../thirdparty/installed/common/bin/cmake \
    4. -DCMAKE_BUILD_TYPE=release \
    5. ../..
    6. make -j4
  5. 可选:安装 Kudu 二进制文件,库和标题。如果不通过 DESTDIR 环境变量指定安装目录,则默认为 /usr/local/

    1. sudo make DESTDIR=/opt/kudu install

示例 3 .SLES 构建脚本

此脚本概述了在 SLES 上构建 Kudu 的过程,并可用作自动部署场景的基础。它跳过上面标记为可选步骤的步骤。

  1. #!/bin/bash
  2. sudo zypper install -y autoconf automake curl cyrus-sasl-devel \
  3. cyrus-sasl-gssapi gcc gcc-c++ gdb git krb5-devel libtool lsb-release make ntp \
  4. openssl-devel patch pkg-config python rsync unzip vim
  5. git clone https://github.com/apache/kudu
  6. cd kudu
  7. thirdparty/build-if-necessary.sh
  8. mkdir -p build/release
  9. cd build/release
  10. ../../thirdparty/installed/common/bin/cmake \
  11. -DCMAKE_BUILD_TYPE=release \
  12. ../..
  13. make -j4

macOS

Xcode 包是编译 Kudu 所必需的。下面的一些说明使用 Homebrew 来安装依赖关系,但手动依赖安装是可能的。

注意

macOS 已知问题

KudumacOS 的支持是实验性的,只能用于开发。有关详细信息,请参阅 macOS 限制和已知问题

  1. 安装必备库(如果没有安装)。

    1. $ brew tap homebrew/dupes
    2. $ brew install autoconf automake cmake git krb5 libtool openssl pkg-config pstree
  2. 可选:如果您计划构建文档,请安装其他包,包括 ruby

    1. $ brew install doxygen graphviz ruby
    2. $ brew install gnu-sed --with-default-names #The macOS default sed handles the -i parameter differently
  3. 克隆 Git 存储库并切换到新的 kudu 目录。

    1. $ git clone https://github.com/apache/kudu
    2. $ cd kudu
  4. 使用 build-if-necessary.sh 脚本构建任何缺少的第三方要求。

    1. $ thirdparty/build-if-necessary.sh
    • 如果不同版本的依赖关系在调用 thirdParty / build-if-necessary.sh 时安装并使用,则可能会遇到类似于以下内容的输出:

      1. ./configure: line 16299: error near unexpected token `newline'
      2. ./configure: line 16299: ` PKG_CHECK_MODULES('

      第三方构建可能被缓存,并可能反映不正确版本的依赖关系。确保您具有步骤1中列出的正确依赖项,清理工作区,然后尝试重新构建。

      1. $ git clean -fdx
      2. $ thirdparty/build-if-necessary.sh
    • 自制安装和系统升级的一些组合可能会导致不同种类的错误:

      1. libtool: Version mismatch error.  This is libtool 2.4.6, but the
      2. libtool: definition of this LT_INIT comes from libtool 2.4.2.
      3. libtool: You should recreate aclocal.m4 with macros from libtool 2.4.6
      4. libtool: and run autoconf again.

      本线程 所述,可能的修复是卸载并重新安装 libtool

      1. $ brew uninstall libtool && brew install libtool

5. 构建 Kudu 。为中间输出选择一个构建目录,除了 kudu 目录本身之外,它可以在文件系统中的任何位置。

  1. mkdir -p build/release
  2. cd build/release
  3. ../../thirdparty/installed/common/bin/cmake \
  4. -DCMAKE_BUILD_TYPE=release \
  5. -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl \
  6. ../..
  7. make -j4

示例 4. macOS 构建脚本

此脚本概述了在 MacOS 上构建 Kudu 的过程,可用作自动部署场景的基础。它假定安装了 XcodeHomebrew

  1. #!/bin/bash
  2. brew tap homebrew/dupes
  3. brew install autoconf automake cmake git krb5 libtool openssl pkg-config pstree
  4. git clone https://github.com/apache/kudu
  5. cd kudu
  6. thirdparty/build-if-necessary.sh
  7. mkdir -p build/release
  8. cd build/release
  9. ../../thirdparty/installed/common/bin/cmake \
  10. -DCMAKE_BUILD_TYPE=release \
  11. -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl \
  12. ../..
  13. make -j4

安装 C++ 客户端库

如果您需要访问 Kudu 客户端库进行开发,请为您的平台安装 kudu-clientkudu-client-devel 软件包。请参阅 使用软件包安装

注意

仅针对客户端库和头( kudu_client.soclient.h )构建。其他图书馆和标题是 Kudu 的内部,没有稳定的保证。

构建 Java 客户端

要求

  • JDK 7
  • Apache Maven 3.x

要构建 Java 客户端,请克隆 Kudu Git 存储库,更改为 java 目录,并发出以下命令:

  1. $ mvn install -DskipTests

有关构建 Java API 以及 Eclipse 集成的更多信息,请参阅 java/README.md

查看 API 文档

C++ API 文档

您可以在线查看 C ++客户端API文档 。或者,在 从源代码构建 Kudu 后,您还可以另外构建 doxygen 目标(例如,如果使用 make ,则运行 make doxygen ),并通过在您最喜欢的 Web 中打开 docs/doxygen/client_api/html/index.html 文件来使用本地生成的 API 文档浏览器。

注意

为了构建 doxygen 目标,有必要在您的构建机器上安装带有 Dot(graphviz) 支持的 doxygen 。如果您从源代码构建 Kudu 后安装了 doxygen ,则需要再次运行 cmake 以获取 doxygen 位置并生成适当的目标。

Java API 文档

您可以在线查看 Java API 文档。或者,在 构建 Java 客户端 之后,Java API 文档可以在 java/kudu-client/target/apidocs/index.html 中找到。

从以前版本的 Kudu 升级

升级之前,您应该阅读要安装的 Kudu 版本的发行说明。 密切关注不兼容性,升级和降级在那里记录的笔记。

注意

目前不支持滚动升级。 升级软件之前,请关闭所有的 Kudu 服务。

升级程序

  1. 停止 Kudu mastertablet server 服务:

    1. $ sudo service kudu-master stop
    2. $ sudo service kudu-tserver stop
  2. 升级软件包:

    • RHEL 或者 CentOS 主机上:
    1. sudo yum clean all
    2. sudo yum upgrade kudu
    • SLES 主机上:
    1. sudo zypper clean --all
    2. sudo zypper update kudu
    • Ubuntu 或者 Debian 主机上:
    1. sudo apt-get update
    2. sudo apt-get install kudu
  3. 启动 Kudu mastertablet server 服务:

    1. $ sudo service kudu-master start
    2. $ sudo service kudu-tserver start

下一步