在同时使用Hive+Sentry,因HMS死锁导致的高并发写入工作负载时,查询速度缓慢或者停滞

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

Fayson的github:https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1.总结


一些查询请求或者工作负载会导致Hive Metastore(HMS)的死锁。

2.症状


在受影响的版本中,某些工作负载可能导致Hive Metastore(HMS)死锁。内部的自动机制可以从这种死锁中恢复。但是,在高并发且写入较重的工作负载中,HMS从死锁中恢复比查询作业的执行时间还长,于是导致HMS的性能下降或者挂起。反过来影响HiveServer2的性能,从而影响查询性能。

升级到受影响的版本后,如果工作负载的性能急剧恶化或停滞,你可能遇到了这个问题。如果你使用MySQL或MariaDB作为元数据库的话,你会在HMS中的日志看到以下错误。

com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction

(可左右滑动)

注意:在Oracle和PostgreSQL上,不会打印此消息,此问题与数据库无关

以下三种情况说明具体如何影响你:

1.如果你正在使用受影响的版本并使用Hive和Sentry,请参考下面的“解决办法”章节。

2.如果你使用受影响的版本,但不使用Hive和Sentry,则不需要执行任何操作。

3.如果你未使用受影响的版本并且你使用的是Hive和Sentry,请勿升级到受影响的版本。

3.适用版本


1.CDH5.13.0, 5.13.1, 5.13.2

2.CDH5.14.0

3.同时使用Hive和Sentry

4.解决办法1


1.升级到5.13.3或更高版本

2.升级到5.14.2或更高版本

5.解决办法2


如果你无法升级,为缓解此问题,请修改一下配置:

1.使用Cloudera Manager进入“Hive> Configuration>Search”,搜索“Hive Metastore Server Advanced Configuration Snippet (Safety Valve) for hive-site.xml”。

2.点击+号增加以下内容:

设置“hive.metastore.transactional.event.listeners”为空值

设置“hive.metastore.event.listeners”为“org.apache.hive.hcatalog.listener.DbNotificationListener”,如下图所示:

3.重启HMS服务使配置生效。

使用此解决方法的副作用可能是某些DDL查询(如删除表和使用相同名称创建的新表)失败,并显示报错“No valid privileges”。重新运行这些查询应该可以解决该问题。

如果做了上述修改后问题仍然存在,考虑升级到推荐的新版本。

6.总结


在CDH5.15发布之前,目前较新的版本推荐的是5.13.3或5.14.2。

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

原文发布于微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文发表时间:2018-04-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hadoop实操

Cloudera Manager分发Parcel异常分析

在使用Cloudera Manager分发Parcel包时一直处于激活状态不变,相关CM日志及CM界面截图如下:

9397
来自专栏闵开慧

job监控与hadoop权限管理

监测Hadoop控制中心及作业运行状况 MapReduce框架由一个单独的Master JobTracker和集群节点上的Slave TaskTracker共...

40812
来自专栏Hadoop实操

Sentry赋予server1权限给hive以外用户时ACL不同步问题分析

在使用Sentry赋予server1所有权限给hive以外的用户时(如:fayson用户默认用户组也是fayson),通过Hue使用fayson用户登录,Sen...

5745
来自专栏牛肉圆粉不加葱

YARN 设计理念与基本架构

ResourceManager 是一个全局的资源管理器,负责整个集群的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(App...

1001
来自专栏Hadoop实操

如何在CDH集群中安装Hive2.3.3

6053
来自专栏实用工具入门教程

如何部署 Hadoop 集群

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。...

4352
来自专栏企鹅号快讯

如何使用java代码通过JDBC访问Sentry环境下的Hive

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproje...

2839
来自专栏个人分享

Hadoop on Yarn 各组件详细原理

  运行在独立的节点上的ResourceManager和NodeManager一起组成了yarn的核心,构建了整个平台。ApplicationMaster和相应...

1511
来自专栏Hadoop实操

5.如何为Impala配置OpenLDAP认证

在前面的文章Fayson讲了《1.如何在CentOS6.5安装OpenLDAP并配置客户端》、《2.OpenLDAP集成SSH登录并使用SSSD同步用户》、《3...

5644
来自专栏Hadoop实操

如何使用Nginx实现Impala负载均衡

在使用Impala JDBC连接Impala服务时,默认是不带负载均衡的,但一个Impala Daemon很可能会产生单点的问题,这里我们就需要考虑Impala...

5628

扫码关注云+社区

领取腾讯云代金券