kudu 的基本技術限制 本文來自網路. 非原創

babyyellow發表於2020-04-28

設計的限制

在建立表後,主鍵不能更改。您必須刪除並重新建立一個表來選擇一個新列作為主鍵。

組成主鍵的列必須首先在模式設計時最先列出來。

不能使用更新功能修改行的主鍵。要修改行的主鍵,必須刪除行,並使用修改後的鍵重新插入,這樣的修改是非原子性的。

帶有DOUBLE、FLOAT或BOOL型別的列不允許作為主鍵定義的一部分,此外主鍵定義的所有列都必須是不可為空的。

不支援自動生成主鍵。

組成複合主鍵的單元格總大小被限制為不能超過16KB,這個大小是由Kudu完成內部組合鍵編碼後的大小。

單個單元格不能大於64KB,而且這個大小是在編碼或壓縮之前的大小。,組成組合鍵的單元格被限制為不能超過16KB,這個大小是在Kudu完成內部組合鍵編碼之後的大小。插入不符合這些限制的資料行將導致系統產生錯誤,並返回給客戶端。

預設情況下,Kudu不允許建立超過300列的表。推薦使用更少的列來獲得最佳效能的模式設計。

DECIMAL、CHAR、VARCHAR、DATE和複雜型別(如陣列)是不支援的。

更改表不能更改現有列的型別和是否可為空。

刪除列不會立即回收空間,必須要採用壓縮,才能回收空間 。

Kudu主要用於資料分析。儘管單個單元格大小可以多達64KB,而Kudu支援多達300個列,但建議單行不要大於幾百KB。如果單行大小達到數千位元組資料,可能會遇到問題。

表資料必須有奇數個副本,最大值為7。

複製因子(在表建立時進行設定)不能更改。

沒有辦法手動執行壓縮,但刪除一個表會立即回收這個表的空間。

不支援次要索引。

不支援多行事務。

不支援關係特性,比如外來鍵。

像列和表名這樣的識別符號被限制為有效的UTF-8字串,最大長度為256個字元。

如果使用ApacheImpala來查詢Kudu表,需要檢視Impala整合kudu的限制資料。

必須使用簡單或複合的主鍵將表手工預分割槽為平板。自動拆分目前是不支援的。Kudu不允許在建立分割槽後再更改分割槽,除了新增或刪除範圍分割槽之外。

現有表中的資料目前不能自動重新分割槽。需要建立新的分割槽,再建立一個新的表,並插入舊錶的內容。

失去大多數副本的平板(比如3個,丟了2個還只有1個)需要人工干預才能修復。

建議最大數量的平板伺服器是100臺。

建議最大數量的主節點服務呂是3臺。

每臺平板伺服器推薦的儲存資料(複製副本後和壓縮後)的最大數量為8TB。

建議每臺平板伺服器的最大平板數量為2000(複製副本後)。

每臺平板伺服器的每個資料表的平板最大數量為60個(複製副本後,在建立表時)。

務器管理的限制

生產部署應該為平板伺服器配置至少4GB的記憶體,最好在接近資料和平板規模限制時將記憶體擴充至16GB。

寫入的前置日誌(WALs)只能儲存在某一個磁碟上。

磁碟故障是不可容忍的,一旦檢測到平板伺服器就會崩潰。

未恢復資料的失敗磁碟需要在重新啟動之前對該平板伺服器的所有Kudu資料進行格式化。

無法新增/刪除資料目錄,必須對它們進行重新格式化來更改目錄集。

平板伺服器不能做到優雅地退出群集。

平板伺服器不能改變他們的地址或埠。

Kudu對擁有一個最新的NTP(網路時間協議Network Time     Protocol)有著嚴格的要求。Kudu的主節點伺服器和平板伺服器會在不同步的情況下崩潰。

Kudu釋出版本只測試了NTP。其他時間同步提供者(如Chrony)可能不起作用。

的限制

不支援機架感知(在排程任務和分配儲存空間時考慮節點的物理位置)。

不支援多資料中心。

不支援滾動重啟。

備份的限制

kudu目前不包括任何內建的備份和恢復功能。鼓勵使用者使用Spark或Impala等工具匯出或匯入表

整合的限制

在建立Kudu表時,CREATE table語句必須將主鍵列放在其他列之前。

Impala不能更新主鍵列中的值。

Impala不能用DECIMAL、VARCHAR或近似這些型別的列建立Kudu表。

在Impala中用作外部表時,帶有大寫或非ascii字元名稱的Kudu表必須進行重新命名,不能包含大寫或非ascii字元。

Kudu表的列名包含大寫或非ascii字元,不能用作Impala的外部表。可以將列重新命名,以解決這個問題。

!=和LIKE謂詞不被推送到Kudu,而是由Impala掃描節點進行評估。這可能會降低相對於其他型別謂詞的效能。

使用Impala的更新、插入和刪除是非事務性的。如果一個查詢某些部分失敗了,其部分效果將不會回滾。

單個查詢的最大並行度受限於表中的平板數量。為了良好的分析效能,針對大型表的每個主機,建議存放 10個或更多的平板。

表時不支援的impala關鍵詞

PARTITIONED

LOCATION

ROWFORMAT

整合的限制

Spark 2.2(和更高版本)在執行時需要Java 8,儘管Kudu Spark 2.x整合是與Java7相容的。Spark 2.2是Kudu 1.5.0的預設依賴版本。

在註冊為臨時表時,如果kudu表名帶有大寫或非ascii字元,需要修改kudu表名。

Kudu表的列名如果包含大寫或非ascii字元,不能與SparkSQL一起使用。可以重新命名列名,以解決這個問題。

<>和or謂詞沒有被推送到Kudu,而是由Spark任務來評估。只有帶有字尾萬用字元的LIKE謂詞被推到Kudu。這意味著“FOO%”會被推送到kudu,但是像“FOO%BAR”不會。

Kudu不能支援Spark SQL所能支援的所有型別。例如,Kudu不支援Date, Decimal和複雜型別。

Kudu表只能在SparkSQL中註冊為臨時表。

不能使用HiveContext查詢Kudu表。

空閒時的資料加密功能沒有直接構建到Kudu中。透過使用dmcrypt等本地塊裝置加密軟體,可以在空閒時加密Kudu資料。

授權僅在系統範圍的粗粒度級別上可用。表級、列級和行級授權特性不可用。

Kudu不支援為Kudu流程配置自定義服務主體。主體必須遵循模式kudu/@。

Kudu與Apache Flume的整合,將不支援寫入需要身份驗證的Kudu叢集。

由Kudu IPKI生成的伺服器證照與bouncycastle版本1.52和更早版本是不相容的。



作者:devilteam2006
連結:
來源:簡書


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-2688854/,如需轉載,請註明出處,否則將追究法律責任。

相關文章