0
点赞
收藏
分享

微信扫一扫

0653-5.16.1-Hive Staging目录占用大量HDFS空间问题分析


温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。




Fayson的github:

​​https://github.com/fayson/cdhproject​​




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



1

问题现象


  • 测试环境

1.Redhat7.4

2.CDH5.16.1


在HDFS上有许多Hive Staging目录,占用了大量的空间,有些目录占用的空间甚至比原始表还大,如下截图显示:


0653-5.16.1-Hive Staging目录占用大量HDFS空间问题分析_hive


2

异常重现及分析


1.使用beeline、hive、spark-shell等多种方式执行Hive SQL语句验证产生的hive staging目录是否不会被清除,结果发现在SQL执行结束后产生的staging文件均会自动被移除。


2.使用Hue上的Hive Editor来进行验证,发现执行的SQL产生的staging目录在SQL执行完成后并不会被清除,在Hue上执行一个Hive的Insert语句


0653-5.16.1-Hive Staging目录占用大量HDFS空间问题分析_hadoop_02


使用hadoop命令看到在相应表下生成的hive-staging_hive_xxx的临时目录一直存在并未因为SQL执行完成而清除掉。


0653-5.16.1-Hive Staging目录占用大量HDFS空间问题分析_hadoop_03


根据上述分析发现,出现上述问题的原因主要是由于在Hue上使用Hive Editor执行查询导致。Hue为了让用户能够查看历史执行SQL及返回结果,所以必须确保每个查询的结果是可以打开的。


因此,Hue上在查询执行期间创建的staging目录,Hive的清除事件永远不会被调用,也就导致了所有通过Hue运行的查询创建的staging目录永远不会被删除。


接下来针对上述问题进行提出两种解决方案,具体看如下说明。


3

问题解决 

3.1

解决方案一


通过设置用户离开Hive的查询界面时强制Hue关闭查询,可以通过如下方式操作:


1.登录CM进入Hue的配置界面


0653-5.16.1-Hive Staging目录占用大量HDFS空间问题分析_sql_04


2.在搜索栏输入“hue*.ini”在配置项中增加如下内容


[beeswax]
close_queries=true


0653-5.16.1-Hive Staging目录占用大量HDFS空间问题分析_hive_05


3.完成上述配置后重启Hue服务即可


注意:上述解决方法也存在弊端,用户无法再通过Hue查看历史执行的SQL语句及查询结果,且用户在执行查询时离开Hive的编辑页面,则正在执行的查询也会关闭(查询不会后台运行)。


3.2

解决方案二


通过设置HiveServer2的以下参数来控制会话和操作/查询的超时时间。


hive.server2.session.check.interval = 1 hour
hive.server2.idle.operation.timeout = 1 day
hive.server2.idle.session.timeout = 3 days


hive.server2.idle.operation.timeout:表示执行的操作及查询超过1天将会被关闭。

参数hive.server2.idle.operation.timeout:调试HiveServer2会话在空闲状态超过3天将会关闭。

hive.server2.session.check.interval:每个小时检查一次。


1.登录CM进入Hive的配置界面


0653-5.16.1-Hive Staging目录占用大量HDFS空间问题分析_sql_06


2.根据自己当前集群使用情况和查询时间适当的修改这些值,如下截图为Fayson测试修改的参数


0653-5.16.1-Hive Staging目录占用大量HDFS空间问题分析_hive_07

0653-5.16.1-Hive Staging目录占用大量HDFS空间问题分析_sql_08


4

总结


1.在Hue上的Hive编辑器执行SQL查询时,由于Hue上需要保存历史查询SQL及结果,所以会导致执行SQL过程中查询的staging目录没有被Hive的清除事件删除。

2.可以通过修改Hue的配置,指定close_queries=true,当用户离开Hive的编辑器页面后Hue会强制关闭查询,该解决方法会有一定的弊端。

3.也可以通过配置HiveServer2的会话、操作/查询的超时时间来关闭查询,该方法可以根据集群的使用情况及查询时间适当的调整。


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

为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


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

0653-5.16.1-Hive Staging目录占用大量HDFS空间问题分析_hive_09

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





举报

相关推荐

0 条评论