天天看點

kudu:安裝kudu

目錄

安裝kudu

下載下傳kudu rpm包

使用yum安裝

配置叢集

修改配置檔案

配置ntp服務

啟動kudu

檢查是否安裝成功

常見問題

安裝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

[[email protected] 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端口:

kudu:安裝kudu

常見問題

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服務解決:

#删除檔案
[[email protected] ~]# rm -rf /var/lib/kudu/master/wal/*
[[email protected] ~]# rm -rf /var/lib/kudu/master/data/*
[[email protected] ~]# rm -rf /var/lib/kudu/tserver/wal/*
[[email protected] ~]# rm -rf /var/lib/kudu/tserver/data/*

#重新開機服務
[[email protected] ~]# systemctl restart kudu-master