背景
Kudu安装起来,看似不难,配置文件也就那么4个,每个配置文件需要配的配置也就两三个,但是很容易出现问题。我的Kudu安装也是历经了各种艰辛,才勉强起来的,中间发生的错误,忘了记录。现把中间需要注意的步骤做个记录备忘。
下载kudu包
https://archive.cloudera.com/kudu/redhat/7/x86_64/kudu/5.12.2/RPMS/x86_64/
Name | Last Modified | Size |
---|---|---|
Parent Directory | ||
kudu-1.4.0+cdh5.12.2+0-1.cdh5.12.2.p0.8.el7.x86_64.rpm | 2017-12-12 13:45 | 59.1 MB |
kudu-client-devel-1.4.0+cdh5.12.2+0-1.cdh5.12.2.p0.8.el7.x86_64.rpm | 2017-12-12 13:45 | 53.2 KB |
kudu-client0-1.4.0+cdh5.12.2+0-1.cdh5.12.2.p0.8.el7.x86_64.rpm | 2017-12-12 13:45 | 3.7 MB |
kudu-debuginfo-1.4.0+cdh5.12.2+0-1.cdh5.12.2.p0.8.el7.x86_64.rpm | 2017-12-12 13:46 | 208.7 MB |
kudu-master-1.4.0+cdh5.12.2+0-1.cdh5.12.2.p0.8.el7.x86_64.rpm | 2017-12-12 13:45 | 5.6 KB |
kudu-tserver-1.4.0+cdh5.12.2+0-1.cdh5.12.2.p0.8.el7.x86_64.rpm | 2017-12-12 13:45 | 5.7 KB |
下载好这6个rpm包
安装kudu
节点 | 角色 |
cdh02 | kudu-master kudu-tserver |
cdh03 | kudu-master kudu-tserver |
cdh04 | kudu-master kudu-tserver |
cdh05 | kudu-tserver |
将下载好的rpm包放到所有节点上的某个目录下,我这里是/opt/sotfwares/kudu
在所有节点上,进入到安装包目录/opt/sotfwares/kudu, 执行 sudo rpm -ivh --nodeps *,等待安装完成
3 配置Kudu
3.1 配置4个配置文件
1 /etc/default/kudu-master
该配置文件说明,当前节点启动kudu-master角色时,它的日志目录,和自己绑定的地址和端口(每个节点都配置)
export FLAGS_log_dir=/var/log/kudu
# 各个节点绑定的是自己的主机名和端口
export FLAGS_rpc_bind_addresses=cdh02:7051
2 /etc/default/kudu-tserver
该配置文件说明,当前节点启动kudu-tserver角色时,它的日志目录,和自己绑定的地址和端口(每个节点都配置)
export FLAGS_log_dir=/var/log/kudu
# 各节点绑定自己的主机名(ip) 和 端口
export FLAGS_rpc_bind_addresses=cdh02:7050
3 /etc/kudu/conf/master.gflagfile
该配置文件说明,当前节点所属集群的master节点信息,以及master wal日志目录,和data目录,同一个集群内各节点的该配置相同
--fromenv=rpc_bind_addresses
--fromenv=log_dir
# 重点关注下面3各配置
# 该kudu集群所有的master节点主机名列表,同一个集群内各节点该配置相同
--master_addresses=cdh02,cdh03,cdh04
--fs_wal_dir=/var/lib/kudu/master/wal
--fs_data_dirs=/var/lib/kudu/master/data
4 /etc/kudu/conf/tserver.gflagfile
该配置文件说明,当前节点启动kudu-tserver角色时,需要rpc通信的master列表地址,以及tserver wal日志目录,和data目录,
同一个集群内各节点的该配置相同
--fromenv=rpc_bind_addresses
--fromenv=log_dir
# 重点关注下面3个配置
--fs_wal_dir=/var/lib/kudu/tserver/wal
--fs_data_dirs=/var/lib/kudu/tserver/data
# 集群tserver角色与集群master通信的地址,同一集群各节点该配置相同
--tserver_master_addrs=cdh02:7051,cdh03:7051,cdh04:7051
说明:1,2配置文件集群内各节点不一样,3,4配置文件,集群内各节点一致
3.2 创建wal,data目录
上面的配置文件中,涉及到4个目录,master,tserver的wal和data目录
mkdir -p /var/lib/kudu/master/wal
mkdir -p /var/lib/kudu/master/data
mkdir -p /var/lib/kudu/tserver/wal
mkdir -p /var/lib/kudu/tserver/data
3.3 配置kudu用户
由于上面是在root用户权限下操作的,而kudu运行时以kudu用户权限运行的,因此需要为kudu用户配置文件目录权限,和bash权限
1 各节点执行 chown -R kudu:kudu /var/lib/kudu
2 配置kudu bash权限
vim /etc/passwd
将
kudu:x:984:982:Kudu:/var/lib/kudu:/sbin/nologin
改为
kudu:x:984:982:Kudu:/var/lib/kudu:/bin/bash
3.4 启动kudu
cdh02,cdh03,cdh04 这3个节点执行service kudu-master start
cdh02,cdh03,cdh04,cdh05 这4个节点执行service kudu-tserver start
3.5 访问kudu Web UI
访问 http://cdh04:8051/ 验证kudu是否安装成功
查看master节点
查看tservers
这说明,kudu安装成功了!
4 安装过程中的坑
安装并非一帆风顺,期间遇到一些坑,还记得其中2个,记录一下
4.1 /lib/lsb/init-functions no such file or directory
在kudu启动服务时,出现的这个错,这主要是机器缺少redhat-lsb模块
所有kudu节点执行yum install redhat-lsb
4.2 unable to find SASL plugin: PLAIN
在启动kudu-master后,当时看着时启动成功的,一会kudu-master服务就不见了。查看kudu-master日志
from cdh02:7051 timed out after 30000 ms.: Invalid argument: Client connection negotiation failed: client connection to 192.168.60.112:7051: unable to find SASL plugin: PLAIN
F0626 10:52:20.479631 20799 master_main.cc:71] Check failed: _s.ok() Bad status: Timed out: Unable to initialize catalog manager: Failed to initialize sys tables async: Failed to create new distributed Raft config: Unable to resolve UUID for peer member_type: VOTER last_known_addr { host: "cdh02" port: 7051 }: Getting permanent uuid from cdh02:7051 timed out after 30000 ms.: Invalid argument: Client connection negotiation failed: client connection to 192.168.60.112:7051: unable to find SASL plugin: PLAIN
还是缺少插件模块导致的,执行如下2条命令
yum install gcc python-devel
yum install cyrus-sasl*
安装完这些模块后,需要将所有节点的kudu-master和tserver的wal和data目录清空,
rm -rf /var/lib/kudu/master/wal/*
rm -rf /var/lib/kudu/master/data/*
rm -rf /var/lib/kudu/tserver/wal/*
rm -rf /var/lib/kudu/tserver/data/*
然后执行启动服务命令。这样kudu才能正常启动