(1)下载Kudu相关安装包
Kudu版本是1.7.0-cdh5.15.1,使用rpm包安装,网址如下:
http://archive.cloudera.com/cdh5/redhat/7/x86_64/cdh/5.15.1/RPMS/x86_64/
打开后直接Ctrl + F 搜索Kudu,出现的rpm安装包总共6个,全部下载
kudu-1.7.0+cdh5.15.1+0-1.cdh5.15.1.p0.4.el7.x86_64.rpm
kudu-client-devel-1.7.0+cdh5.15.1+0-1.cdh5.15.1.p0.4.el7.x86_64.rpm
kudu-client0-1.7.0+cdh5.15.1+0-1.cdh5.15.1.p0.4.el7.x86_64.rpm
kudu-debuginfo-1.7.0+cdh5.15.1+0-1.cdh5.15.1.p0.4.el7.x86_64.rpm
kudu-master-1.7.0+cdh5.15.1+0-1.cdh5.15.1.p0.4.el7.x86_64.rpm
kudu-tserver-1.7.0+cdh5.15.1+0-1.cdh5.15.1.p0.4.el7.x86_64.rpm
(2)进入到安装包所在目录,执行以下命令
sudo rpm -ivh --nodeps *
(3)创建master元数据目录和table数据目录以及log日志目录
sudo mkdir -p /data/kudu/kudu_master_data
sudo mkdir -p /data/kudu/kudu_tserver_data
sudo mkdir -p /data/log/kudu
进入/data目录,将下面所有目录和文件的用户和组修改为kudu(Kudu默认用户,不修改可能会出现权限问题)
sudo chown -R kudu:kudu *
(4)修改Kudu配置文件
/etc/kudu/conf/master.gflagfile
--fs_wal_dir=/data/kudu/kudu_master_data
--fs_data_dirs=/data/kudu/kudu_master_data
/etc/kudu/conf/tserver.gflagfile
--fs_wal_dir=/data/kudu/kudu_tserver_data
--fs_data_dirs=/data/kudu/kudu_tserver_data
--tserver_master_addrs=hadoop000:7051
(5)启动Kudu
分别启动master和tserver
sudo /etc/init.d/kudu-master start
sudo /etc/init.d/kudu-tserver start
启动报错:
Failed to start Kudu Master Server. Return value: 1 [FAILED]
查看Master日志
tail -200f var/log/kudu-master.out
发现如下错误:
Check failed: _s.ok() Bad status: Service unavailable: Cannot initialize clock: Error reading clock. Clock considered unsynchronized
原因:
Kudu 默认的一致性模型是 Snapshot Consistency,即客户端可以一致的访问到某个时间点的一个快照。为了实现更高要求的外部一致性(External Consistency),Kudu借鉴 Spanner 使用 commit-wait 机制,但是 commit-wait 强依赖于 TrueTime,而 TrueTime 需要各种昂贵的硬件设备支持,目前 Kudu通过纯软件算法的方式来实现时钟算法,因此它要求Master和Tablet Server之间必须保证时钟同步,否则无法启动。
解决方法:
如果没有安装ntp,先安装它
sudo yum -y install ntp
然后启动ntp服务
sudo service ntpd start
设置ntp开机自启
sudo chkconfig ntpd on
可以使用ntpd命令查看ntp是否同步,如果显示unsynchronised,则需要等待。因为ntpd服务开启之后需要等待一段时间才能完成同步,可能三五分钟,也可能一个小时才行,可以通过ntptime命令查看是否同步成功,等待ntp同步之后然后再重新启动master和tserver。具体细节可以查看官网文档中关于ntp的描述:
https://kudu.apache.org/docs/troubleshooting.html#ntp
重启虚拟机之后发现时钟又不同步,导致Kudu又无法启动,不堪其扰,于是修改ntp配置文件,一劳永逸:
sudo vim /etc/ntp.conf
加入以下内容:
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst
# 上面的server配置全部注释,加入以下两条
server 127.127.1.0 # 同步本地时间
fudge 127.127.1.0 stratum 8 # 本地服务器的stratum(层次)大小不能超过16
(6)验证Kudu是否启动成功
ps -ef | grep kudu
也可以通过WebUI查看,默认端口是8050:
hadoop000:8050