DolphinScheduler无故删除HDFS上的Hive库表目录
Posted 光于前裕于后
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DolphinScheduler无故删除HDFS上的Hive库表目录相关的知识,希望对你有一定的参考价值。
亲爱的朋友们,我可爱的同事又搞了个大BUG
待我慢慢道来…
DolphinScheduler大家应该都用过,中国人开源的一个调度工具,类似Azkaban,本次的事情就是在DolphinScheduler上发生的。
据领导描述,某团队负责的某业务数仓上云后,HDFS上的Hive库表目录总是无故被删,他们找不到原因,让我协助处理一下。
本来某业务数仓上云是一个很简单的工作,对于DolphinScheduler上的任务而言,只需要把工作流导出,然后导入到云上的DolphinScheduler,不幸的是XX云上的Sqoop不能用,所以本来用Sqoop的任务需要改成DataX,从而发生了后面的事情。
处理流程:
1.开启HDFS审计
2.日志寻找删库目录操作,没有搜到。因为之前云上环境问题,我已经不相信XX云,现在日志也搜不到,让我更加怀疑是XX云的问题
3.挨个执行任务,每执行完一个看历史数据是否还在
4.定位问题任务,我重复试了几遍,怕自动删除与执行任务时间重合,后来确认就是这个任务问题
5.打印变量(空格看不出来)
6.比对此任务脚本与正常任务区别,没有任何区别
7.注释其它行,定位问题行
hdfs dfs -rm -r -f /user/hive/warehouse/ods.db/$table_name/*
8.查看审计日志,发现删的不是库目录,而是根目录下的整个/user以及/tmp
9.发现自定义参数中空格
不选中根本看不出来空格,就是因为这个空格,导致之前的命令变成
hdfs dfs -rm -r -f /usr/hive/warehouse/ods.db/ods_test /*
形成了 rm -rf /*操作,幸亏该用户权限不大,不然后果更严重。
现在来看,开启HDFS日志审计十分有必要,开始没有直接定位问题是没有想到删的不是库表,而是整个根目录,所以在日志中没有搜到,也幸亏该用户权限不大,只删除了/user和/tmp,没有造成更严重的后果。
以上是关于DolphinScheduler无故删除HDFS上的Hive库表目录的主要内容,如果未能解决你的问题,请参考以下文章
dolphinscheduler 2.0.6 资源中心改造(使用本地文件系统,不再依赖HDFS)