分享

linux定时任务 shell编写。求大神出山!

zhangshuai 发表于 2015-6-30 15:44:43 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 11 39203
     当前环境是:一个文件 在/ROOT 下面。我的flume监控了/ROOT/LOG/这个目录,当文件MV /ROOT 到/ROOT/LOG这个目录的话,flume会自动采集数据导HDFS上面,我们是定时MV 文件到/ROOT/LOG下,然后又是一个定时load 到hive中。


    问题来了!看好了哈!当我定时任务去MV 文件到/ROOT之后 flume开始采集了,这个采集过程是不是要时间?对得!要时间,但是定时任务认为自己的任务结束了,然后去执行下一个定时任务了load到了hive。可是!采集还没完成就直接load了。导致hive是空数据哟!咋办呢?



    以上问题大家有什么好的办法或者建议么....


已有(11)人评论

跳转到指定楼层
想ai抽 发表于 2015-6-30 16:26:50
写到一个shell里不就成了,有次序的任务,分开定时,咋能保证线性执行
回复

使用道具 举报

想ai抽 发表于 2015-6-30 16:27:21
这两个任务应该被看做一个事务被处理
回复

使用道具 举报

Alkaloid0515 发表于 2015-6-30 16:30:35
感觉好复杂,
我们是定时MV 文件到/ROOT/LOG下,然后又是一个定时load 到hive中。

使用了flume之后,这个文件会可能会发生变化的。
为什么不直接在原始文件中load。非要到flume监控目录中去load
回复

使用道具 举报

zhangshuai 发表于 2015-6-30 17:03:23
想ai抽 发表于 2015-6-30 16:26
写到一个shell里不就成了,有次序的任务,分开定时,咋能保证线性执行

就是在一个shell中,mv之后 定时任务自己就认为完成了 是不是执行下一个任务load进hive中了?然而现在flume正在采集需要时间。这样数据就进不去hive了吧?
回复

使用道具 举报

zw2002 发表于 2015-6-30 17:16:15
中间可以加个sleep函数,给mv时间。
回复

使用道具 举报

pig2 发表于 2015-6-30 18:04:09
zhangshuai 发表于 2015-6-30 17:03
就是在一个shell中,mv之后 定时任务自己就认为完成了 是不是执行下一个任务load进hive中了?然而现在flu ...

按照事务的方式,前面没有完成,后面是不能执行的。
按照你前面的方式,是有可能并发的
回复

使用道具 举报

arBen 发表于 2015-7-1 08:27:52
.....无非就是写成一个shell脚本....按顺序执行......
回复

使用道具 举报

redhat1986 发表于 2015-7-1 08:38:54
把你现在的shell贴出来看看
回复

使用道具 举报

coolfish_a 发表于 2015-7-1 16:23:18
可以采用类似标志位的文件控制
例如:
1.建个flag.txt 写个1进去
2.flume采集完,更改flag.txt值echo 2 >flag.txt
3.判断flag.txt值,是2 去执行load进hive 是1 等待flume采集完成
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条