北京时间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各版本说明
组件 | 组件描述 | 版本 |
---|---|---|
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 | Hadoop的机器算法的库 | v0.9 |
Yarn | Hadoop各组件资源协调 | V3.0.0 |
Flume | 收集和聚合日志和事件数据,实时流写入HDFS或HBase的分布式框架 | v1.8.0 |
Pig | 处理存放在Hadoop里的数据的高级数据流语言 | v0.17.0 |
Solr | 文本、模糊数学和分面搜索引擎 | v7.4.0 |
Spark | 支持循环数据流和内存计算的高速通用数据处理引擎 | v2.4 |
Sqoop | 为集成Hadoop和关系数据库的数据传输引擎 | v1.4.7 |
Zookeeper | 高可靠的分布式协同服务 | v3.4.5 |
Kudu | 一种新的列式存储 | V1.8 |
1.2
Apache Flume
1.Flume JMS支持TLS连接,包括客户端的证书身份认证。参考:
https://www.cloudera.com/documentation/enterprise/6/6.1/topics/sg_flume_thrift_ssl.html#concept_flume_jms_ssl
2.Flume支持Auto-TLS,参考:
https://www.cloudera.com/documentation/enterprise/6/6.1/topics/sg_flume_thrift_ssl.html#flume_ssl
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,可以参考:
https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/admin_adls2_config.html#admin_adls_config_overview
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副本方式提供相同的数据持久性,但是会大大降低存储成本。参考:
https://www.cloudera.com/documentation/enterprise/6/latest/topics/admin_hdfs_datadurability.html#xd_583c10bfdbd326ba-7dae4aa6-147c30d0933--7f0a
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,参考:
https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/erasure_coding_with_hive.html#erasure_coding_hive
1.5.2
Hive Web UI的查询计划图表视图
你现在可以在一个可视化图表上查看查询计划。了解如何理解查询计划,跟踪MapReduce进度,轻松查明错误可以参考:
https://www.cloudera.com/documentation/enterprise/6/6.1/topics/cm_hive_query_plan_graph_view.html
1.5.3
细粒度权限
Sentry和Hive引入了细粒度权限,为角色提供对象级权限。细粒度权限添加CREATE权限,允许用户创建数据库和表。
这里Fayson解释一下,以前的Sentry,如果你想要让某个用户能够创建数据库和表即CREATE权限,你必须得给他赋ALL权限,这样其实是不太合理的,比如某个用户你只想让他能够创建表,但是因为有了ALL权限,某个Database下的所有表他都有权限,包括他还能drop掉整个Database或者所有table。参考:
https://www.cloudera.com/documentation/enterprise/5/latest/topics/sg_hive_sql.html#privileges
1.5.4
对象所有权(Object Ownership)
Objecto wnership在Sentry中为database,table和view指定一个owner(所有者)。对象的所有者拥有的OWNER权限与对象的ALL权限等效。参考:
https://www.cloudera.com/documentation/enterprise/5/latest/topics/sentry_object_ownership.html
因为这个新的object ownership功能,在Hive中创建表或数据库的用户会被HMS存储为对象所有者(object owner)。如果启用了object ownership,Sentry会授予用户OWNER权限。无论是否启用object ownership,HMS都会将创建对象的用户存储为对象所有者(object owner)。以前,HMS是将hive用户保存为对象所有者(object owner)。
现在在Hive中新增以下语句以使Sentry支持object ownership:
1.6
Apache Hue
1.内置语言参考,列采样以及Editor的黑色主题
2.简化最终用户搜索Data Catalog
3.改进SQL探索
参考:
http://gethue.com/additional-sql-improvements-in-hue-4-3/
1.7
Apache Impala
1.7.1
细粒度权限
同Hive一样,Sentry在Impala中同样也引入了细粒度权限,为角色提供对象级权限。
细粒度的权限包括REFRESH和CREATE,它允许用户创建数据库和表,以及执行更新Impala数据库和表的元数据信息的命令。参考:
http://www.cloudera.com/documentation/enterprise/latest/topics/impala_authorization.html#authorization
以下是新增的权限:
在升级到CDH6.1之前,如果某个角色对Impala中的对象具有SELECT或INSERT权限,则该角色在CDH升级期后会自动获得REFRESH权限。
1.7.2
对象所有权(Object Ownership)
通Hive一样,Object ownership在Sentry中为database,table和view指定一个owner(所有者)。对象的所有者拥有的OWNER权限与对象的ALL权限等效。参考:
https://www.cloudera.com/documentation/enterprise/5/latest/topics/sentry_object_ownership.html
如果启用了object ownership,Sentry会授予用户OWNER权限。无论是否启用object ownership,HMS都会将创建对象的用户存储为默认的对象所有者(object owner)。之前,HMS将Kerberos用户保存为对象所有者(object owner)。
现在在Impala中新增以下语句以使Sentry支持object ownership:
1.7.3
Admission Control和资源管理增强
1.从CDH6.1/Impala3.1开始,Impala会根据查询计划的内存估计值自动为查询选择内存大小,同时它会受到你配置的资源池的mix/max的内存大小的限制。在以前的版本中,你需要为每个资源池设置单个内存限制(通过mem_limit设置)。下面几个参数你可以通过Cloudera Manager进行配置或者直接配置在admission control配置文件中:
具体参考:
https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/impala_admission.html#admission_control
2.改进以防止scan operators在更多场景中容易OOM
3.admission control有很多改进以使内存估值更准确。
4.有两个查询参数用于拒绝复杂查询。这两个参数会基于查询计划器的资源需求和调度被admission control强制执行。
1.7.4
IANA时区支持
现在你可以在Impala中自定义时区数据库,比如IANA
1.--hdfs_zone_info_zip启动标志指定包含IANA时区数据库的zip存档的路径。时区数据库的默认位置是/usr/share/zoneinfo文件夹。具体参考:
https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/impala_custom_timezones.html#custom_timezone
2.--hdfs_zone_alias_conf启动标志指定包含非标准时区别名定义的配置文件的路径。具体参考:
https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/impala_custom_timezones.html#custom_timezone
3.新的TIMEZONE查询选项用于定义UTC和本地时间之间转换的本地时区。默认情况下,coordinator节点的时区使用本地时区。具体参考:
https://www.cloudera.com/documentation/enterprise/6/latest/topics/impala_timestamp.html#timestamp
1.7.5
通用性能改进
新增查询参数SHUFFLE_DISTINCT_EXPRS,使用这参数可以控制你的SQL语句中同时有grouping和distinct的行为。具体参考:
https://www.cloudera.com/documentation/enterprise/release-notes/topics/impala_shuffle_distinct_exprs.html#shuffle_distinct_exprs
1.7.6
元数据性能改进
1.Incremental Stats(增量统计)
以下增强功能可以提高Impala的稳定性。这些特性可以减少使用增量统计时由于内存不足导致catalogd 和impalad崩溃的几率。
具体参考:
https://www.cloudera.com/documentation/enterprise/release-notes/topics/impala_perf_stats.html#pull_incremental_statistics
2.元数据自动失效
注意:该功能还在试验阶段,不建议直接上生产。 |
---|
为了控制元数据的大小并降低catalogd缓存OOM的几率,CDH6.1的Impala引入了自动元数据失效功能,它会按时间或者内存失效。
元数据的自动失效为Impala服务提供了更好的稳定性,同时降低了OOM的几率,但可能会导致性能风险,所以现阶段该功能默认是关闭的。具体参考:
http://www.cloudera.com/documentation/enterprise/latest/topics/impala_config_options.html#auto_invalidate_metadata
1.7.7
兼容性和可用性增强
1.在默认的TIMESTAMP格式中,日期和时间之间支持其他分隔符,特别是多空格分隔符和“T”分隔符。具体参考:
https://www.cloudera.com/documentation/enterprise/release-notes/topics/impala_timestamp.html#timestamp
2.INSERT语句支持新的hint placement,具体参考:
http://www.cloudera.com/documentation/enterprise/latest/topics/impala_hints.html#hints
3.REGEX_ESCAPE()函数可以转义特殊字符,从而可以让你在字符串中逐字处理它们。
4.SHOW CREATE VIEW与SHOW CREATE TABLE具有相同的功能。
5.现在如果启用了load balancer和Kerberos,Impala Shell也可以直接连接到impalad,而以前只能连接到load balancer。具体参考:
http://www.cloudera.com/documentation/enterprise/latest/topics/impala_shell_options.html
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指标
2.Broker topic的指标
3.Replica指标
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的子目录中找到。参考:
https://github.com/apache/kudu/tree/master/examples
2.KUDU-2353:添加了kudu diagnose parse_stacks,这是一种从诊断日志中解析采样stack traces的工具。
3.新增命令行工具可以在tablet server之间rebalance表的副本,使用kudu cluster rebalance命令可以实现该功能。参考:
https://kudu.apache.org/docs/administration.html#rebalancer_tool
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工具增强
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属性。
参考:
https://lucene.apache.org/solr/guide/7_4/metrics-reporting.html#shard-and-cluster-reporters
1.10.2
默认配置值的更改
1.与AutoAddReplicas功能一起使用的autoReplicaFailoverWaitAfterExpiration的默认值从之前的30秒增加到120秒。 这会影响Solr添加新副本的时间,以替换已崩溃或关闭的节点上的副本。
2.默认的Solr日志文件大小已增加到32MB,备份数现在为10。参考:
https://lucene.apache.org/solr/guide/7_4/configuring-logging.html#configuring-logging
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参数。参考:
https://lucene.apache.org/solr/guide/7_4/learning-to-rank.html#running-a-rerank-query
5.不再更新的leader不会被允许成为leader。使用Collections API的FORCELEADER命令允许这些副本成为领导者。
6.自动调节系统的行为会暂停所有从操作开始到冷却期结束之间执行触发器。 在冷却期结束后,触发器将恢复。以前,冷却期是一个固定的时期,在触发事件的动作完成后开始。 在此期间,所有触发器都继续运行,但任何事件都被拒绝,然后过一会再尝试。
7.使用本地参数{!myparser ...}启动查询字符串用于从一个查询解析器切换到另一个查询解析器。它目的是供Solr系统开发人员使用,而不是最终用户进行搜索。为了减少因为黑客攻击的影响,Solr会限制将本地参数解析为默认解析器为“lucene”或“func”的上下文时的情况。
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数据库和表上的元数据信息的命令。具体参考:
https://www.cloudera.com/documentation/enterprise/5/latest/topics/sg_hive_sql.html#privileges
1.11.2
对象所有权(Object Ownership)
Object ownership在Sentry中为database,table和view指定一个owner(所有者)。对象的所有者拥有的OWNER权限与对象的ALL权限等效。
在CDH6.1中,object ownership默认是关闭的。具体参考:
https://www.cloudera.com/documentation/enterprise/5/latest/topics/sentry_object_ownership.html
1.11.3
Group名字大小写敏感
Sentry现在对于group名字会大小写敏感。在以前的版本中,Sentry将操作系统group名称中的大写字母修改为小写。
1.12
Apache Spark
CDH6.1.0中打包的是Spark2.4
1.支持Structured Streaming,参考:
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
2.支持Microsoft ADLS Gen2 Preview存储服务。参考:
https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/spark_adls.html#spark_adls
3.Hive on Spark支持纠删码指标。参考:
https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/erasure_coding_with_hive.html#ec-tools
1.13
Apache Sqoop
1.13.1
增量导入NULL字段并更新到HBase
sqoop-import新增--hbase-null-incremental-mode参数,它允许用户指定在增量导入期间如何处理NULL列更新。参考:
https://www.cloudera.com/documentation/enterprise/6/latest/topics/admin_hbase_import.html
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进行配置。参考:
https://www.cloudera.com/documentation/enterprise/6/latest/topics/cdh_ig_parquet.html
1.13.4
HiveServer2支持
支持通过HiveServer2将数据导入Hive,sqoop import增加了三个新的参数:
该功能没有对Hive导入的默认行为进行任何更改。当用户指定--hs2-url选项时,命令通过JDBC连接发送到HiveServer2。 数据本身不通过JDBC连接传输。 它直接写入HDFS并使用LOAD DATA INPATH命令移动到Hive warehouse,与默认Hive导入一样。
主要HiveServer2支持Sentry授权。因此,Cloudera建议通过HiveServer2而不是默认方法将数据导入Hive。 目前,Sqoop只能使用Kerberos对HiveServer2进行身份验证。参考:
https://www.cloudera.com/documentation/enterprise/6/latest/topics/hive_ingesting_and_querying_data.html
1.13.5
支持导入到Amazon S3
Sqoop现在支持从RDBMS导入到Amazon S3,使用Hadoop-AmazonWeb Services集成的功能。参考:
https://archive.cloudera.com/cdh6/6.0.0/docs/hadoop-3.0.0-cdh6.0.0/hadoop-aws/tools/hadoop-aws/index.html
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。参考:
https://www.cloudera.com/documentation/enterprise/6/latest/topics/cdh_ig_avro_usage.html#topic_26_4/default_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选项可能会导致输出中出现重复或丢失的记录。
示例:
从一个表导入
$ sqoop import ... --table custom_table --split-by id -- --resilient
通过一个查询导入
$ sqoop import ... --query "SELECT ... WHERE $CONDITIONS" --split-by ordered_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