(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