0718-6.3.0-CDH6.3的新功能
- 2019 年 10 月 25 日
- 筆記
CM/CDH6.3及更高版本支援OpenJDK11
你現在可以在Cloudera Enterprise 6.3中使用OpenJDK 11,在集群中安裝OpenJDK 11時,默認使用G1GC為CDH大多數服務作為垃圾回收機制,這可能需要進行調優以避免記憶體過量使用。
OPSAPS-50993, OPSAPS-49390, OPSAPS-51643
Apache Hadoop
2.1 YARN
1.YARN Distributed Shell with File Localization
YARN distributed shell是用於YARN功能測試的工具。文件本地化功能使您可以遠程將命令行中定義的文件本地化。
2.公平調度的基於隊列的最大容器分配限制
yarn.scheduler.maximum-allocation-mb屬性使你可以在調度程式級別限制容器的整體大小。maxContainerAllocation屬性設置隊列級別的最大資源,以「 X mb,Y vcores」或「 vcores = X,memory-mb = Y」的形式表示。如果為某個隊列指定了該配置,它會覆蓋調度層面全局的配置,如果不設置,則默認使用調度層面的全局配置。
Apache Impala
3.1 Automatic Invalidate/Refresh Metadata
啟用自動元數據管理後,很多情況下你都不需要執行INVALIDATE/REFRESH。在CDH 6.3中,Hive Metastore中的以下附加事件可以觸發元數據的自動INVALIDATE/REFRESH:
- 通過Impala或者Spark插入表或分區
這是CDH6.3的預覽功能,默認是禁用的。
3.2 Data Cache for Remote Reads
為了提高多集群HDFS環境以及對象存儲環境的性能,Impala現在會將遠程存儲(例如S3,ABFS,ADLS)的數據快取到本地存儲。
這是CDH6.3的預覽功能,默認是禁用的。
數據快取通過–data_cache啟動標誌啟用。
3.3 Query Profile
以下資訊已添加到Query Profile輸出中,以更好地監控和診斷查詢性能。
- Network I/O throughput
- System disk I/O throughput
3.4 支援與Hive Metastore集成的Kudu
在CDH 6.3中,Kudu與Hive Metastore(HMS)集成在一起,你可以從Impala中創建,更新,刪除和查詢與HMS集成的Kudu中的表。
3.5 支援Parquet文件的zstd壓縮
Zstandard(Zstd)是一種實時壓縮演算法,可在速度和壓縮比之間進行權衡。支援從1到22的壓縮級別。級別越低,以壓縮率為代價的速度越快。
Apache Kafka
4.1 Rebase on Apache Kafka 2.2.1
CDH6.3.0中的Kafka是基於Apache Kafka 2.2.1。
4.2 Kafka Topic工具可以直接連接到Broker
kafka-topics命令行工具現在可以使用–bootstrap-server選項而不是zookeeper直接連接到broker。舊的–zookeeper選項現在仍然可用。
Apache Kudu
CDH6.3.0中的Kudu為1.10,主要增加的新功能如下:
1.Kudu支援使用Spark實現表的全量和增量備份,同時也支援使用Spark實現表全量和增量還原。
2.Kudu現在可以將內部的catalog與Hive Metastore進行同步,通過當你在Kudu中創建,刪除,和更改表時自動更新Hive Metastore中的表來實現。
3.Kudu可以與Sentry集成支援原生,細粒度的授權。你現在可以為Kudu表和列定義訪問控制策略,同時也支援為保存在Hive中的Kudu表定義訪問策略。
4.Kudu的web UI現在支援SPNEGO,這是一種通過http header傳遞協商來用Kerberos保護http請求的協議。要使用SPNEGO啟用授權,請設置–webserver_require_spnego命令行標誌。
5.列注釋現在可以存儲在Kudu表中,並且可以使用AlterTable API進行更新。
6.Java scan token builder現在可以為每個tablet創建多個token。要使用此功能,請調用setSplitSizeBytes()以指定每個token應掃描的數據位元組數。Kudu與Spark的集成也提供了相同的API,該API可用於在每個掃描的tablet上產生多個Spark任務。
7.Apache Kudu現在具有實驗性的Kubernetes StatefulSet manifest和Helm圖表,可用於使用Kubernetes定義和部署Kudu集群。
8.Kudu CLI現在具有基本的,基於YAML的配置文件支援,可以通過集群名字提供集群連接資訊,而不用鍵入以逗號分隔的Master地址。
9.kudu perf table_scan命令可掃描表並顯示錶的行數以及運行掃描所花費的時間。
10.kudu table copy命令將數據從一個表複製到同一集群內或跨集群的另一張表。請注意,此實現利用單個客戶端,因此,它可能不適用於大型表。
11.現在可以逐表配置tablet歷史記錄保留時間。
Kudu1.10主要的優化和改進如下:
1.尚未flush的Kudu數據變化如UPDATE, DELETE和re-INSERT的性能已得到極大優化。
2.基本列的謂詞性能已優化。
3.IS NULL和IS NOT NULL謂詞性能已得到優化。
4.對於具有大量分區的表,從master獲取tablet位置的性能已得到優化。這可以提高短期運行的Spark或Impala查詢的性能,同時也可以提高通過客戶端短期連接上的應用程式的性能。
5.tableExists() (Java)和TableExists() (C++)API的性能更高。
6.容錯掃描性能更高,並且佔用的記憶體少得多。
7.kudu cluster ksck現在並行發送更多請求。如果你的集群中擁有很多表,運行該命令時,或者當運行該命令的客戶端與集群內的節點高延遲時,這可以提高速度。
8.Kudu的塊管理器現在可以根據需要刪除用完的塊容器,而不僅僅只是在服務啟動時刪除,這樣可以減少服務的啟動時間。
9.DNS解析現在由Kudu Master,Tablet Server和Kudu C++客戶端快取。默認情況下,快取中已解析的DNS條目的生存時間(TTL)為15秒。
10.在Kudu 1.10.0或更高版本中創建的表將在Web UI中顯示其創建時間以及上次更改時間。
11.Kudu CLI和C ++客戶端現在支援使用「 KUDU_USER_NAME」環境變數來覆蓋本地用戶名。這使你可以使用與客戶端機器上的本地Unix用戶不同的身份對Kudu集群進行操作。請注意,這對安全集群沒有影響,在安全集群中,客戶端身份由Kerberos身份認證確定。
12.Kudu C ++客戶端執行INSERT和UPSERT操作時,在對錶的schema約束時執行更嚴格的驗證。這有助於在將數據發送到tablet server前發生schema衝突。
13.Java客戶端中的KuduScanner參數現在可以迭代。此外,KuduScannerIterator會自動使scanner保持活著,以便scanner在進行迭代時不會超時。
14.Java客戶端添加了KuduPartitioner API。KuduPartitioner API允許客戶端確定行所在的分區,而無需實際寫入該行。比如在Spark中使用KuduPartitioner,它會選擇性地對數據進行重新分區和預排序,然後再寫入Kudu。
15.PartialRow和RowResult Java API具有接受和返回Java對象的新方法。當你不關心自動裝箱並且現有的類型處理邏輯基於Java類型時,這些方法很有用。
16.現在,當日誌級別為INFO或更高級別時,Kudu Java客戶端將記錄RPC trace摘要,而不是完整的RPC trace。這樣可以減少日誌噪音,並以更緊湊的格式顯示RPC問題。
17.Kudu服務現在會在Web UI中顯示啟動各個服務的時間。
18./metrics Web UI端點現在支援按實體類型,實體ID,實體屬性和指標名稱過濾數據。當tablet server中有大量tablet時,這可用於更有效地收集重要指標。
19.你現在可以在命令行中為Kudu rebalancer使用–ignored_tservers參數,在確定重新平衡集群是否安全時,該參數可用於忽略特定tablet server的運行狀況(比如它們關閉了)。
20.kudu master list命令現在顯示集群中每個主節點的Raft共識角色(LEADER或FOLLOWER)。
21.kudu table scan命令不再交錯輸出。它投影所有列,而無需手動列出列名。
22.kudu perf loadgen命令現在支援創建空表。–num_rows_per_thread標誌的特殊值0的語義已更改。現在,值0表示不應生成任何行,而值-1表示應不限制所生成的行數。
23.從源程式碼構建Kudu之後,運行make install命令現在會將Kudu二進位文件安裝到適當的位置。