广告位API接口通信错误,查看德得广告获取帮助

电竞之家_品味电竞生活移动版

主页 > 刀塔2 >

Hive 0.13到Hive 2.1跨版本升级全姿势与避坑指南(3)

hive.driver.parallel.compilation参数默认为false,导致HS2只允许同时一个Query编译, 有操作元数据比较多的查询编译读取元数据会比较慢,全局锁会卡住所有其他查询。 需要设置为false,打开允许多个Query同时编译。

7、基于Database的Stats收集策略被弃用

Hive2.1的Stats收集只能使用基于HDFS的策略,而StatsTask是单线程运行读取HDFS上的统计文件(文件数量等于Mapper数量),因为HDFS抖动导致了很多性能问题。 极端情况下,发现过一个statsTask会执行1个小时之久。

我们正在考虑把Stats Task禁掉,或者切换回基于Database的Stats收集策略。

8、Column Pruning时候导致列顺序错误问题

Column Pruning时导致列顺序错误,造成处理时ArrayIndexOutOfBoundsException。 在一些复杂的SQL里增加limit会发生,参考HIVE-14564来解决。

9、我们Team回馈社区的一些patch

Alter table Cascade时候的NPE问题:HIVE-16877

https://issues.apache.org/jira/browse/HIVE-16877

Drop掉分区后执行insert overwrite报错问题(这个问题比较严重,有可能不报错,但是会引入脏数据):HIVE-17063

https://issues.apache.org/jira/browse/HIVE-17063

非当前库内Alter partition的异常问题:HIVE-17309

https://link.zhihu.com/?target=https%3A//issues.apache.org/jira/browse/HIVE-17309

六、其它一些踩过的坑

1、元数据数据库连接数打满问题

元数据直连数据库方式下,当并发服务量非常巨大时候,MySQL默认连接数是4000,比较容易打满。

解决方法:

(1)直连使用BoneCP连接池方式下,maxConnectionsPerPartition默认值为10,一个客户端会建立20个连接,可以降低为2,并且降低连接池的活跃度。 可以考虑在$HIVE_CONF_DIR下增加一个bonecp-config.xml:

512true

(2)提升数据库连接数最大值,可能会有稳定性风险。

(3)使用Metastore Server,这是比较通用的做法,一个Metastore Server扛10000+个客户端连接,后端400个数据库连接毫无压力。

Metastore Server生产化实践可以参考我们的另一篇文章,请Google搜索《Hive Metastore Server生产化实践》。

七、总结

1、升级流程

总结之前的分析,从0.13升级到2.1版本,升级过程可以达到完全灰度和平滑。

具体的升级流程如下:

元数据schema备份。

提前批量校验线上SQL,解决语法兼容性问题。

元数据只升级hive-13076中的脚本,建立KEY_CONSTRAINTS表和表上的索引。

定制化Hive代码,根据使用场景解决2.1里面存在的UDF和其他的一些问题。

开始灰度升级Hive 2.1客户端,HiveServer2,最后是Metastore Server。

Hive2.1客户端稳定后,根据需要部分或者全量来将元数据schema升级到2.1.1版本。

最后依次升级Hive JDBC连接客户端。(非必需)

2、未来计划

未来对于Hive On MapReduce执行慢的问题,我们计划逐渐把主要SQL引擎切换SparkSQL,Hive只承担兜底和降级的角色。

同时我们计划实现一个统一的大数据平台SQL引擎,在计算引擎层,合并Kylin、Presto、SparkSQL和Hive等几种引擎, 提供一个统一的路由层,发挥各个引擎的最佳性能; 在数据缓存层,结合SQL画像和历史执行情况,缓存中间热表数据,自动建立Kylin Cube。 在数据存储层,引入CarbonData文件格式,做数据层索引加速。 同时由于Hive定义的元数据规范已经成为大数据平台的事实标准,我们会继续沿用这种标准,所以在和社区一起推动CarbonData和Hive元数据的兼容,欢迎关注CarbonData。

目前正在开发阶段,敬请期待后继的介绍文章。

八、附录

1、Hive JDBC客户端和HiveServer2各版本之间兼容性

Hive 0.13到Hive 2.1跨版本升级全姿势与避坑指南

2、从0.13开始的元数据Schema升级明细和影响分析

github gist

https://link.zhihu.com/?target=https%3A//gist.github.com/ericsahit/9622411305e42bf6735197fdec612794

(责任编辑:波少)
广告位API接口通信错误,查看德得广告获取帮助