如何清理Sqoop脚本产生的临时编译目录

Posted Hadoop实操

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何清理Sqoop脚本产生的临时编译目录相关的知识,希望对你有一定的参考价值。

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


Fayson的github:

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


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


1.文档编写目的



在使用Sqoop命令进行数据抽取时,执行的抽数脚本会在/tmp/sqoop-$user/compile目录下产生临时的编译文件,脚本执行成功后这些生成的临时文件并不会自动的清除。该问题是官网已知的一个JIRA,具体可信息如下链接:

​https://issues.apache.org/jira/browse/SQOOP-3042​


如何清理Sqoop脚本产生的临时编译目录_hadoop


本篇文章Fayson主要介绍通过脚本的方式,在用户执行Sqoop命令时自动的清理产生的临时编译目录。


  • 内容概述

1.环境准备

2.Sqoop配置清理脚本及验证

3.总结


  • 测试环境

1.RedHat7.3

2.CM和CDH版本为5.15


2.环境准备



1.在集群所有节点安装tmpwatch,命令如下:


[root@cdh03 ~]# yum -y install tmpwatch

(可左右滑动)


如何清理Sqoop脚本产生的临时编译目录_sqoop_02


2.通过CM安装“Sqoop 1 Client1”服务


如何清理Sqoop脚本产生的临时编译目录_sqoop_03


选择Gateway节点


如何清理Sqoop脚本产生的临时编译目录_hadoop_04


部署客户端配置


如何清理Sqoop脚本产生的临时编译目录_sqoop_05


Sqoop 1 Client服务安装成功


如何清理Sqoop脚本产生的临时编译目录_sqoop_06


3.Sqoop配置清理脚本



1.进入“Sqoop 1 Client”服务的配置界面


如何清理Sqoop脚本产生的临时编译目录_hadoop_07


2.在搜索栏,搜索“sqoop-env.sh”,在配置项中增加如下脚本


#清除一天前当前用户临时编译目录
expires=1d
echo
echo SQOOP COMPILE DIR DIRECTORY COUNT
ls -ltd /tmp/sqoop-"$USER"/compile/* | wc
echo SQOOP COMPILE DIR FILES COUNT
ls -ltR /tmp/sqoop-"$USER"/compile/* | wc
echo SQOOP COMPILE DIR OLDEST DIRECTORY
ls -ltd /tmp/sqoop-"$USER"/compile/* | tail -1
echo SQOOP COMPILE DIR TMPWATCH $expires DELETE TEST
tmpwatch --test $expires /tmp/sqoop*/compile/ | wc
echo SQOOP COMPILE DIR TMPWATCH $expires DELETE
tmpwatch $expires /tmp/sqoop-"$USER"/compile/ | wc
echo SQOOP COMPILE DIR DIRECTORY COUNT
ls -ltd /tmp/sqoop-"$USER"/compile/* | wc
echo SQOOP COMPILE DIR FILES COUNT
ls -ltR /tmp/sqoop-"$USER"/compile/* | wc
echo SQOOP COMPILE DIR OLDEST DIRECTORY
ls -ltd /tmp/sqoop-"$USER"/compile/* | tail -1
echo

(可左右滑动)


如何清理Sqoop脚本产生的临时编译目录_hadoop_08


3.保存配置并重新部署客户端配置


如何清理Sqoop脚本产生的临时编译目录_hive_09

如何清理Sqoop脚本产生的临时编译目录_sqoop_10


4.验证脚本



这里Fayson将清理脚本设置为1h即清理1小时前生成的编译文件及目录。


如何清理Sqoop脚本产生的临时编译目录_sqoop_11


1.查看root用户的/tmp/sqoop-root/compile目录下的编译目录


如何清理Sqoop脚本产生的临时编译目录_hive_12


compile目录下有两个编译目录,885f8开头目录的创建时间在1个小时前。


2.使用sqoop命令进行数据抽取


sqoop import \\
--connect "jdbc:mysql://cdh02.fayson.com:3306/metastore" \\
--username root \\
--password 123456 \\
--query select c.NAME,c.DB_LOCATION_URI,a.TBL_NAME,a.OWNER,a.TBL_TYPE,b.LOCATION from TBLS a,SDS b,DBS c where a.SD_ID=b.SD_ID and a.DB_ID=c.DB_ID and $CONDITIONS \\
--fields-terminated-by , \\
--delete-target-dir \\
--hive-database default \\
--target-dir /tmp/hive_tables \\
--create-hive-table \\
--hive-import \\
--hive-overwrite \\
--hive-table hive_tables \\
--m 1

(可左右滑动)


如何清理Sqoop脚本产生的临时编译目录_hive_13


可以看到在执行sqoop命令时,会输出上图标注部分的日志信息,即为Fayson配置清理脚本输出的日志。


3.查看/tmp/sqoop-root/compile目录的编译目录


如何清理Sqoop脚本产生的临时编译目录_hive_14


可以看到compile目录下,“885f8”开头在一个小时前的日志目录已被清理。


5.总结



1.Sqoop没有自动清除/tmp/sqoop-$user/compile下的编译目录,在3.0.0版本才被修改,在CDH中的Sqoop也并未修复该问题。



2.本文Fayson通过在Sqoop的运行环境中添加清理脚本,来实现编译目录的清理。


3.默认情况是不需要安装“Sqoop 1 Client”服务的,因为需要借助于CM统一的在Sqoop的运行环境中添加脚本。



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


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

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



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

如何清理Sqoop脚本产生的临时编译目录_hive_15

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


以上是关于如何清理Sqoop脚本产生的临时编译目录的主要内容,如果未能解决你的问题,请参考以下文章

VS 清除编译产生的临时文件文件夹

Linux系统下/tmp目录下的临时文件怎么清理?

ubuntu 清理磁盘空间

编个java程序 清理IE临时文件

线上系统/tmp 目录不断增长分析与总结

oozie sqoop 操作导入失败