Apache Kudu 使用建議與限制

目錄

ApacheKudu使用建議與限制... 1

模式設(shè)計(jì)的限制... 1

主鍵... 1

單元格... 2

數(shù)據(jù)列... 2

數(shù)據(jù)行... 2

數(shù)據(jù)表... 2

其它方面的限制... 3

分區(qū)的限制... 3

擴(kuò)展的建議和限制... 3

服務(wù)器管理的限制... 4

群集管理的限制... 4

復(fù)制和備份的限制... 5

與Impala集成的限制... 5

創(chuàng)建kudu表時(shí)不支持的impala關(guān)鍵詞... 5

與Spark集成的限制... 6

安全性的限制... 6


模式設(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ò)誤,并返回給客戶端。

數(shù)據(jù)列

默認(rèn)情況下,Kudu不允許創(chuàng)建超過(guò)300列的表。推薦使用更少的列來(lái)獲得最佳性能的模式設(shè)計(jì)。

DECIMAL、CHAR、VARCHAR、DATE和復(fù)雜類型(如數(shù)組)是不支持的。

更改表不能更改現(xiàn)有列的類型和是否可為空。

刪除列不會(huì)立即回收空間,必須要采用壓縮,才能回收空間 。

數(shù)據(jù)行

Kudu主要用于數(shù)據(jù)分析。盡管單個(gè)單元格大小可以多達(dá)64KB,而Kudu支持多達(dá)300個(gè)列,但建議單行不要大于幾百KB。如果單行大小達(dá)到數(shù)千字節(jié)數(shù)據(jù),可能會(huì)遇到問(wèn)題。

數(shù)據(jù)表

表數(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的限制資料。

分區(qū)的限制

必須使用簡(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ù)。

擴(kuò)展的建議和限制

建議最大數(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和更早版本是不兼容的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容