1.CDH6.1有哪些新功能?
2.CDH免费版限制多少个节点?
3.CDH6.1有哪些细粒度权限?
北京时间2018年12月19日,Cloudera正式发布Cloudera Enterprise 6.1.0,上次发布CDH6.0是8月30日,差不多过去了3个多月的时间,从CDH6.0到CDH6.1是一次minor version的更新,但更新内容较多,在开始接下来的细化功能讨论前,我们先看看几项重点更新的内容:
1.组件版本:Kafka 2.0, Spark 2.4, HBase 2.1.1, Accumulo 1.9.2, SOLR 7.4
2.CDH免费版限制100个节点内
3.HDFS的纠删码完全支持,包括Hive,Navigator(auditing),BDR,MR,Spark
4.对象存储支持:On-prem (Ceph), Cloud (ADLS gen 2)
5.Impala的多个distinct语句支持
6.Sqoop的HiveServer2与导入Parquet文件支持
7.OpenJDK支持
1 CDH6.1的新功能
1.1 Hadoop各版本说明
组件
| 组件描述
| 版本
|
Hadoop
| | v3.0.0
|
HBase
| | v2.1.1
|
Hive
| 具备类SQL接口和ODBC/JDBC驱动的元数据知识库连接BI应用和Hadoop
| v2.1.1
|
Hue
| 遵循Apache许可协议的基于浏览器的桌面Hadoop接口
| v3.9.0
|
Impala
| 遵循Apache许可协议的、针对存放在HDFS和HBase数据的实时SQL查询引擎
| v3.1.0
|
Kafka
| | V2.0.0
|
Mahout
| | v0.9
|
Yarn
| | V3.0.0
|
Flume
| 收集和聚合日志和事件数据,实时流写入HDFS或HBase的分布式框架
| v1.8.0
|
Pig
| | v0.17.0
|
Solr
| | v7.4.0
|
Spark
| | v2.4
|
Sqoop
| | v1.4.7
|
Zookeeper
| | v3.4.5
|
Kudu
| | V1.8
|
1.2 Apache Flume
1.Flume JMS支持TLS连接,包括客户端的证书身份认证。参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/6.1/topics/sg_flume_thrift_ssl.html#concept_flume_jms_ssl[/mw_shl_code]
2.Flume支持Auto-TLS,参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/6.1/topics/sg_flume_thrift_ssl.html#flume_ssl[/mw_shl_code]
1.3 HDFS
1.3.1 ADLS Gen2 Preview
CDH支持使用ADLS Gen2作为存储,同时计算引擎支持MapReduce, Hive on MapReduce, Hive on Spark,Spark, Oozie和Impala。ADLS Gen2目前尚处于预览阶段,查看预览状态你需要查阅ADLS Gen2的文档。如果要查看如何配置CDH和ADLS Gen2,可以参考
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/admin_adls2_config.html#admin_adls_config_overview[/mw_shl_code]
1.3.2 CacheReplicationMonitor
你可以在Advanced Configuration Snippet (SafetyValve) for hdfs-site.xml: dfs.namenode.caching.enabled中禁用CacheReplicationMonitor。为了保持向后兼容性,默认这个值是true即开启缓存,如果要禁用则设置为false。
1.3.3 纠删码
CDH6.1支持纠删码(Erasure Coding,EC)。EC是HDFS默认三副本的替代方式。当HDFS集群启用EC后,不需要额外的数据副本复制,数据会被条带化成block然后加密生成校验block。如果有block丢失或者损坏,HDFS会在后台使用剩下的原始数据和校验block重新生成丢失的部分。这种方式跟3副本方式提供相同的数据持久性,但是会大大降低存储成本。参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/latest/topics/admin_hdfs_datadurability.html#xd_583c10bfdbd326ba-7dae4aa6-147c30d0933--7f0a[/mw_shl_code]
1.3.4 快照
现在可以使用ClouderaManager为HDFS启用不可变快照(immutable snapshot)。启用此功能同时为BDR启用基于快照差异的拷贝列表。登录到Cloudera Manager,导航到Clusters ><HDFS cluster> Configuration,然后搜索Enable Immutable Snapshots。该功能默认是关闭的。
1.4 Apache HBase
1.4.1 Web UI中WAL Groups的HBase Replication状态
Web UI中增加了一个新的区域以显示replication的状态:
1.Peers:显示所有的replication peers和它们的配置,包括peer id,cluster key,状态,带宽,现有日志的大小,日志队列大小,replication偏移量和复制的namespace和表。
2.Replication status of all Region Server:显示replication的延迟,包括每个RegionServer的AgeOfLastShippedOp, SizeOfLogQueue和ReplicationLag。
如果replication偏移量显示-1并且replication延迟为UNKNOWN,则表示replication没有启动。有两个常见的原因:peer已经禁用或者replicationEndpoint正在休眠。
1.4.2 Default Behavior Change
HBASE-20856:默认情况下,meta WAL provider (hbase.wal.meta_provier)设置为与普通的WAL(hbase.wal.provider)相同。
1.5 Apache Hive
1.5.1 纠删码支持
你现在可以为Hive中不常访问的表和分区启用EC,参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/erasure_coding_with_hive.html#erasure_coding_hive[/mw_shl_code]
1.5.2 Hive Web UI的查询计划图表视图
你现在可以在一个可视化图表上查看查询计划。了解如何理解查询计划,跟踪MapReduce进度,轻松查明错误可以参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/6.1/topics/cm_hive_query_plan_graph_view.html[/mw_shl_code]
1.5.3 细粒度权限
Sentry和Hive引入了细粒度权限,为角色提供对象级权限。细粒度权限添加CREATE权限,允许用户创建数据库和表。
这里Fayson解释一下,以前的Sentry,如果你想要让某个用户能够创建数据库和表即CREATE权限,你必须得给他赋ALL权限,这样其实是不太合理的,比如某个用户你只想让他能够创建表,但是因为有了ALL权限,某个Database下的所有表他都有权限,包括他还能drop掉整个Database或者所有table。参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/5/latest/topics/sg_hive_sql.html#privileges[/mw_shl_code]
1.5.4 对象所有权(Object Ownership)
Objecto wnership在Sentry中为database,table和view指定一个owner(所有者)。对象的所有者拥有的OWNER权限与对象的ALL权限等效。参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/5/latest/topics/sentry_object_ownership.html[/mw_shl_code]
因为这个新的object ownership功能,在Hive中创建表或数据库的用户会被HMS存储为对象所有者(object owner)。如果启用了object ownership,Sentry会授予用户OWNER权限。无论是否启用object ownership,HMS都会将创建对象的用户存储为对象所有者(object owner)。以前,HMS是将hive用户保存为对象所有者(object owner)。
现在在Hive中新增以下语句以使Sentry支持object ownership:
- ALTER DATABASE SET OWNER
- ALTER TABLE SET OWNER
- SHOW GRANT USER
1.6 Apache Hue
1.内置语言参考,列采样以及Editor的黑色主题
2.简化最终用户搜索Data Catalog
3.改进SQL探索
参考:
[mw_shl_code=text,true]http://gethue.com/additional-sql-improvements-in-hue-4-3/[/mw_shl_code]
1.7 Apache Impala
1.7.1 细粒度权限
同Hive一样,Sentry在Impala中同样也引入了细粒度权限,为角色提供对象级权限。
细粒度的权限包括REFRESH和CREATE,它允许用户创建数据库和表,以及执行更新Impala数据库和表的元数据信息的命令。参考:
[mw_shl_code=text,true]http://www.cloudera.com/documentation/enterprise/latest/topics/impala_authorization.html#authorization[/mw_shl_code]
以下是新增的权限:
- REFRESH权限
- CREATE权限
- SERVER上的SELECT和INSERT权限
在升级到CDH6.1之前,如果某个角色对Impala中的对象具有SELECT或INSERT权限,则该角色在CDH升级期后会自动获得REFRESH权限。
1.7.2 对象所有权(Object Ownership)
通Hive一样,Object ownership在Sentry中为database,table和view指定一个owner(所有者)。对象的所有者拥有的OWNER权限与对象的ALL权限等效。参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/5/latest/topics/sentry_object_ownership.html[/mw_shl_code]
如果启用了object ownership,Sentry会授予用户OWNER权限。无论是否启用object ownership,HMS都会将创建对象的用户存储为默认的对象所有者(object owner)。之前,HMS将Kerberos用户保存为对象所有者(object owner)。
现在在Impala中新增以下语句以使Sentry支持object ownership:
- ALTER DATABASE SET OWNER
- ALTER TABLE SET OWNER
- ALTER VIEW SET OWNER
- SHOW GRANT USER
1.7.3 Admission Control和资源管理增强
1.从CDH6.1/Impala3.1开始,Impala会根据查询计划的内存估计值自动为查询选择内存大小,同时它会受到你配置的资源池的mix/max的内存大小的限制。在以前的版本中,你需要为每个资源池设置单个内存限制(通过mem_limit设置)。下面几个参数你可以通过Cloudera Manager进行配置或者直接配置在admission control配置文件中:
- Minimum Query Memory Limit (min-query-mem-limit)
- Maximum Query Memory Limit (max-query-mem-limit)
- Clamp MEM_LIMIT Query Option (clamp-mem-limit-query-option)
具体参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/impala_admission.html#admission_control[/mw_shl_code]
2.改进以防止scan operators在更多场景中容易OOM
3.admission control有很多改进以使内存估值更准确。
4.有两个查询参数用于拒绝复杂查询。这两个参数会基于查询计划器的资源需求和调度被admission control强制执行。
- THREAD_RESERVATION_LIMIT限制在单个后端上调度的fragments中的保留线程总数。
- THREAD_RESERVATION_AGGREGATE_LIMIT限制所有fragments中保留线程的总和。
1.7.4 IANA时区支持
现在你可以在Impala中自定义时区数据库,比如IANA
1.--hdfs_zone_info_zip启动标志指定包含IANA时区数据库的zip存档的路径。时区数据库的默认位置是/usr/share/zoneinfo文件夹。具体参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/impala_custom_timezones.html#custom_timezone[/mw_shl_code]
2.--hdfs_zone_alias_conf启动标志指定包含非标准时区别名定义的配置文件的路径。具体参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/impala_custom_timezones.html#custom_timezone[/mw_shl_code]
3.新的TIMEZONE查询选项用于定义UTC和本地时间之间转换的本地时区。默认情况下,coordinator节点的时区使用本地时区。具体参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/latest/topics/impala_timestamp.html#timestamp[/mw_shl_code]
1.7.5 通用性能改进
新增查询参数SHUFFLE_DISTINCT_EXPRS,使用这参数可以控制你的SQL语句中同时有grouping和distinct的行为。具体参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/release-notes/topics/impala_shuffle_distinct_exprs.html#shuffle_distinct_exprs[/mw_shl_code]
1.7.6 元数据性能改进
1.Incremental Stats(增量统计)
以下增强功能可以提高Impala的稳定性。这些特性可以减少使用增量统计时由于内存不足导致catalogd 和impalad崩溃的几率。
- catalogd现在会在内存中压缩增量统计信息,从而减少catalogd中的内存占用。
- 增量统计信息现在会由impalad的coordinator按需从catalogd中获取。此增强功能可以减少impalad的coordinator和statestore的内存占用,同时还可以降低广播元数据的网络开销。
具体参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/release-notes/topics/impala_perf_stats.html#pull_incremental_statistics[/mw_shl_code]
2.元数据自动失效
为了控制元数据的大小并降低catalogd缓存OOM的几率,CDH6.1的Impala引入了自动元数据失效功能,它会按时间或者内存失效。
元数据的自动失效为Impala服务提供了更好的稳定性,同时降低了OOM的几率,但可能会导致性能风险,所以现阶段该功能默认是关闭的。具体参考:
[mw_shl_code=text,true]http://www.cloudera.com/documentation/enterprise/latest/topics/impala_config_options.html#auto_invalidate_metadata[/mw_shl_code]
1.7.7 兼容性和可用性增强
1.在默认的TIMESTAMP格式中,日期和时间之间支持其他分隔符,特别是多空格分隔符和“T”分隔符。具体参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/release-notes/topics/impala_timestamp.html#timestamp[/mw_shl_code]
2.INSERT语句支持新的hint placement,具体参考:
[mw_shl_code=text,true]http://www.cloudera.com/documentation/enterprise/latest/topics/impala_hints.html#hints[/mw_shl_code]
3.REGEX_ESCAPE()函数可以转义特殊字符,从而可以让你在字符串中逐字处理它们。
4.SHOW CREATE VIEW与SHOW CREATE TABLE具有相同的功能。
5.现在如果启用了load balancer和Kerberos,Impala Shell也可以直接连接到impalad,而以前只能连接到load balancer。具体参考:
[mw_shl_code=text,true]http://www.cloudera.com/documentation/enterprise/latest/topics/impala_shell_options.html[/mw_shl_code]
6.SHUTDOWN语句可以让Impala正常关闭。
7.一个查询语句可以包含多个distinct。
8.Impala可以读写Azure Data Lake Storage Gen2中的数据。默认情况下,通过HTTP和HTTPS访问ADLS Gen2时会启用TLS。
1.8 Apache Kafka
1.8.1 Apache Kafka2.0.0
1.改进replication协议,可以在leader快速故障转移期间减少leader和follower的日志差异。
2.重新设计并改进controller。
3.每个集群支持更多的分区。
4.增量的fetch requests,从而改进大型分区的replication。
5.增加Kafka consumer的新配置以避免无限期的阻塞(blocking)。
1.8.2 新指标
1.Broker指标
- Controller State
- Global Partition Count
- Global Topic Count
- Kafka Log Cleaner
- Auto Leader Balance Rate and Time
- Controlled Shutdown Rate and Time
- Controller Change Rate and Time
- ISR Change Rate and Time
- Leader and ISR Response Received Rate and Time
- Log Dir Change Rate and Time
- Manual Leader Balance Rate and Time
- Partition Reassignment Rate and Time
- Topic Change Rate and Time
- Topic Deletion Rate and Time
2.Broker topic的指标
- Fetch Message Conversion
- Produce Message Conversion
- Incoming Replication rate
- Outgoing Replication Rate
- Total Fetch Requests per Second
- Total Produce Requests per Second
3.Replica指标
- Failed ISR Updates
- Offline Replica Count
- Under Min ISR Partition Count
1.8.3 JBOD支持
从CDH6.1开始,Cloudera正式支持Kafka集群对节点使用JBOD配置。JBOD支持引入了一个新的命令行工具并改进了现有工具:
1.添加了一个新工具kafka-log-dirs。 该工具允许用户查询分区分配信息。
2.kafka-reassign-parition工具扩展了一个新功能,允许用户为分区重新分配日志目录。用户可以将分区移动到同一个broker的不同日志目录,或者移动到其他broker的日志目录。
1.8.4 安全改进
包含安全漏洞的第三方库的依赖已更新。CDH6.1.0中的Kafka附带了第三方库,其中不包含任何已知的安全漏洞。Cloudera Manager中提供了在Kafka broker上启用远程JMX身份验证所需的配置。用户不再需要通过命令行界面进行设置。
1.8.5 Default Behavior Changes
KAFKA-7050:request.timeout.ms的默认值减少到30秒。此外,添加了一个新逻辑,使JoinGroup请求忽略此超时。
1.9 Apache Kudu
CDH6.1.0中的Kudu新功能如下:
1.C++,Java和Python的功能示例代码以前在单独的代码仓库中,现在可以直接在顶级目录example的子目录中找到。参考:
[mw_shl_code=text,true]https://github.com/apache/kudu/tree/master/examples[/mw_shl_code]
2.KUDU-2353:添加了kudu diagnose parse_stacks,这是一种从诊断日志中解析采样stack traces的工具。
3.新增命令行工具可以在tablet server之间rebalance表的副本,使用kudu cluster rebalance命令可以实现该功能。参考:
[mw_shl_code=text,true]https://kudu.apache.org/docs/administration.html#rebalancer_tool[/mw_shl_code]
4.两个新工具允许超级用户从远程Kudu进程中检索所有命令行的flag值:kudu tserver get_flags和kudu master get_flags。get_flag工具支持按标签过滤返回flag。默认情况下,它们仅返回显式设置的flag。
5.KUDU-2290:新增kudu tablet unsafe_replace_tablet工具从而实现替换tablet。当其中一个tablet永久丢失所有副本时,使用此工具可以恢复table。替换后的tablet中是没有数据的,所以此工具建议在你没有其他选择的情况下再使用。
6.KUDU-2399:添加了对Kudu Python客户端的IS NULL和IS NOT NULL谓词的支持。
CDH6.1.0中的Kudu改进和优化如下:
1.KUDU-2287:为每个tablet replica新增一个指标,用于跟踪上次成功选举尝试以来的选举失败次数,和来自leader的最后一次心跳时间。
2.KUDU-2427:Kudu现在支持运行在Ubuntu 18.04 (“Bionic Beaver”)。
3.KUDU-1889:Kudu现在支持运行在OpenSSL 1.1。
4.KUDU-2012:为Kudu Flume sink增加Kerberos支持。
5.KUDU-2539:Kudu Spark connector现在支持Spark Streaming DataFrames。
6.KUDU-2529:为kudu table list增加-tables过滤参数。
7.KUDU-16:客户端现在支持对扫描限制返回的行数。
8.KUDU-1276:为Python客户端添加Pandas支持。
9.KUDU-2441:在Python客户端中启用了mutation buffer配置。
10.KUDU-2095:在Java客户端中添加了对Kudu Scanner和AsyncKuduScanner的keepAlive API调用。当处理消息所需的时间超过scanner TTL时,此API可用于使scanner在服务器上保持活动状态
11.KUDU-2563:Kudu与Spark的集成现在在读取数据时使用keepAlive API。 默认情况下,它会在scanner上调用keepAlive,周期为15秒。从而确保在较大批次或执行较长时间的Spark作业,不会因为scanner未找到错误而失败。
12.KUDU-2368:C++客户端现在可以配置reactor的线程数。
13.KUDU-2395:在Raft leader选举风暴期间,添加了一个优化以避免libnss中getpwuid_r()的瓶颈。
14.KUDU-2566:改进了rowset tree裁剪,在主键上以无限制间隔进行扫描。
15.KUDU-1861:kudu perf loadgen现在支持生成范围分区表。删除-table_num_buckets配置,转而使用-table_num_hash_partitions和-table_num_range_partitions
16.KUDU-2469:CFile校验失败将导致受影响的tablet replica失败并在其他位置重新复制。
17.KUDU-2359:服务器现在可以启动磁盘上缺少的数据目录
18.KUDU-2191:kudu perf loadgen工具可以使用period-separated数据库名字创建表,比如:default.loadgen_auto_abc123。如果提供了--table标志,则此操作不会生效。可以使用新的--auto_database标志更改表的数据库。这个改变是在Kudu/HMS集成的预期下进行的。
19.引入了FAILED_UNRECOVERABLE副本健康状态。这是为了标记由于GC收集的WAL segment和其他不可恢复的情况(如磁盘故障)而无法追赶上leader的副本。这样,副本管理方案变为混合型:如果预期它可以提交事务,系统会在添加替换之前驱逐具有FAILED_UNRECOVERABLE运行状况的副本,而在其他情况下,它首先添加非选民副本并仅删除失败的副本在将新添加的副本推广到选民角色之后。
20.Spark connector中添加了两个额外的配置参数socketReadTimeoutM和ScanRequestTimeout,以避免高负载下的扫描超时。
21.kudu table工具支持重命名字段和重命名表:rename_table和rename_column。
22.KUDU-2242:Kudu会在启动时等待时钟同步,由新标志-ntp_initial_sync_wait_secs控制
23.KUDU-2289:限制了tablet删除,从而有助于Kudu集群的稳定,即使你一次删除很多tablet。tablet一次删除的数量由新标志-num_tablets_to_delete_simultaneously控制。
24.kudu cluster ksck工具增强
- ksck现在会检查master的运行状况和一致性状态,显示集群中设置的任何不安全或隐藏的flag,同时生成Kudu master和tablet server上运行的Kudu版本摘要。
- ksck现在支持JSON输出,无论是pretty-printed还是compact格式。
- 输出格式由-ksck_format标志控制
1.10 Cloudera Search
CDH6.1中的Cloudera Search基于Apache Solr7.4打包,相比CDH6.0中的Solr7.0又增加了一些新的功能。
注意:源生Solr7.4中的Log4j2在CDH6.1中不包含,CDH中的Solr使用的是Log4j 1.2.17。
|
1.10.1 配置结构更改
1.solrconfig.xml中的顶级<highlighting>元素已被正式弃用,以支持等效的<searchComponent>语法。 已经在多个版本的默认Solr安装中使用了此元素。
2.Shard和集群指标reporter配置现在需要一个class属性。
- 如果一个reporter配置了group="shard"属性,也需要配置class="org.apache.solr.metrics.reporters.solr.SolrShardReporter"属性。
- 如果一个reporter配置了group="cluster"属性,也需要配置class="org.apache.solr.metrics.reporters.solr.SolrClusterReporter"属性。
参考:
[mw_shl_code=text,true]https://lucene.apache.org/solr/guide/7_4/metrics-reporting.html#shard-and-cluster-reporters[/mw_shl_code]
1.10.2 默认配置值的更改
1.与AutoAddReplicas功能一起使用的autoReplicaFailoverWaitAfterExpiration的默认值从之前的30秒增加到120秒。 这会影响Solr添加新副本的时间,以替换已崩溃或关闭的节点上的副本。
2.默认的Solr日志文件大小已增加到32MB,备份数现在为10。参考:
[mw_shl_code=text,true]https://lucene.apache.org/solr/guide/7_4/configuring-logging.html#configuring-logging[/mw_shl_code]
3.默认情况下,eDisMax解析器不允许使用本地参数或旧的_query_ magic field trick指定Solr解析器的子查询。例如,默认情况下不支持{!prefix f = myfield v = enterp}或_query _:“{!prefix f = myfield v = enterp}”。 如果要允许高级用户执行此操作,请设置uf = * query或包含_query_的其他值。如果你需要暂时完全向后兼容,请使用luceneMatchVersion = 7.1.0或更早版本。
4.在XML查询解析器(defType = xmlparser或{!xmlparser ...})中,默认情况下现在不允许解析外部实体。
1.10.3 Changes in Default Behavior
1.配置slowQueryThresholdMillis可以让较慢的请求记录到名为solr_slow_requests.log的一个单独文件中。以前,solr.log文件中记录了较慢的一些请求。
2.在scaling solr的leader-follower模型中,当在复制期间在leader上检测到全新索引时,follower不再提交空索引。要恢复先前的行为,请在复制处理程序配置的从属部分中将false传递给skipCommitOnMasterVersionZero,或将其传递给fetchindex命令。
3.从Solr7.0开始,在未指定配置集名称的情况下创建的collection使用_default配置集的拷贝。7.3之前,拷贝的配置集的名称与collection名称相同。从7.3开始,以新的“.AUTOCREATED”后缀命名,以防止覆盖自定义配置集名称。
4.与Learning to Rank重新排序查询解析一起使用的rq参数不再考虑defType参数。参考:
[mw_shl_code=text,true]https://lucene.apache.org/solr/guide/7_4/learning-to-rank.html#running-a-rerank-query[/mw_shl_code]
5.不再更新的leader不会被允许成为leader。使用Collections API的FORCELEADER命令允许这些副本成为领导者。
6.自动调节系统的行为会暂停所有从操作开始到冷却期结束之间执行触发器。 在冷却期结束后,触发器将恢复。以前,冷却期是一个固定的时期,在触发事件的动作完成后开始。 在此期间,所有触发器都继续运行,但任何事件都被拒绝,然后过一会再尝试。
7.使用本地参数{!myparser ...}启动查询字符串用于从一个查询解析器切换到另一个查询解析器。它目的是供Solr系统开发人员使用,而不是最终用户进行搜索。为了减少因为黑客攻击的影响,Solr会限制将本地参数解析为默认解析器为“lucene”或“func”的上下文时的情况。
- 如果defType = edismax,q = {!myparser ...}不起作用,就将所需的查询解析器放入defType参数中。
- 如果deftype = edismax,hl.q = {!myparser ...}不起作用,就将所需的查询解析器放入hl.qparser参数或设置hl.qparser = lucene。
8.如果副本发生故障,则自动添加副本的功能仅当你的索引是保存在HDFS中时才起作用。它已移植到自动扩展框架,即使其索引位于本地磁盘上,AutoAddReplicas现在也可供所有用户使用。
9.使用MODIFYCOLLECTION API将autoAddReplicas属性从disabled(false)更改为enabled(true)不再立即替换该collection的复制副本。相反,仅当包含它们的节点在启用AutoAddReplicas并关闭时才会添加副本。不再使用参数autoReplicaFailoverBadNodeExpiration和autoReplicaFailoverWorkLoopDelay。
10.重构了solrj.io.eval中的所有Stream Evaluators,具有更简单,更健壮的结构。简化并压缩了实现新Evaluator所需的代码,并使Evaluator更容易处理不同的数据类型(primitives, objects, arrays, lists等)。
1.11 Apache Sentry
1.11.1 细粒度权限
引入CREATE和REFRESH(仅限Impala)权限,允许用户创建数据库,表和函数,以及执行更新Impala数据库和表上的元数据信息的命令。具体参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/5/latest/topics/sg_hive_sql.html#privileges[/mw_shl_code]
1.11.2 对象所有权(Object Ownership)
Object ownership在Sentry中为database,table和view指定一个owner(所有者)。对象的所有者拥有的OWNER权限与对象的ALL权限等效。
在CDH6.1中,object ownership默认是关闭的。具体参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/5/latest/topics/sentry_object_ownership.html[/mw_shl_code]
1.11.3 Group名字大小写敏感
Sentry现在对于group名字会大小写敏感。在以前的版本中,Sentry将操作系统group名称中的大写字母修改为小写。
1.12 Apache Spark
CDH6.1.0中打包的是Spark2.4
1.支持Structured Streaming,参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_610_unsupported_features.html#spark
https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_610_known_issues.html#spark_610_ki_exact_once_fault_toler[/mw_shl_code]
2.支持Microsoft ADLS Gen2 Preview存储服务。参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/spark_adls.html#spark_adls[/mw_shl_code]
3.Hive on Spark支持纠删码指标。参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/erasure_coding_with_hive.html#ec-tools[/mw_shl_code]
1.13 Apache Sqoop
1.13.1 增量导入NULL字段并更新到HBase
sqoop-import新增--hbase-null-incremental-mode参数,它允许用户指定在增量导入期间如何处理NULL列更新。参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/latest/topics/admin_hbase_import.html[/mw_shl_code]
1.13.2 自动编译目录清理
sqoop-import新增参数--delete-compile-dir,可以让用户在作业完成后自动从磁盘中删除生成的类和jar文件。默认情况下,ClassWriter生成的所有临时文件都保存在磁盘的/tmp/sqoop-username/compile目录中。因为可以从这些文件中提取表的schema,因此Cloudera建议您使用--delete-compile-dir参数删除这些文件。
1.13.3 导入Parquet格式
支持将数据导入为Parquet格式,该功能基于Hadoop API实现。通过参数--parquet-configurator-implementation进行配置。参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/latest/topics/cdh_ig_parquet.html[/mw_shl_code]
1.13.4 HiveServer2支持
支持通过HiveServer2将数据导入Hive,sqoop import增加了三个新的参数:
- --hs2-url
- --hs2-user
- --hs2-keytab
该功能没有对Hive导入的默认行为进行任何更改。当用户指定--hs2-url选项时,命令通过JDBC连接发送到HiveServer2。 数据本身不通过JDBC连接传输。 它直接写入HDFS并使用LOAD DATA INPATH命令移动到Hive warehouse,与默认Hive导入一样。
主要HiveServer2支持Sentry授权。因此,Cloudera建议通过HiveServer2而不是默认方法将数据导入Hive。 目前,Sqoop只能使用Kerberos对HiveServer2进行身份验证。参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/latest/topics/hive_ingesting_and_querying_data.html[/mw_shl_code]
1.13.5 支持导入到Amazon S3
Sqoop现在支持从RDBMS导入到Amazon S3,使用Hadoop-AmazonWeb Services集成的功能。参考:
[mw_shl_code=text,true]https://archive.cloudera.com/cdh6/6.0.0/docs/hadoop-3.0.0-cdh6.0.0/hadoop-aws/tools/hadoop-aws/index.html[/mw_shl_code]
1.13.6 Avro导入的默认precision和scale
当表中包含Oracle中的numeric数据或Postgres中的numeric或decimal数据时,支持在avro schema中指定默认precision和scale。通过两个新参数sqoop.avro.logical_types.decimal.default.precision和sqoop.avro.logical_types.decimal.scale来指定默认precision和scale。参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/latest/topics/cdh_ig_avro_usage.html#topic_26_4/default_precision_scale[/mw_shl_code]
1.13.7 Behavior Changes-MS SQL connector的连接重置
事实证明,MS-SQL connector的恢复逻辑不可靠。因此,default behavior从弹性变为非弹性。也就是说恢复逻辑现在默认关闭。可以使用--resilient选项打开恢复逻辑。之前用于关闭恢复逻辑的--non-resilient选项现在会被忽略。MS-SQL connector的弹性操作要求split-by column仅按升序并包含唯一值。否则,使用--resilient选项可能会导致输出中出现重复或丢失的记录。
示例:
从一个表导入
[mw_shl_code=shell,true]$ sqoop import ... --table custom_table --split-by id -- --resilient[/mw_shl_code]
通过一个查询导入
[mw_shl_code=shell,true]$ sqoop import ... --query "SELECT ... WHERE $CONDITIONS" --split-by ordered_column -- --resilient[/mw_shl_code]
1.14 Apache Zookeeper
1.ZOOKEEPER-2940:你可以使用新的指标监控生成的响应的大小,以了解如何正确设置客户端的jute.maxbuffer属性。
2.ZOOKEEPER-3019:可以使用新的指标来跟踪较慢的fsyncs的数量。
3.ZOOKEEPER-2994:添加了一个工具来恢复带有CRC错误的日志和snapshot entries 。
2.CDH6.1的新功能2
1.Cloudera免费版节点数限制
Cloudera免费版现在不允许集群节点数超过100,具体如下描述:
1.单个Cloudera Manager管理的所有CDH6.x集群所包含的主机总数不允许超过100个,如果超过,增加主机会失败。
2.如果Cloudera Manager管理的集群主机数量超过100,Cloudera Manager不允许将集群升级到CDH6.x。如果你主机总数超过100,从Cloudera Manager6.0升级到6.1会失败,这时你需要移除一些主机使总数小于100,然后重新升级才能成功。
注意:如果你从Cloudera企业版降级为Cloudera免费版后,并且你的主机数量超过了100,这时Cloudera Manager会禁用集群管理的所有功能除了停止集群。如果主机总数超过100,你将无法重启集群或以其他方式使用集群,必须使用Cloudera Manager删除主机使主机总数小于100后才能恢复正常。
受影响的版本:Cloudera Manager6.1或更高版本
2.Accumulo
Accumulo安装现在使用Hadoop Credential Provider来处理敏感属性。比如:实例密钥和跟踪用户密码。
3.Agents
如果agent的心跳是一个无效的CM_GUID,Cloudera Manager管理控制台现在会有提示消息。
4.API endpoints for Roles
新的API文档中基于Swagger的API客户端,可以从RolesResource而不是ServicesResource访问角色。这不会更改角色的endpoint,也不会影响使用curl等工具直接访问Cloudera Manager API endpoint。
5.Audit Events
当从Cloudera Manager管理控制台或任何其他客户端调用API时,Cloudera Manager会在Audits数据库表中记录事件。当调用API的频率较高时,Audits数据库表会增长很快,这会直接导致Cloudera Manager的性能下降。
Cloudera Manager现在可以在一个配置的时间段内将发生的类似审计事件合并到一个唯一的审计条目中,然后保存到Audits数据库中。这样可以防止Audits表被快速写入。可以通过在cloudera-scm-server.properties中设置CMF_JAVA_OPTS的参数来配置此功能:
1.com.cloudera.cmf.persist.cmAuditTrackerConfig.timeToLiveMs : 类似审计条目合并为一个的时间间隔,默认为10000毫秒,如果设置为0,则是表示禁用该功能。
2.com.cloudera.cmf.persist.cmEventCoalescer.maxTrackedEvents: 可以在某个时间段内合并的最大事件数。默认值为1024。如果达到此限制,则删除最早的事件。
6.Auto-TLS
6.1Certificate Handling
certmanager现在可以使用--skip-invalid-ca-certs选项自动跳过无效证书并导入bundle的其余部分。以前,如果bundle中的一个或多个证书无效,则整个设置操作失败。
6.1.1Randomization of Sequential Certificate Authority Serial Numbers
以前,Auto-TLS生成的证书始终以序号0开始。现在,证书将从随机序号开始。Auto-TLS新部署才会受到影响,已有的Auto-TLS部署将不受影响。
6.2Supported Services
Auto-TLS现在支持以下服务:Flume,Java Keystore KMS,KeyTrustee服务器,KeyTrustee KMS,Thales HSM KMS和Luna HSM KMS。 在启用Auto-TLS后,添加这些服务时,将自动添加TLS配置。
7.Backup and Disaster Recovery (BDR)
7.1非安全集群到安全集群的数据复制
你现在可以使用BDR将数据从非Kerberos集群复制到Kerberos集群,但反过来则不支持,即BDR不支持从Kerberos集群复制数据到非Kerberos集群。
要执行复制,目标群集必须是ClouderaManager6.1.0或更高。源集群必须是ClouderaManager5.14.0或更高。
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/cm_bdr_hive_replication.html#insecure_to_secure_replication
https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/cm_bdr_hdfs_replication.html#insecure_to_secure[/mw_shl_code]
7.2Invalidate Metadata
BDR增强了Invalidate Metadata功能,以便在复制后按照每个Impala服务发出命令。如果集群有多个Impala服务,这样可以确保只有目标Impala的元数据会被刷新,从而提高性能。
7.3Kudu
BDR现在在复制时会忽略数据保存在Kudu上的Hive表,这个修改不会对BDR现有的功能造成任何影响因为BDR本身就不支持复制Kudu表。这样修改是为了防止Hive Mestastore,Imapla和Kudu在交互时造成数据丢失。
7.4Log Retention
以前,Cloudera Manager会永久保留BDR复制作业的日志。现在,Cloudera Manager默认保留BDR日志90天。你现在可以在CM中配置Backup and Disaster Log Retention参数来设置保留BDR日志的天数,或者完全禁用该功能。
7.5使用HDFS快照差异报告更快地进行增量复制
此功能比较两个HDFS快照,它会比较两个快照从而获得需要复制的文件,进而减少扫描的文件数。如果有大量文件不需要合并,这可以显著提升复制性能。
该功能依赖于HDFS的immutable snapshot功能。以前的CDH版本中也包含此功能,现在在6.1中默认开启该功能。在创建或编辑复制计划时,你也可以配置将复制作业配置为在快照diff失败时中止。如果在目标群集上新增,修改或删除了需要被复制的文件(通常不受BDR支持),则会发生这种情况。但是如果这样,BDR也可以回退到详细比较文件的阶段,你也可以通过其他的配置来避免这种情况,比如“delete policy”。参考:
[mw_shl_code=text,true]https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/cm_bdr_hive_replication.html#bdr_snapshotdiff_hive
https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/cm_bdr_hdfs_replication.html#bdr_snapshotdiff_hdfs[/mw_shl_code]
8.PostgreSQL 10 Support
Cloudera Manger以及Cloudera Management Service现在支持使用PostgreSQL10作为数据库。
9.诊断包
诊断包从以下2个方面进行了改进:
1.主机的dmesg命令的输出结果,诊断包在搜集时会包含格式化后的时间戳,如果主机操作系统支持的话。
2.不管网口名字是什么,诊断包现在会搜集每个主机上所有的网口信息。
10.HBase从CDH5升级到CDH6时检查hbase prefix_tree_encoding
OPSAPS-44701:当从CDH5升级到CDH6时,增加了一个对HBase表是否使用PREFIX_TREE_ENCODING的检查,并警告用户。
11.HDFS
你现在可以对NFS Gateway在HDFS配置中配置nfs.export.point
12.Hive
12.1Size of Hive query locks in ZooKeeper
在对表进行锁定时,Hive会为每个这类锁创建一个Zookeeper对象,这个对象包含完整的查询字符串。这个查询字符串仅当你使用SHOW LOCKS EXTENDED命令时会显示锁。它对实际锁定过程没有任何影响。
但是,这通常会给ZooKeeper实例带来巨大的内存压力。例如,对于大小为1MB的查询字符串,如果在表的10000个分区上获取锁,则在ZooKeeper上需要10GB的内存。为了缓解这种压力,默认情况下,通过hive.locks.query.string.max.length属性,存储在ZooKeper的锁对象中的最大查询长度限制为10000个字符。 重申一下,除了在SHOW LOCKS EXTENDED命令的输出中显示如何查询之外,这不会影响任何其他事情。此配置值可以增加到最大值100万,这是znode(1 MB)的数据限制。
12.2Hive Metastore Connection Retries
HiveServer2中增加了一个新的配置参数hive.metastore.connect.retries,比默认值会大一些。
13.Hue
对于RedHat7和与其兼容的其他OS,如果Hue使用Postgres数据库(包括使用默认的CM内置Postgres),CM会自动安装相应版本的psycopg2。
14.Hue logs
CM现在可以解析httpd日志文件,包括Hue使用的文件,意味着诊断包和日志搜索都会包含这些日志文件,同时你也可以在CM界面上进行查看。
15.Impala
1.新增Impala空闲查询超时和空闲会话超时配置,配置参数名为:idle_query_timeout和idle_session_timeout
2.新增配置ImpalaD的JVM大小,CM中现在你可以为Impala Daemon配置Java的heap大小,参数名为:Java Heap Size of Impala Daemon in Bytes,默认为4GB。
3.OPSAPS-47832:在Cloudera Manager的Impala Daemon的Status页面,会显示Impala Daemon的JVM使用情况。
4.Impala指标:Impala暴露了一些跟JVM和GC相关的一些指标。在Cloudera Manager的Impala Daemon的角色状态页面,可以查看Impala Daemon内嵌JVM的GC指标。
5.新增2个Impala的健康检查:
6.Impala图表库:更新了Impala的预定义图表,删除了一些很少用到的图表,并更新引入了更多有意义的一些指标。
7.Impala资源池,IMPALA-7349:Impala资源池功能对每个池新增了最小/最大内存限制。
16.Intel's MKL Repository
Cloudera Manager6.1现在默认包含 Intel Math Kernel Library (MKL) 的parcel仓库地址。这个parcel可以加速机器学习工作负载。默认情况下,parcel不会在集群中自动下载和激活。参考:
[mw_shl_code=text,true]https://software.intel.com/en-us/articles/installing-intel-mkl-cloudera-cdh-parcel
[/mw_shl_code]
17.Kafka
17.1Kafka Data Retention参数
Cloudera Manager移除了Kafka Broker的参数Data Retention Hours (data.retention.hours),替代请使用Data Retention Time (data.retention.ms) 参数。
17.2Kafka Broker网络线程参数
Kafka broker配置参数新增num.network.threads,默认值是基于上游版本。
17.3默认Kafka Broker性能参数
从CDH6.1开始,num.replica.fetchers和num.network.threads的默认值调整为4和8,对于生产系统来说,这是Cloudera的推荐值。
17.4Kafka指标
Broker Topic新增如下指标:
kafka_fetch_message_conversions_per_sec
kafka_produce_message_conversions_per_sec
kafka_replication_bytes_in_per_sec
kafka_replication_bytes_out_per_sec
kafka_total_fetch_requests_per_sec
kafka_total_produce_requests_per_sec
Controller新增以下指标:
kafka_auto_leader_balance_rate_and_time_ms
kafka_controlled_shutdown_rate_and_time_ms
kafka_controller_change_rate_and_time_ms
kafka_isr_change_rate_and_time_ms
kafka_leader_and_isr_response_received_rate_and_time_ms
kafka_log_dir_change_rate_and_time_ms
kafka_manual_leader_balance_rate_and_time_ms
kafka_partition_reassignment_rate_and_time_ms
kafka_topic_change_rate_and_time_ms
kafka_topic_deletion_rate_and_time_ms
kafka_controller_state
kafka_global_partition_count
kafka_global_topic_count
ReplicaManager新增如下指标:
kafka_failed_isr_updates
kafka_offline_replica_count
kafka_under_min_isr_partition_count
LogCleaner新增如下指标:
kafka_logcleaner_cleaner_recopy_percent
kafka_logcleaner_max_buffer_utilization_percent
kafka_logcleaner_max_clean_time_secs
kafka_logcleaner_max_dirty_percent
kafka_logcleaner_time_since_last_run_ms
kafka_logcleaner_offline_log_directory_count
17.5关闭和恢复Kafka
Kafka服务正常停止超时已增加到120秒,新增配置参数:num.recovery.threads.per.data.dir。
17.6JBOD相关的指标添加了新的指标来显示Kafka的离线日志目录和离线分区。
18改进Kerberos凭据的Redaction
增强Import KDC Account Manager Credentials命令,如果命令失败,则当前配置的redaction policy会被应用于命令的错误输出。用户名和密码始终从输出中进行编辑。
19云存储的读写指标
OPSAPS-44748:MapReduce jobs在读写S3和Azure Data Lake storage中的数据时,读写的数据量现在有指标进行查看,比如:s3a_bytes_read和adl_bytes_written
20Network Performance Inspector
Network Performance Inspector允许你检查主机之间的延迟。你可以使用此工具来诊断可能显著影响工作负载性能的延迟问题,比如MapReduce作业,Spark作业以及Hive和Impala查询,尤其是在使用远程存储时。
inspector会从每个主机向所有其他主机运行ping命令,然后报告平均ping时间和丢包百分比。你可以使用此信息来识别有问题的主机或网络基础架构问题,从而采取修复方法。你可以按需使用inspector,添加新集群的时候也可以使用它。同时使用Cloudera Manager API也可以调用。
参考:
https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/cm_network_perf_inspector.html#cm_network_perf_inspector