目录
安装kudu
本想使用官方文档上的方法编译kudu源码进行安装的,可是官网的方式需要解决一大堆依赖关系,搞了好久没装上,这个链接是我记录了按照官网方式编译时遇到的一些问题:https://blog.csdn.net/x950913/article/details/107394704
不过后面还提示gcc版本太低,所以就没有继续琢磨了,转而使用rpm包安装的方式。
下载rpm包后直接用rpm命令安装会因为缺失依赖而报错,而由于网络原因,也不能直接使用yum安装kudu,我直接使用yum install kudu时,都下不下来kudu的安装包。最后通过代理到cdh官网上下载了rpm包后,再使用yum进行安装。
以下介绍我的安装步骤。
下载kudu rpm包
kudu的rpm包可以在cdh官网上下载,附上1.9版本的下载地址:https://archive.cloudera.com/cdh6/6.2.1/redhat7/yum/RPMS/x86_64/
如果需要其他版本的,则在该网站中选择其他版本进行下载。
如果链接较慢或打不开网站,可以从我上传的资源中下载,有1.4和1.9两个版本。
1.4:https://download.csdn.net/download/x950913/12651715
1.9:https://download.csdn.net/download/x950913/12651728
下载以下六个包:
kudu-1.9.0+cdh6.2.1-1425774.el6.x86_64.rpm
kudu-client-devel-1.9.0+cdh6.2.1-1425774.el6.x86_64.rpm
kudu-client0-1.9.0+cdh6.2.1-1425774.el6.x86_64.rpm
kudu-debuginfo-1.9.0+cdh6.2.1-1425774.el6.x86_64.rpm
kudu-master-1.9.0+cdh6.2.1-1425774.el6.x86_64.rpm
kudu-tserver-1.9.0+cdh6.2.1-1425774.el6.x86_64.rpm
使用yum安装
下载后将rpm包上传至centos,推荐使用centos7,如果是centos6的话,需要升级gcc。
mkdir /tmp/yum
上传rpm包到/tmp/yum
[root@localhost yum]# ll
总用量 278116
-rw-r--r--. 1 root root 61941720 7月 22 22:09 kudu-1.4.0+cdh5.12.2+0-1.cdh5.12.2.p0.8.el7.x86_64.rpm
-rw-r--r--. 1 root root 3901860 7月 22 22:09 kudu-client0-1.4.0+cdh5.12.2+0-1.cdh5.12.2.p0.8.el7.x86_64.rpm
-rw-r--r--. 1 root root 54456 7月 22 22:09 kudu-client-devel-1.4.0+cdh5.12.2+0-1.cdh5.12.2.p0.8.el7.x86_64.rpm
-rw-r--r--. 1 root root 218868836 7月 22 22:09 kudu-debuginfo-1.4.0+cdh5.12.2+0-1.cdh5.12.2.p0.8.el7.x86_64.rpm
-rw-r--r--. 1 root root 5784 7月 22 22:09 kudu-master-1.4.0+cdh5.12.2+0-1.cdh5.12.2.p0.8.el7.x86_64.rpm
-rw-r--r--. 1 root root 5812 7月 22 22:09 kudu-tserver-1.4.0+cdh5.12.2+0-1.cdh5.12.2.p0.8.el7.x86_64.rpm
进入/tmp/yum,安装所有包,使用yum localinstall会自动安装所有依赖:
cd /tmp/yum
yum localinstall *.rpm
以上kudu就算安装完成了,接下来进行集群配置。
配置集群
kudu可单独部署,也可集群部署,机器数量官方建议是奇数个,如果集群数量为三台,可容忍一台故障;如果是四台,则也只允许一台故障。
我使用了三台机器搭建集群,每台都部署了master和tserver服务,实际生产环境中可适当调整,节点主机名:kudu1、kudu2、kudu3。
修改配置文件
/etc/default/kudu-master
该配置文件配置master节点保存日志的目录,以及自身提供master服务所使用的端口。
vim /etc/default/kudu-master
kudu1
export FLAGS_log_dir=/var/log/kudu
export FLAGS_rpc_bind_addresses=kudu1:7051
kudu2
export FLAGS_log_dir=/var/log/kudu
export FLAGS_rpc_bind_addresses=kudu2:7051
kudu3
export FLAGS_log_dir=/var/log/kudu
export FLAGS_rpc_bind_addresses=kudu3:7051
/etc/default/kudu-tserver
该配置文件配置tserver节点保存日志的目录,以及自身提供tserver服务所使用的端口。
vim /etc/default/kudu-tserver
内容与/etc/default/kudu-master一致。
export FLAGS_log_dir=/var/log/kudu
export FLAGS_rpc_bind_addresses=kudu1:7050
/etc/kudu/conf/master.gflagfile
该配置文件配置当前节点所属集群的master节点信息,以及预写入日志目录,和data存放目录,各节点的配置应该保持一致。
# Do not modify these two lines. If you wish to change these variables,
# modify them in /etc/default/kudu-master.
--fromenv=rpc_bind_addresses
--fromenv=log_dir
#部署master服务的所有结点
--master_addresses=kudu1:7051,kudu2:7051,kudu3:7051
#预写入日志存放目录
--fs_wal_dir=/var/lib/kudu/master/wal
#数据存放目录
--fs_data_dirs=/var/lib/kudu/master/data
#副本数 默认为3
--default_num_replicas=2
/etc/kudu/conf/tserver.gflagfile
# Do not modify these two lines. If you wish to change these variables,
# modify them in /etc/default/kudu-tserver.
--fromenv=rpc_bind_addresses
--fromenv=log_dir
#预写入日志存放路径
--fs_wal_dir=/var/lib/kudu/tserver/wal
#数据存放路径
--fs_data_dirs=/var/lib/kudu/tserver/data
#部署tserver服务的所有结点
--tserver_master_addrs=kudu1:7051,kudu2:7051,kudu3:7051
并创建配置文件中配置的目录(每台机器)
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
创建kudu用户
kudu运行时以kudu用户权限运行的,因此需要为kudu用户配置文件目录(使kudu可以读写以上创建的目录)权限,和bash权限。
以下操作每台机器都要做。
将目录所有者修改为kudu:
chown -R kudu:kudu /var/lib/kudu
配置kudu bash权限(如果kudu的bash已经是/bin/bash则不用修改)
vim /etc/passwd
#将kudu:x:996:995:Kudu:/var/lib/kudu:/bin/bash修改为
kudu:x:996:995:Kudu:/var/lib/kudu:/bin/bash
配置ntp服务
kudu对ntp有依赖,如果不配置,则无法启动kudu服务。如果机器已经配置了,则可以略过。
yum install -y ntp ntpdate
选择一台机器作为ntp服务节点,主节点从阿里服务器同步时间,其他节点从这个节点同步时间。以kudu1节点为例。
vim /etc/ntp.conf
#将server部分修改为以下内容
server ntp1.aliyun.com
server ntp2.aliyun.com
server ntp3.aliyun.com
server ntp4.aliyun.com
server ntp5.aliyun.com
server ntp6.aliyun.com
server ntp7.aliyun.com
server 127.127.1.0
Fudge 127.127.1.0 stratum 10
修改主节点以外的所有节点,使之从主节点同步时间。
vim /etc/ntp.conf
#在server部分添加如下语句,将server指向主节点。
server 192.168.68.121
Fudge 192.168.68.121 stratum 10
修改所有节点
vim /etc/ntp.conf
#将ip修改为本机,每台都不一样
restrict 192.168.68.121 nomodify notrap nopeer noquery
#网关和子网掩码
restrict 192.168.68.1 mask 255.255.255.0 nomodify notrap
启动ntpd服务
#启动服务
systemctl start ntpd
#设置开机自启
chkconfig ntpd on
启动kudu
systemctl start kudu-master
systemctl start kudu-tserver
关闭防火墙
systemctl stop firewalld
检查是否安装成功
访问master节点的8051端口:
常见问题
8051端口无法访问,查看日志:
vim /var/log/kudu/kudu-master.ERROR
发现报错:
Log file created at: 2020/07/25 19:31:13
Running on machine: kudu1
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
E0725 19:31:13.913631 15347 master.cc:183] [email protected]:7051: Unable to init master catalog manager: Not found: Unable to initialize catalog manager: Failed to initialize sys tables async: Unable to load consensus metadata for tablet 00000000000000000000000000000000: /var/lib/kudu/master/data/consensus-meta/00000000000000000000000000000000: No such file or directory (error 2)
F0725 19:31:13.913826 15286 master_main.cc:71] Check failed: _s.ok() Bad status: Not found: Unable to initialize catalog manager: Failed to initialize sys tables async: Unable to load consensus metadata for tablet 00000000000000000000000000000000: /var/lib/kudu/master/data/consensus-meta/00000000000000000000000000000000: No such file or directory (error 2)
原因是上次启动失败导致已经再存储目录中创建了文件,删除这些文件,并重启master服务解决:
#删除文件
[root@kudu2 ~]# rm -rf /var/lib/kudu/master/wal/*
[root@kudu2 ~]# rm -rf /var/lib/kudu/master/data/*
[root@kudu2 ~]# rm -rf /var/lib/kudu/tserver/wal/*
[root@kudu2 ~]# rm -rf /var/lib/kudu/tserver/data/*
#重启服务
[root@kudu2 ~]# systemctl restart kudu-master