目錄
創(chuàng)建kudu表時(shí)不支持的impala關(guān)鍵詞... 5
模式設(shè)計(jì)的限制
主鍵
在創(chuàng)建表后,主鍵不能更改。您必須刪除并重新創(chuàng)建一個(gè)表來(lái)選擇一個(gè)新列作為主鍵。
組成主鍵的列必須首先在模式設(shè)計(jì)時(shí)最先列出來(lái)。
不能使用更新功能修改行的主鍵。要修改行的主鍵,必須刪除行,并使用修改后的鍵重新插入,這樣的修改是非原子性的。
帶有DOUBLE、FLOAT或BOOL類型的列不允許作為主鍵定義的一部分,此外主鍵定義的所有列都必須是不可為空的。
不支持自動(dòng)生成主鍵。
組成復(fù)合主鍵的單元格總大小被限制為不能超過(guò)16KB,這個(gè)大小是由Kudu完成內(nèi)部組合鍵編碼后的大小。
單個(gè)單元格不能大于64KB,而且這個(gè)大小是在編碼或壓縮之前的大小。,組成組合鍵的單元格被限制為不能超過(guò)16KB,這個(gè)大小是在Kudu完成內(nèi)部組合鍵編碼之后的大小。插入不符合這些限制的數(shù)據(jù)行將導(dǎo)致系統(tǒng)產(chǎn)生錯(cuò)誤,并返回給客戶端。
默認(rèn)情況下,Kudu不允許創(chuàng)建超過(guò)300列的表。推薦使用更少的列來(lái)獲得最佳性能的模式設(shè)計(jì)。
DECIMAL、CHAR、VARCHAR、DATE和復(fù)雜類型(如數(shù)組)是不支持的。
更改表不能更改現(xiàn)有列的類型和是否可為空。
刪除列不會(huì)立即回收空間,必須要采用壓縮,才能回收空間 。
Kudu主要用于數(shù)據(jù)分析。盡管單個(gè)單元格大小可以多達(dá)64KB,而Kudu支持多達(dá)300個(gè)列,但建議單行不要大于幾百KB。如果單行大小達(dá)到數(shù)千字節(jié)數(shù)據(jù),可能會(huì)遇到問(wèn)題。
表數(shù)據(jù)必須有奇數(shù)個(gè)副本,最大值為7。
復(fù)制因子(在表創(chuàng)建時(shí)進(jìn)行設(shè)置)不能更改。
沒(méi)有辦法手動(dòng)運(yùn)行壓縮,但刪除一個(gè)表會(huì)立即回收這個(gè)表的空間。
不支持次要索引。
不支持多行事務(wù)。
不支持關(guān)系特性,比如外鍵。
像列和表名這樣的標(biāo)識(shí)符被限制為有效的UTF-8字符串,最大長(zhǎng)度為256個(gè)字符。
如果使用ApacheImpala來(lái)查詢Kudu表,需要查看Impala集成kudu的限制資料。
必須使用簡(jiǎn)單或復(fù)合的主鍵將表手工預(yù)分區(qū)為平板。自動(dòng)拆分目前是不支持的。Kudu不允許在創(chuàng)建分區(qū)后再更改分區(qū),除了添加或刪除范圍分區(qū)之外。
現(xiàn)有表中的數(shù)據(jù)目前不能自動(dòng)重新分區(qū)。需要建立新的分區(qū),再創(chuàng)建一個(gè)新的表,并插入舊表的內(nèi)容。
失去大多數(shù)副本的平板(比如3個(gè),丟了2個(gè)還只有1個(gè))需要人工干預(yù)才能修復(fù)。
建議最大數(shù)量的平板服務(wù)器是100臺(tái)。
建議最大數(shù)量的主節(jié)點(diǎn)服務(wù)呂是3臺(tái)。
每臺(tái)平板服務(wù)器推薦的存儲(chǔ)數(shù)據(jù)(復(fù)制副本后和壓縮后)的最大數(shù)量為8TB。
建議每臺(tái)平板服務(wù)器的最大平板數(shù)量為2000(復(fù)制副本后)。
每臺(tái)平板服務(wù)器的每個(gè)數(shù)據(jù)表的平板最大數(shù)量為60個(gè)(復(fù)制副本后,在創(chuàng)建表時(shí))。
服務(wù)器管理的限制
生產(chǎn)部署應(yīng)該為平板服務(wù)器配置至少4GB的內(nèi)存,最好在接近數(shù)據(jù)和平板規(guī)模限制時(shí)將內(nèi)存擴(kuò)充至16GB。
寫(xiě)入的前置日志(WALs)只能存儲(chǔ)在某一個(gè)磁盤上。
磁盤故障是不可容忍的,一旦檢測(cè)到平板服務(wù)器就會(huì)崩潰。
未恢復(fù)數(shù)據(jù)的失敗磁盤需要在重新啟動(dòng)之前對(duì)該平板服務(wù)器的所有Kudu數(shù)據(jù)進(jìn)行格式化。
無(wú)法添加/刪除數(shù)據(jù)目錄,必須對(duì)它們進(jìn)行重新格式化來(lái)更改目錄集。
平板服務(wù)器不能做到優(yōu)雅地退出群集。
平板服務(wù)器不能改變他們的地址或端口。
Kudu對(duì)擁有一個(gè)最新的NTP(網(wǎng)絡(luò)時(shí)間協(xié)議Network Time? ? Protocol)有著嚴(yán)格的要求。Kudu的主節(jié)點(diǎn)服務(wù)器和平板服務(wù)器會(huì)在不同步的情況下崩潰。
Kudu發(fā)布版本只測(cè)試了NTP。其他時(shí)間同步提供者(如Chrony)可能不起作用。
群集管理的限制
不支持機(jī)架感知(在調(diào)度任務(wù)和分配存儲(chǔ)空間時(shí)考慮節(jié)點(diǎn)的物理位置)。
不支持多數(shù)據(jù)中心。
不支持滾動(dòng)重啟。
復(fù)制和備份的限制
kudu目前不包括任何內(nèi)置的備份和恢復(fù)功能。鼓勵(lì)用戶使用Spark或Impala等工具導(dǎo)出或?qū)氡?/p>
與Impala集成的限制
在創(chuàng)建Kudu表時(shí),CREATE table語(yǔ)句必須將主鍵列放在其他列之前。
Impala不能更新主鍵列中的值。
Impala不能用DECIMAL、VARCHAR或近似這些類型的列創(chuàng)建Kudu表。
在Impala中用作外部表時(shí),帶有大寫(xiě)或非ascii字符名稱的Kudu表必須進(jìn)行重命名,不能包含大寫(xiě)或非ascii字符。
Kudu表的列名包含大寫(xiě)或非ascii字符,不能用作Impala的外部表??梢詫⒘兄孛?,以解決這個(gè)問(wèn)題。
!=和LIKE謂詞不被推送到Kudu,而是由Impala掃描節(jié)點(diǎn)進(jìn)行評(píng)估。這可能會(huì)降低相對(duì)于其他類型謂詞的性能。
使用Impala的更新、插入和刪除是非事務(wù)性的。如果一個(gè)查詢某些部分失敗了,其部分效果將不會(huì)回滾。
單個(gè)查詢的最大并行度受限于表中的平板數(shù)量。為了良好的分析性能,針對(duì)大型表的每個(gè)主機(jī),建議存放 10個(gè)或更多的平板。
創(chuàng)建kudu表時(shí)不支持的impala關(guān)鍵詞
PARTITIONED
LOCATION
ROWFORMAT
與Spark集成的限制
Spark 2.2(和更高版本)在運(yùn)行時(shí)需要Java 8,盡管Kudu Spark 2.x集成是與Java7兼容的。Spark 2.2是Kudu 1.5.0的默認(rèn)依賴版本。
在注冊(cè)為臨時(shí)表時(shí),如果kudu表名帶有大寫(xiě)或非ascii字符,需要修改kudu表名。
Kudu表的列名如果包含大寫(xiě)或非ascii字符,不能與SparkSQL一起使用。可以重命名列名,以解決這個(gè)問(wèn)題。
<>和or謂詞沒(méi)有被推送到Kudu,而是由Spark任務(wù)來(lái)評(píng)估。只有帶有后綴通配符的LIKE謂詞被推到Kudu。這意味著“FOO%”會(huì)被推送到kudu,但是像“FOO%BAR”不會(huì)。
Kudu不能支持Spark SQL所能支持的所有類型。例如,Kudu不支持Date,?Decimal和復(fù)雜類型。
Kudu表只能在SparkSQL中注冊(cè)為臨時(shí)表。
不能使用HiveContext查詢Kudu表。
空閑時(shí)的數(shù)據(jù)加密功能沒(méi)有直接構(gòu)建到Kudu中。通過(guò)使用dmcrypt等本地塊設(shè)備加密軟件,可以在空閑時(shí)加密Kudu數(shù)據(jù)。
授權(quán)僅在系統(tǒng)范圍的粗粒度級(jí)別上可用。表級(jí)、列級(jí)和行級(jí)授權(quán)特性不可用。
Kudu不支持為Kudu流程配置自定義服務(wù)主體。主體必須遵循模式kudu/@。
Kudu與Apache Flume的集成,將不支持寫(xiě)入需要身份驗(yàn)證的Kudu集群。
由Kudu IPKI生成的服務(wù)器證書(shū)與bouncycastle版本1.52和更早版本是不兼容的。