不生產博客,只是官網的搬運工
https://docs.cloudera.com/documentation/enterprise/5-16-x/topics/kudu_limitations.html
schema設計限制
主鍵:
1.表創建後,主鍵不能更改,必須drop表重新創建指定主鍵
2.創表的時候,主鍵必須在最前邊
3.主鍵不能通過update更新,想要修改主鍵,必須刪除行,然後重新插入,而且這種操作不是原子的
4.不支持自動生成主鍵,有內置函數uuid可以使用
5.聯合主鍵由kudu編碼後,大小不能超過16kb
cells
在編碼和壓縮前,任何字段值不能超過64kb,由kudu編碼後,聯合主鍵不能超過16k,超過將報錯
字段
1.默認情況下,kudu不允許超過300字段,建議較少列,性能最佳
2.不支持char,varchar,date(支持timestamp),複雜數據類型,例如array
3.現有列的類型和是否可爲空不可修改
4.decimal的精度不可修改
5.刪除一列不會立即釋放空間,需要首先壓縮(有關係嗎?)
表
1.副本數必須是奇數,最多爲7
2.副本數不能被修改
3.無法手動執行壓縮,但是刪除表會立即釋放空間(看來刪字段或刪表和壓縮有關)
別的使用限制:
1.不支持二級索引(除了主鍵索引)
2.不支持多行事務(insert into ... select 失敗時,已插入的數據無法回滾刪掉)
3.不支持關係,比如外鍵
4.表名、列名僅支持部分utf8,最大爲256字符
分區限制
1.表必須根據一個主鍵or聯合主鍵被預先切成tablet,不支持自動切。表被創建後不支持修改分區字段,支持添加和刪除range分區(意思分區表,分區字段需提前定義好,kudu不會自動分)
2.已經存在的表不支持自動重新分區,只能創新表,重新指定,然後導數據
3.丟掉副本,比如3個丟一個,必須手動干預才能修復(不是丟了,會在新節點再來份副本以滿足副本數,必須手動rebalnce?)
scale建議和限制
1.建議tablet server最多爲100臺
2.建議master最多3臺
3.建議每個tablet server最大數據爲8T(壓縮後)
4.建議每臺tablet server的tablet數爲1000,最多2000
5.創表時,建議每個tablet server上每個表的talbet數最大爲60,也就是3節點的話,3副本,創表分區最大60,這樣每個單tablet server上該表的tablets也就爲60
6.建議每個tablet最大爲50G,超出後,可能壓縮和啓動有問題
7.建議單tablet的大小小於10G
server管理限制
1.部署至少4G內存,理想最少16G
2.wal日誌只能被存儲在一塊盤上
3.不能正常停用tablet server(cdh不是可以?)
4.tablet srever不能修改ip、port
5.kudu對ntp有嚴格要求,確實,節點剛恢復,ntp手動同步下,得一會才能啓動kudu,要不然起不來
集羣管理限制
1.不支持機架識別(不知道啥玩意兒)
2.不支持多數據中心(不知道啥玩意兒)
3.不支持滾動重啓
4.集羣第一次啓動時,所有master必須啓動
impala集成限制(這個得好好掰扯掰扯)
1.創表,主鍵得在別的字段前邊(這個簡直大坑,sqoop導別的數據庫庫數據到kudu,不能insert into select * from ..,得把所有字段全列出來,因爲有的順序變了)
2.無法更新主鍵的值,這個前面主鍵限制有說
3.不支持varchar和複雜數據類型
4.當使用impala外部表時,kudu表名或者字段名包含大寫或者非ASCII碼必須表起別名
字段重命名
5.用impala更新、插入和刪除不支持事務,如果sql中途失敗,不能通過回滾恢復
6.單個查詢的最大並行度受限與tablet數,爲了更好的性能,對於大表,每個tablet server上最少10個tablet
impala創建kudu表不支持的關鍵詞
partitioned(?partitioned by hash(...)不是嗎)
location
rowformat
安全限制
授權只是能訪問kudu還是不能訪問kudu,不支持細粒度的庫、表、字段
但通過給Impala授權,可以控制,但是如果通過kudu api不受權限控制