分享

【求教】Flume+Hive中数据完整性的问题

Leyni 发表于 2015-1-22 16:43:48 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 3 24147
本人刚接触Flume,还不太熟悉,还望各位不吝赐教。

应用场景:
用Flume实时采集日志到HDFS,按小时切割目录。然后每小时定时启动ETL程序将HDFS导入到Hive中。

遇到的问题:
1、ETL在采集上来的HDFS文件时,怎么check当前目录的数据是completed。
2、如果期间一个小时内没有任何数据,就没有write操作,就不会触发创建当前小时的目录。
怎么解决数据空洞的问题,希望是即便没有数据,也留一个空文件夹。

想到的几个解决办法:
1、根据是否出现下一个小时的目录来判定,因为是按小时切目录,下个小时出现,一定上个小时ready
缺点:应用场景狭隘,要求Flume切割目录的时间粒度和ETL的调度粒度一致。
而且在不解决上面问题2的情况下,该方案还会有其他问题。

2、检查当前文件夹中是否存在.tmp文件,将idleTimeout设为0(关掉自动close)。

不过上述两个方案都还没有解决问题2。

想请教各位,这种应用场景下,如何配合Flume的特性实现Hive数据的导入。

已有(3)人评论

跳转到指定楼层
starrycheng 发表于 2015-1-22 17:24:12
这个其实不应该有flume来处理,这样flume的任务就有点重了。
除非二次开发,判断时间到了,flume传递一个空内容。

还有另外一种就是通过第三方程序,也就是谁读取这个数据,谁来处理下。
回复

使用道具 举报

Leyni 发表于 2015-1-22 18:27:08
starrycheng 发表于 2015-1-22 17:24
这个其实不应该有flume来处理,这样flume的任务就有点重了。
除非二次开发,判断时间到了,flume传递一个 ...

感谢及时的回复。

Flume+Hive,我觉得应该会有很多地方用到,因此刚才查了一些关于Flume+Hive的解决方案,想必会遇见一些相同的问题。

不过发现很少人有我这样的以为(有一个人有类似的问题),几乎所有的解决方案中都是这样做的:
Flume的output path 直接就是Hive Table的data path,也就说Flume直接写到Hive WareHouse目录下(或者外部依赖),Hive只是定时创建partition即可。

目前正在考虑该方案的其他问题,目前的顾虑是:
这样的方案的假设前提是,Flume正常运作,在异常情况下,会不会出现问题?

当然,目前我的应用场景貌似可以适应,因为数据输出,是完全按当前时间划分的,因此即便有延迟,重启后采集的数据,也是会输出到当前时间上,而不是之前的时间上的文件夹。
或者说,保证数据一定是历史不可变的。那我觉得直接创建partition应该是没啥问题。

相关的一些资料如下,具体其他的问题我在想想(直接往HiveWareHouse下写,总觉得不放心):
https://cwiki.apache.org/conflue ... +process+Flume+data

回复

使用道具 举报

Leyni 发表于 2015-1-22 18:28:18
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条