首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

0487-CDH6.1的新功能

北京时间2018年12月19日,Cloudera正式发布Cloudera Enterprise 6.1.0,上次发布CDH6.0是8月30日,差不多过去了3个多月的时间,参考Fayson之前的文章《

Cloudera Enterprise 6正式发布

》。从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各版本说明

1.2

Apache Flume

1.Flume JMS支持TLS连接,包括客户端的证书身份认证。参考:

2.Flume支持Auto-TLS,参考:

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,可以参考:

1.3.2

CacheReplicationMonitor

1.3.3

纠删码

CDH6.1支持纠删码(Erasure Coding,EC)。EC是HDFS默认三副本的替代方式。当HDFS集群启用EC后,不需要额外的数据副本复制,数据会被条带化成block然后加密生成校验block。如果有block丢失或者损坏,HDFS会在后台使用剩下的原始数据和校验block重新生成丢失的部分。这种方式跟3副本方式提供相同的数据持久性,但是会大大降低存储成本。参考:

1.3.4

快照

现在可以使用ClouderaManager为HDFS启用不可变快照(immutable snapshot)。启用此功能同时为BDR启用基于快照差异的拷贝列表。登录到Cloudera Manager,导航到Clusters > 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

1.5

Apache Hive

1.5.1

纠删码支持

你现在可以为Hive中不常访问的表和分区启用EC,参考:

1.5.2

Hive Web UI的查询计划图表视图

你现在可以在一个可视化图表上查看查询计划。了解如何理解查询计划,跟踪MapReduce进度,轻松查明错误可以参考:

1.5.3

细粒度权限

Sentry和Hive引入了细粒度权限,为角色提供对象级权限。细粒度权限添加CREATE权限,允许用户创建数据库和表。

这里Fayson解释一下,以前的Sentry,如果你想要让某个用户能够创建数据库和表即CREATE权限,你必须得给他赋ALL权限,这样其实是不太合理的,比如某个用户你只想让他能够创建表,但是因为有了ALL权限,某个Database下的所有表他都有权限,包括他还能drop掉整个Database或者所有table。参考:

1.5.4

对象所有权(Object Ownership)

Objecto wnership在Sentry中为database,table和view指定一个owner(所有者)。对象的所有者拥有的OWNER权限与对象的ALL权限等效。参考:

因为这个新的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探索

参考:

1.7

Apache Impala

1.7.1

细粒度权限

同Hive一样,Sentry在Impala中同样也引入了细粒度权限,为角色提供对象级权限。

细粒度的权限包括REFRESH和CREATE,它允许用户创建数据库和表,以及执行更新Impala数据库和表的元数据信息的命令。参考:

以下是新增的权限:

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权限等效。参考:

如果启用了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)

具体参考:

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文件夹。具体参考:

2.--hdfs_zone_alias_conf启动标志指定包含非标准时区别名定义的配置文件的路径。具体参考:

3.新的TIMEZONE查询选项用于定义UTC和本地时间之间转换的本地时区。默认情况下,coordinator节点的时区使用本地时区。具体参考:

1.7.5

通用性能改进

新增查询参数SHUFFLE_DISTINCT_EXPRS,使用这参数可以控制你的SQL语句中同时有grouping和distinct的行为。具体参考:

1.7.6

元数据性能改进

1.Incremental Stats(增量统计)

以下增强功能可以提高Impala的稳定性。这些特性可以减少使用增量统计时由于内存不足导致catalogd和impalad崩溃的几率。

catalogd现在会在内存中压缩增量统计信息,从而减少catalogd中的内存占用。

增量统计信息现在会由impalad的coordinator按需从catalogd中获取。此增强功能可以减少impalad的coordinator和statestore的内存占用,同时还可以降低广播元数据的网络开销。

具体参考:

2.元数据自动失效

为了控制元数据的大小并降低catalogd缓存OOM的几率,CDH6.1的Impala引入了自动元数据失效功能,它会按时间或者内存失效。

元数据的自动失效为Impala服务提供了更好的稳定性,同时降低了OOM的几率,但可能会导致性能风险,所以现阶段该功能默认是关闭的。具体参考:

1.7.7

兼容性和可用性增强

1.在默认的TIMESTAMP格式中,日期和时间之间支持其他分隔符,特别是多空格分隔符和“T”分隔符。具体参考:

2.INSERT语句支持新的hint placement,具体参考:

3.REGEX_ESCAPE()函数可以转义特殊字符,从而可以让你在字符串中逐字处理它们。

4.SHOW CREATE VIEW与SHOW CREATE TABLE具有相同的功能。

5.现在如果启用了load balancer和Kerberos,Impala Shell也可以直接连接到impalad,而以前只能连接到load balancer。具体参考:

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

1.9

Apache Kudu

CDH6.1.0中的Kudu新功能如下:

1.C++,Java和Python的功能示例代码以前在单独的代码仓库中,现在可以直接在顶级目录example的子目录中找到。参考:

2.KUDU-2353:添加了kudu diagnose parse_stacks,这是一种从诊断日志中解析采样stack traces的工具。

3.新增命令行工具可以在tablet server之间rebalance表的副本,使用kudu cluster rebalance命令可以实现该功能。参考:

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的keepAliveAPI调用。当处理消息所需的时间超过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又增加了一些新的功能。

1.10.1

配置结构更改

1.solrconfig.xml中的顶级元素已被正式弃用,以支持等效的语法。 已经在多个版本的默认Solr安装中使用了此元素。

2.Shard和集群指标reporter配置现在需要一个class属性。

参考:

1.10.2

默认配置值的更改

1.与AutoAddReplicas功能一起使用的autoReplicaFailoverWaitAfterExpiration的默认值从之前的30秒增加到120秒。 这会影响Solr添加新副本的时间,以替换已崩溃或关闭的节点上的副本。

2.默认的Solr日志文件大小已增加到32MB,备份数现在为10。参考:

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参数。参考:

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。

1.11

Apache Sentry

1.11.1

细粒度权限

引入CREATE和REFRESH(仅限Impala)权限,允许用户创建数据库,表和函数,以及执行更新Impala数据库和表上的元数据信息的命令。具体参考:

1.11.2

对象所有权(Object Ownership)

Object ownership在Sentry中为database,table和view指定一个owner(所有者)。对象的所有者拥有的OWNER权限与对象的ALL权限等效。

在CDH6.1中,object ownership默认是关闭的。具体参考:

1.11.3

Group名字大小写敏感

Sentry现在对于group名字会大小写敏感。在以前的版本中,Sentry将操作系统group名称中的大写字母修改为小写。

1.12

Apache Spark

CDH6.1.0中打包的是Spark2.4

1.支持Structured Streaming,参考:

2.支持Microsoft ADLS Gen2 Preview存储服务。参考:

3.Hive on Spark支持纠删码指标。参考:

1.13

Apache Sqoop

1.13.1

增量导入NULL字段并更新到HBase

sqoop-import新增--hbase-null-incremental-mode参数,它允许用户指定在增量导入期间如何处理NULL列更新。参考:

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进行配置。参考:

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进行身份验证。参考:

1.13.5

支持导入到Amazon S3

Sqoop现在支持从RDBMS导入到Amazon S3,使用Hadoop-AmazonWeb Services集成的功能。参考:

1.13.6

Avro导入的默认precision和scale

1.13.7

Behavior Changes-MS SQL connector的连接重置

事实证明,MS-SQL connector的恢复逻辑不可靠。因此,default behavior从弹性变为非弹性。也就是说恢复逻辑现在默认关闭。可以使用--resilient选项打开恢复逻辑。之前用于关闭恢复逻辑的--non-resilient选项现在会被忽略。MS-SQL connector的弹性操作要求split-by column仅按升序并包含唯一值。否则,使用--resilient选项可能会导致输出中出现重复或丢失的记录。

示例:

从一个表导入

通过一个查询导入

1.14

Apache Zookeeper

1.ZOOKEEPER-2940:你可以使用新的指标监控生成的响应的大小,以了解如何正确设置客户端的jute.maxbuffer属性。

2.ZOOKEEPER-3019:可以使用新的指标来跟踪较慢的fsyncs的数量。

3.ZOOKEEPER-2994:添加了一个工具来恢复带有CRC错误的日志和snapshot entries 。

原文参考:

https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_610_new_features.html#cdh610_new_features

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181220B027FC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券