天天看點

别人踩過的苦的坑和解

1、當一個tablet server被關閉超過一定的時間(預設5分鐘),位于tablet server上的tablet會被移動到其它的tablet server

2、DataNode換個記憶體重新開機後,kudu的Tablet Server報錯無法正常啟動解決  

---------->Tablet server  修改配置  --max_clock_sync_error_usec=20000000 

3、某台tablet server 在停機一斷時間後,再次啟動,某些tablet server出現異常退出,檢視日志報錯:

打開資料檔案 報”Too many open files ” 錯誤。

---------------->在CDH上修改 kudu檔案句柄配置(采用了該方法)。

直接在cdh上修改kudu的配置,将“最大程序檔案描述符”設定為: 257447 這樣kudu最大能同時打開25萬個檔案。

4、當kudu有tserver下線或者遷移之後,舊的tserver會一直以dead狀态出現,并且tserver日志中會有大量的連接配接重試日志,一天的錯誤日志會有幾個G,

------------->首先保證叢集是健康的(通過ksck指令)\将dead狀态的server上的副本進行遷移,如果有replication factor設定為1的資料,必須在下線前手工移動資料;\隻要tserver處于下線狀态超過5分鐘以上會自動進行副本遷移;\當所有副本都遷移完之後,ksck依然會顯示有tserver不可用,如果想完全去掉這些dead狀态的server,需要重新開機master;\最後,重新開機master之後在保證叢集健康的前提下逐一重新開機tserver

5、時鐘服務NTP配置不合理,會導緻Kudu服務直接崩潰,建議根據官方的推薦來配置NTP,另外可以通過修改參數max_clock_sync_error_usec值,來提高Kudu對時間偏差的容忍程度

6、沒有rebalance功能,需要手動做balance

7、在Impala中對Kudu表進行alter table A rename to B,隻會更改impala的中繼資料,而不會更改任何Kudu的中繼資料,可以通過先修改Impala中繼資料alter table A rename to B 後,再修改Kudu中繼資料alter table A set TBLPROPERTIES(’kudu.table_name’=’B’)

8、dea通過spark代碼往kudu裡面建表以及插入結果資料,報了這個錯誤:

java.lang.IllegalArgumentException: cannot import authentication data from a different user: old='', new='XXX'

---------->

首先在/etc/init.d關閉Kudu:

[hadoop@hadoop000 init.d]$ sudo ./kudu-master stop

Stopped Kudu Master Server: [ OK ]

[hadoop@hadoop000 init.d]$ sudo ./kudu-tserver stop

Stopped Kudu Tablet Server: [ OK ]

然後進入Kudu設定檔案,預設在/etc/kudu/conf下,修改master.gflagfile:

[hadoop@hadoop000 conf]$ sudo vi master.gflagfile

在裡面加上

--trusted_subnets=0.0.0.0/0

--rpc_encryption=disabled

--rpc_authentication=disabled

意思是信任所有遠端連接配接、 禁用RPC授權、禁用RPC加密,不查就不會出錯

最後去/etc/init.d裡重新開機下Kudu就行了:​<code>​[hadoop@hadoop000 init.d]$ sudo ./kudu-master start​</code>​

     kudu現在有一些限制,可能會影響到你對Schema的設計

列的數量:表的列不要超過300,建議使用少一點的列以擷取更好的性能

單元的大小:在編碼或壓縮之前,單個單元不得大于64KB。 在Kudu完成内部複合密鑰編碼之後,構成複合密鑰的單元限制為總共16KB。 插入不符合這些限制的行将導緻錯誤傳回給用戶端。

行的大小:雖然單個單元可能高達64KB,而Kudu最多支援300列,但建議單行不要大于幾百KB。

有效的辨別符:表名和列名等辨別符必須是有效的UTF-8序列且不超過256個位元組。

不可變的主鍵(Immutable Primary Keys):kudu不允許更新一行的主鍵列

不可更改的主鍵(Non-alterable Primary Key):Kudu不允許在建立表後更改主鍵列。

不可更改的分區(Non-alterable Partitioning):Kudu不允許在建立表後更改表的分區方式,删除和增加範圍分區除外

不可更改的列類型(Non-alterable Column Types):Kudu不允許修改列的類型

分區拆分(Partition Splitting):在表建立之後不能拆分、合并分區

如果查詢的WHERE子句包括與查詢字段進行=,&lt;=,&lt;,&gt;,&gt; =,BETWEEN或IN的比較,則Kudu直接評估條件并僅傳回相關結果。這提供了最佳性能,因為Kudu僅将相關結果傳回給Impala。對于諸如!=,LIKE或Impala支援的任何其他謂詞類型的謂詞,Kudu不會直接評估謂詞。 相反,它将所有結果傳回給Impala,并依賴Impala來評估剩餘的謂詞并相應地過濾結果。 這可能會導緻性能差異,具體取決于評估WHERE子句之前和之後結果集的增量。 在某些情況下,建立和定期更新實體化視圖可能是解決這些低效問題的正确解決方案。

1.官網使用的叢集3台t_master 100台t_server,建議每台t_server機器設定最多1000個tablet

2.kudu檔案句柄要設定根據自己業務量評估

3.kudu_tablet分區不能大于1500,大于1500後進行平衡或者擴容

4.kudu表的接入需要規範化

5.無效的kudu表進行下線

6.tablet server關閉時,tablet的移動(不能同時遷移2台)

繼續閱讀