安装指南
原文链接 :http://kudu.apache.org/docs/installation.html
译文链接 : http://cwiki.apachecn.org/pages/viewpage.action?pageId=10813613
安装 Apache Kudu
您可以使用软件包在集群上部署 Kudu ,也可以从源代码构建 Kudu 。要运行 Kudu 而不安装任何东西,请使用 Kudu QuickStart VM 。
注意
Kudu 目前更容易使用 Cloudera Manager 5.4.7 或更高版本进行安装和管理。如果您使用 Cloudera Manager ,请参阅 Cloudera 的 Kudu 文档。
升级 Kudu
要从以前的版本升级 Kudu ,请参阅从以前版本的 Kudu 升级。
先决条件和要求
硬件
- 一个或者多个主机运行 Kudu masters。建议使用一个主站 ( master ) ( 无容错 ),三个 masters ( 可以容忍一个故障 ) 或 五个 masters ( 可以容忍两个故障 )。
- 运行 Kudu tablet servers 的一个或多个主机。使用副本时,至少需要三个 tablet servers 。
操作系统要求
Linux
- RHEL 6 ,RHEL 7 , CentOS 6 , CentOS 7 , Ubuntu 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 Yosemite , OS X 10.11 El Capitan , 或 macOS Sierra 。
- 未提供预建的 macOS 包。
Windows
- Microsoft Windows 不受支持。
Storage ( 存储 )
- 如果固态存储可用,在这种高性能介质上存储 Kudu WAL 可以显著改善 Kudu 配置为其最高耐久性水平时的延迟。
Management ( 管理 )
- 如果您使用 Cloudera Manager 和 CDH ,则需要 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 主机上
- 下载并配置您的操作系统的 Kudu 存储库,或使用 Kudu Package Locations 的相应链接手动下载各个 RPM 。
如果使用 Yum 存储库,请在将 cloudera-kudu.repo 文件保存到 /etc/yum.repos.d/ 之后,使用以下命令在每个主机上安装 Kudu 软件包。
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
要手动安装 Kudu RPM ,首先下载它们,然后使用命令 sudo rpm -ivh <RPM安装> 来安装。
注意:kudu-master 和 kudu-tserver 软件包仅在分别有 master 或 tserver 的主机上需要 ( 如果使用 Cloudera Manager 则完全不必要 )。每个提供配置文件和一个 init.d 脚本来管理相应的 Kudu 进程。一旦安装, Kudu 进程将在主机启动并关闭时自动启动和停止。
安装在 SLES 主机上
- 下载并配置您的操作系统的 Kudu 存储库,或使用 Kudu Package Locations 的相应链接手动下载各个 RPM 。
如果使用 Zypper 存储库,请在将 cloudera-kudu.repo 文件保存到 /etc/zypper/repos.d 之后,使用以下命令在每个主机上安装 Kudu 软件包。
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
要手动安装 Kudu RPM ,首先下载它们,然后使用命令 sudo rpm -ivh <RPM安装> 来安装。
注意:kudu-master 和 kudu-tserver 软件包仅在分别有 master 或 tserver 的主机上需要 ( 如果使用 Cloudera Manager 则完全不必要 )。每个提供配置文件和一个 init.d 脚本来管理相应的 Kudu 进程。一旦安装, Kudu 进程将在主机启动并关闭时自动启动和停止。
安装在 Ubuntu 或 Debian 主机上
如果使用 ubuntu 或 debian 存储库,请在将 cloudera.list 文件保存到 /etc/apt/sources.list.d/ 之后,使用以下命令在每个主机上安装 Kudu 软件包。
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
要手动安装 Kudu RPM ,首先下载它们,然后使用命令 sudo rpm -ivh <RPM安装> 来安装。
注意:kudu-master 和 kudu-tserver 软件包仅在分别有 master 或 tserver 的主机上需要 ( 如果使用 Cloudera Manager 则完全不必要 ) 。每个提供配置文件和一个 init.d 脚本来管理相应的 Kudu 进程。一旦安装, Kudu 进程将在主机启动并关闭时自动启动和停止。
验证安装
- 使用以下方法之一验证服务是否正在运行: * 在服务器上检查 ps 命令的输出,以验证 kudu-master 或 kudu-tserver 进程之一或两者正在运行。 * 打开 Master 或者 Tablet Server web UI ,方法是打开 http://<_host_name_>:8051/ for master 或者 http://<_host_name_>:8050/ for tablet servers 。
- 如果 Kudu 没有运行,请查看 ‘/var/log/kudu’ 中的日志文件,如果有一个以 ‘.FATAL’ 结尾的文件,那意味着 Kudu 无法启动。
必需配置
在启动 Kudu 服务之前,需要在每个主机上执行其他配置步骤。
- 这些包在操作系统的备用数据库中创建一个 kudu-conf 条目,并且它们运送内置的 conf.dist 替代。要调整配置,您可以直接编辑 /etc/kudu/conf/ 中的文件,或者使用操作系统实用程序创建一个新的选项,确保它是 /etc/kudu/conf/ 指向的链接,在那里创建自定义配置文件配置的某些部分也配置在 /etc/default/kudu-master 和 /etc/default/kudu-tserver 文件中。如果创建自定义配置文件,您应该包括或者复制这些配置选项。 查看配置,包括默认的 WAL 和数据目录位置,并根据您的要求进行调整。
使用以下命令启动 Kudu 服务:
$ sudo service kudu-master start
$ sudo service kudu-tserver start
要停止 Kudu 服务,请使用以下命令:
$ sudo service kudu-master stop
$ sudo service kudu-tserver stop
将 Kudu 服务配置为在服务器启动时自动启动,将其添加到默认运行级别:
$ 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
有关 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 的编译器 )。
安装必备库( 如果没有安装 )。
$ sudo yum install autoconf automake cyrus-sasl-devel cyrus-sasl-gssapi \
cyrus-sasl-plain gcc gcc-c++ gdb git krb5-server krb5-workstation libtool \
make openssl-devel patch pkgconfig redhat-lsb-core rsync unzip vim-common which
如果建立在 7.0 以上的 RHEL 或 CentOS 上,请安装 Red Hat Developer Toolset
$ 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
可选:如果您计划构建文档,请安装其他包,包括 ruby。
$ sudo yum install doxygen gem graphviz ruby-devel zlib-devel
注意
如果建立在 7.0 以上的 RHEL 或者 CentOS 上,则可能需要使用 rubygems 替换 gem 包
克隆 Git 存储库并切换到新的 kudu 目录
$ git clone https://github.com/apache/kudu
$ cd kudu
使用 build-if-necessary.sh 脚本构建任何缺少的第三方要求。不使用 devtoolset 会导致主机编译器似乎需要 libatomic ,但找不到它。
$ build-support/enable_devtoolset.sh thirdparty/build-if-necessary.sh
使用上一步中安装的实用程序构建 Kudu 。为中间输出选择一个构建目录,除了 Kudu 目录本身之外,它可以在文件系统中的任何位置。请注意,devtoolset 仍然必须指定,否则您会得到 cc1plus:错误:unrecognized command line option “-std=c++11” 。
mkdir -p build/release
cd build/release
../../build-support/enable_devtoolset.sh \
../../thirdparty/installed/common/bin/cmake \
-DCMAKE_BUILD_TYPE=release \
../..
make -j4
可选:安装 Kudu 二进制文件,库和标题。如果不通过 DESTDIR 环境变量指定安装目录,则默认为 /usr/local/ 。
sudo make DESTDIR=/opt/kudu install
可选:构建文档。注意:此命令构建不适合上传到 Kudu 网站的本地文档。
$ make docs
示例 1 . RHEL / CentOS 构建脚本
此脚本概述了在新安装的 RHEL 或 CentOS 主机上构建 Kudu 的过程,可用作自动部署场景的基础。它跳过上面标记为可选步骤的步骤。
#!/bin/bash
sudo yum -y install autoconf automake cyrus-sasl-devel cyrus-sasl-gssapi \
cyrus-sasl-plain gcc gcc-c++ gdb git 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
Ubuntu 或者 Debian
安装必备库 ( 如果它们没有安装 )
$ sudo apt-get install autoconf automake curl 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 openssl \
patch pkg-config python rsync unzip vim-common
可选:如果您计划构建文档,请安装其他包,包括 ruby 。
$ sudo apt-get install doxygen gem graphviz ruby-dev xsltproc zlib1g-dev
克隆 Git 存储库并切换到新的 kudu 目录。
$ git clone https://github.com/apache/kudu
$ cd kudu
使用 build-if-necessary.sh 脚本构建任何缺少的第三方要求。
$ thirdparty/build-if-necessary.sh
使用上一步中安装的实用程序构建 Kudu 。为中间输出选择一个构建目录,除了 kudu 目录本身之外,它可以在文件系统中的任何位置。
mkdir -p build/release
cd build/release
../../thirdparty/installed/common/bin/cmake -DCMAKE_BUILD_TYPE=release ../..
make -j4
可选:安装 Kudu 二进制文件,库和标题。如果不通过 DESTDIR 环境变量指定安装目录,则默认为 /usr/local/ 。
sudo make DESTDIR=/opt/kudu install
可选:构建文档。注意:此命令构建不适合上传到 Kudu 网站的本地文档。
$ make docs
示例 2 . Ubuntu 或者 Debian 构建脚本
该脚本概述了在 Ubuntu 上构建 Kudu 的过程,可以作为自动部署场景的基础。它跳过上面标记为可选步骤的步骤。
#!/bin/bash
sudo apt-get -y install autoconf automake curl 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 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
SUSE Linux Enterprise Server
安装必备库(如果没有安装)。
$ sudo zypper install autoconf automake curl cyrus-sasl-devel \
cyrus-sasl-gssapi gcc gcc-c++ gdb git krb5-devel libtool lsb-release make ntp \
openssl-devel patch pkg-config python rsync unzip vim
克隆 Git 存储库并切换到新的 kudu 目录。
$ git clone https://github.com/apache/kudu
$ cd kudu
使用 build-if-necessary.sh 脚本构建任何缺少的第三方要求。
$ thirdparty/build-if-necessary.sh
使用上一步中安装的实用程序构建 Kudu 。为中间输出选择一个构建目录,除了 kudu 目录本身之外,它可以在文件系统中的任何位置。
mkdir -p build/release
cd build/release
../../thirdparty/installed/common/bin/cmake \
-DCMAKE_BUILD_TYPE=release \
../..
make -j4
可选:安装 Kudu 二进制文件,库和标题。如果不通过 DESTDIR 环境变量指定安装目录,则默认为 /usr/local/ 。
sudo make DESTDIR=/opt/kudu install
示例 3 .SLES 构建脚本
此脚本概述了在 SLES 上构建 Kudu 的过程,并可用作自动部署场景的基础。它跳过上面标记为可选步骤的步骤。
#!/bin/bash
sudo zypper install -y autoconf automake curl cyrus-sasl-devel \
cyrus-sasl-gssapi gcc gcc-c++ gdb git 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
macOS
Xcode 包是编译 Kudu 所必需的。下面的一些说明使用 Homebrew 来安装依赖关系,但手动依赖安装是可能的。
注意
macOS 已知问题
Kudu 对 macOS 的支持是实验性的,只能用于开发。有关详细信息,请参阅 macOS 限制和已知问题。
安装必备库(如果没有安装)。
$ brew tap homebrew/dupes
$ brew install autoconf automake cmake git krb5 libtool openssl pkg-config pstree
可选:如果您计划构建文档,请安装其他包,包括 ruby 。
$ brew install doxygen graphviz ruby
$ brew install gnu-sed --with-default-names #The macOS default sed handles the -i parameter differently
克隆 Git 存储库并切换到新的 kudu 目录。
$ git clone https://github.com/apache/kudu
$ cd kudu
使用 build-if-necessary.sh 脚本构建任何缺少的第三方要求。
$ thirdparty/build-if-necessary.sh
如果不同版本的依赖关系在调用 thirdParty / build-if-necessary.sh 时安装并使用,则可能会遇到类似于以下内容的输出:
./configure: line 16299: error near unexpected token `newline'
./configure: line 16299: ` PKG_CHECK_MODULES('
第三方构建可能被缓存,并可能反映不正确版本的依赖关系。确保您具有步骤1中列出的正确依赖项,清理工作区,然后尝试重新构建。
$ git clean -fdx
$ thirdparty/build-if-necessary.sh
自制安装和系统升级的一些组合可能会导致不同种类的错误:
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.
如 本线程 所述,可能的修复是卸载并重新安装 libtool:
$ brew uninstall libtool && brew install libtool
5. 构建 Kudu 。为中间输出选择一个构建目录,除了 kudu 目录本身之外,它可以在文件系统中的任何位置。
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
示例 4. macOS 构建脚本
此脚本概述了在 MacOS 上构建 Kudu 的过程,可用作自动部署场景的基础。它假定安装了 Xcode 和 Homebrew 。
#!/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
安装 C++ 客户端库
如果您需要访问 Kudu 客户端库进行开发,请为您的平台安装 kudu-client 和 kudu-client-devel 软件包。请参阅 使用软件包安装 。
注意
仅针对客户端库和头( kudu_client.so 和 client.h )构建。其他图书馆和标题是 Kudu 的内部,没有稳定的保证。
构建 Java 客户端
要求
- JDK 7
- Apache Maven 3.x
要构建 Java 客户端,请克隆 Kudu Git 存储库,更改为 java 目录,并发出以下命令:
$ 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 服务。
升级程序
停止 Kudu master 和 tablet server 服务:
$ sudo service kudu-master stop
$ sudo service kudu-tserver stop
升级软件包:
- 在 RHEL 或者 CentOS 主机上:
sudo yum clean all
sudo yum upgrade kudu
- 在 SLES 主机上:
sudo zypper clean --all
sudo zypper update kudu
- 在 Ubuntu 或者 Debian 主机上:
sudo apt-get update
sudo apt-get install kudu
启动 Kudu master 和tablet server 服务:
$ sudo service kudu-master start
$ sudo service kudu-tserver start