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二进制文件安装到适当的位置。