文章目錄
Kudu的優化
一、Kudu關鍵配置
二、Kudu的使用限制
1、主鍵
2、Cells
3、字段
4、表
5、其他限制
6、分區限制
7、擴充建議和限制
8、守護程序
9、叢集管理限制
10、複制和備份限制
11、Impala內建限制
12、Spark內建限制
Kudu的優化
一、Kudu關鍵配置
TabletServer 在開始拒絕所有傳入的寫入之前可以消耗的最大記憶體量:memory_limit_h
ard_bytes=1073741824
配置設定給 Kudu Tablet Server 塊緩存的最大記憶體量:block_cache_capacity_mb=512
二、Kudu的使用限制
1、主鍵
- 建立表後,不能更改主鍵。必須删除并重新建立表以選擇新的主鍵。
- 建立表的時候,主鍵必須放在最前邊。
- 主鍵不能通過 update 更新,如果要修改主鍵就必須先删除行,然後重新插入。這種操作不是原子性的。(kudu的删除和插入操作無法事務)
- 不支援自動生成主鍵,可以通過内置的 uuid 函數表示為主鍵值。
- 聯合主鍵由 kudu 編碼後,大小不能超過 16KB。
2、Cells
3、字段
- 預設情況下,Kudu 不允許建立超過 300 列的表。官方建議使用較少列的 Schema 設計以獲得最佳性能。
- 不支援 CHAR、VARCHAR、DATE 和數組等複雜類型。
- 現有列的類型和是否允許為空,一旦設定後,是不可修改的。
- Decimal 類型的精度不可修改。也不允許通過更改表來更改 Decimal 列的精度和小數位數
- 删除列不會立即回收空間。首先必須運作壓縮。
4、表
- 表中的副本數必須為奇數,最多為 7
- 複制因子(在表建立時設定)不能更改
- 無法手動運作壓縮,但是删除表将立即回收空間
5、其他限制
- 不支援二級索引。
- 不支援多行事務。
- 不支援外鍵。
- 列名和表名之類的辨別符僅限于有效的 UTF-8 字元串并且其最大長度為 256 個字元。
6、分區限制
- 表必須根據一個主鍵 or 聯合主鍵被預先切成 tablet,不支援自動切。表被建立後不支援修改分區字段,支援添加和删除 range 分區(意思分區表,分區字段需提前定義好,kudu 不會自動分)。
- 已經存在的表不支援自動重新分區,隻能建立新表時指定。
- 丢失副本時,必須通過手動修複方式來恢複。
7、擴充建議和限制
- 建議 TabletServer 最多為 100 台。
- 建議 Master 最多 3 台。
- 建議每個 TabletServer 最大資料為 8T(壓縮後)。
- 建議每台 TabletServer 的 tablet 數為 1000,最多 2000。
- 建立表的時候,建議在每個 Tablet Server 上,每個表的 Tablet 數最大為 60,也就是 3 節點的話,3 副本,創表分區最大 60,這樣每個單 TabletServer 上該表的 Tablets 也就為 60。
- 建議每個 Tablet 最大為 50GB,超出後可能導緻壓縮和啟動有問題。
- 建議單 Tablet 的大小<10GB。
8、守護程序
- 部署至少 4G 記憶體,理想情況下應超過 16GB。
- 預寫日志(WAL)隻能存儲在一個磁盤上。
- 不能直接删除資料目錄,必須使用重新格式化資料目錄的方式來達到删除目的。
- TabletServer 不能修改 IP 和 PORT。
- Kudu 對 NTP 有嚴格要求,如果時間不同步時,Kudu 的 Master 和 TabletServer 會崩潰。
- Kudu 僅使用 NTP 進行了測試,不支援其他時間同步工具。
9、叢集管理限制
- 不支援滾動重新開機。
- 建議 Kudu 叢集中的最大點對點延遲為 20 毫秒。推薦的最小點對點帶寬是 10GB。
- 如果要使用位置感覺功能将平闆伺服器放置在不同的位置,官方建議先測量伺服器之間的帶寬和延遲,以確定它們符合上述指導原則。
- 首次啟動群集時,必須同時啟動所有 Master 服務。
10、複制和備份限制
- Kudu 目前不支援任何用于備份和還原的内置功能。鼓勵使用者根據需要使用 Spark 或 Impala之類的工具導出或導入表。
11、Impala內建限制
- 建立 Kudu 表時,建表語句中的主鍵字段必須在最前面。
- Impala 無法更新主鍵列中的值。
- Impala 無法使用以下指令建立 Kudu 表 VARCHAR 或嵌套類型的列。
- 名稱包含大寫字母或非 ASCII 字元的 Kudu 表在 Impala 中用作外部表時,必須配置設定一個備用名稱。
- 列名包含大寫字母或非 ASCII 字元的 Kudu 表不能用作 Impala 中的外部表。可以在 Kudu 中重命名列以解決此問題。
- !=和 like 謂詞不會下推到 Kudu,而是由 Impala 掃描節點評估。相對于其他類型的謂語,這會導緻降低性能。
- 使用 Impala 進行更新,插入和删除是非事務性的。如果查詢在部分途中失敗,則其部分效果不會復原。
- 單個查詢的最大并行度受限于 Table 中 Tablet 的數量。為了獲得良好的分析性能,每位主機目标為 10 片或更多 tablets。
- Impala 的關鍵字(PARTITIONED、LOCATION、ROWFORMAT)不适用于在建立 Kudu 表時使用。
12、Spark內建限制
- 必須使用 JDK8,自 Kudu-1.5.0 起,Spark 2.2 是預設的依賴項版本。
- Kudu 表隻能在 Spark SQL 中注冊為臨時表。
- 無法使用 HiveContext 查詢 Kudu 表。
- 📢部落格首頁
- 📢歡迎點贊 👍 收藏 ⭐留言 📝 如有錯誤敬請指正!
- 📢本文由 Lansonli 原創
- 📢停下休息的時候不要忘了别人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活✨