专栏首页Hadoop实操如何清理Sqoop脚本产生的临时编译目录

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

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

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

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

1.文档编写目的


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

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

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

  • 内容概述

1.环境准备

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

3.总结

  • 测试环境

1.RedHat7.3

2.CM和CDH版本为5.15

2.环境准备


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

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

(可左右滑动)

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

选择Gateway节点

部署客户端配置

Sqoop 1 Client服务安装成功

3.Sqoop配置清理脚本


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

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

(可左右滑动)

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

4.验证脚本


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

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

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命令时,会输出上图标注部分的日志信息,即为Fayson配置清理脚本输出的日志。

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

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

5.总结


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

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

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

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

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

本文分享自微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-19

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 0556-6.1.0-Hive On Spark修改作业临时配置文件生成目录

    在Hive On Spark的模式下,无论是通过Beeline还是hive CLI访问Hive,使用Spark引擎执行SQL语句时,都会在/tmp目录下生成一个...

    Fayson
  • Sqoop抽取Hive Parquet表数据到MySQL异常分析

    在CDH集群中我们需要将Hive表的数据导入到RDBMS数据库中,使用Sqoop工具可以方便的将Hive表数据抽取到RDBMS数据库中,在使用Sqoop抽取Hi...

    Fayson
  • 0559-02-如何在Redhat7上安装FreeIPA的客户端

    Fayson在前面的文章《0558-01-如何在Redhat7上安装FreeIPA》介绍了FreeIPA的安装及使用,本篇文章Fayson主要介绍如何在RedH...

    Fayson
  • C# SQL多条件查询拼接技巧

    本文转载:http://blog.csdn.net/limlimlim/article/details/8638080

    跟着阿笨一起玩NET
  • ntp同步时钟的使用方法

    北斗时间服务器是对现代高科技自动化系统中的计算机及控制装置等进行校时的高科技产品。NTP协议用于把计算机或者其他的网络设备的时间同步到标准的UTC时间。网络时钟...

    时频专家
  • 初学Redis(1)——认识Redis

    http://blog.csdn.net/qtyl1988/article/details/39553339

    bear_fish
  • 3d魔方动画

    河湾欢儿
  • HTTP/2协议之二进制桢【原理笔记】

    HTTP/2的报文是以二进制桢发送的。那桢格式、桢大小、桢类型是怎么样的?本文会整理桢的格式以及十种桢类型。

    瓜农老梁
  • Redis服务器被劫持风波

    ? 作者:当年的春天 来源: http://blog.csdn.net/zhanghan18333611647/article/details/5712827...

    小小科
  • 如何在Centos7上安装保护Redis

    Redis是一个开源的内存数据结构存储,擅长缓存。Redis是一个非关系型数据库,以其灵活性,性能,可伸缩性和广泛的语言支持而闻名。

    大瓜皮

扫码关注云+社区

领取腾讯云代金券