分享

flume按日期分目录存储和自定义日志的文件名

semion 2014-9-9 19:35:53 发表于 疑问解答 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 21 105150
semion 发表于 2014-12-23 10:35:34
304974525@qq.co 发表于 2014-12-23 10:17
请教个问题,在flume的二次开发过程中,我怎么调试我的代码呢,flume可以在本地进行调试吗?

有源码就可以啊
回复

使用道具 举报

304974525@qq.co 发表于 2014-12-23 10:54:45
semion 发表于 2014-12-23 10:35
有源码就可以啊

新手,没用过maven,源码编译以后怎么在我的IDE里面跑起来?
回复

使用道具 举报

semion 发表于 2014-12-23 14:00:00
304974525@qq.co 发表于 2014-12-23 10:54
新手,没用过maven,源码编译以后怎么在我的IDE里面跑起来?

把源码包导入到你的工程下,包flume自带的对应的jar包(class文件)删掉,就可以了呀
回复

使用道具 举报

天行健 发表于 2015-8-12 13:08:07
我现在要做的是,收集十几台机器上的日志,然后汇集到一台机器,通过这台机器上传hdfs汇集到的日志,现在我遇到的问题是,怎么按照自己定义的目录上传文件啊,分开这些日志?具体怎么配置楼主有经验吗?
回复

使用道具 举报

zxmit 发表于 2015-8-13 14:38:45
天行健 发表于 2015-8-12 13:08
我现在要做的是,收集十几台机器上的日志,然后汇集到一台机器,通过这台机器上传hdfs汇集到的日志,现在我 ...

1. 在Event的header中保存每个机器的ip或者hostname,其中key值为host;2. Hdfs Sink 的path属性设置用%{host}:a1.sinks.k1.hdfs.path = /flume/events/%{host}/%y-%m-%d/%H%M/%S



不知道是不是你需要的答案。
回复

使用道具 举报

天行健 发表于 2015-8-13 17:00:01
zxmit 发表于 2015-8-13 14:38
1. 在Event的header中保存每个机器的ip或者hostname,其中key值为host;2. Hdfs Sink 的path属性设置用%{ ...

#定义agent名, source、channel、sink的名称
a4.sources = r1
a4.channels = c1
a4.sinks = k1

#具体定义source
a4.sources.r1.type = org.apache.flume.chiwei.filemonitor.FileMonitorSource
#a4.sources.r1.spoolDir =/home/hadoop/work/logs
a4.sources.r1.file=/home/hadoop/work/logs/bizlogic.log
a4.sources.r1.positionDir=/home/hadoop/work/logs

#具体定义channel
a4.channels.c1.type = file


#定义拦截器,为消息添加时间戳
a4.sources.r1.interceptors = i1
a4.sources.r1.interceptors.i1.type = org.apache.flume.interceptor.TimestampInterceptor$Builder
a4.sources.r1.basenameHeader=true
a4.sources.r1.basenameHeaderKey =basename
a4.sources.r1.interceptors = i1 i2
a4.sources.r1.interceptors.i1.type = static
a4.sources.r1.interceptors.i1.key = tadu
a4.sources.r1.interceptors.i1.value = CHINA
a4.sources.r1.interceptors.i2.type = static
a4.sources.r1.interceptors.i2.key = tadu1
a4.sources.r1.interceptors.i2.value = ceshi



a4.sinks.k1.type = hdfs
a4.sinks.k1.hdfs.path = hdfs://hadoop6:9000/flume/%{tadu}
a4.sinks.k1.hdfs.fileType=DataStream
a4.sinks.k1.hdfs.filePrefix=%{basename}
a4.sinks.k1.hdfs.rollCount = 0
a4.sinks.k1.hdfs.rollSize = 134217728
a4.sinks.k1.hdfs.rollInterval = 60
a4.sinks.k1.hdfs.writeFormat=TEXT
a4.sinks.k1.hdfs.round=true
a4.sinks.k1.hdfs.roundValue=5
a4.sinks.k1.hdfs.roundUnit=minute
a4.sinks.k1.hdfs.useLocalTimeStamp=true

#组装source、channel、sink
a4.sources.r1.channels = c1
a4.sinks.k1.channel = c1
基本就是这个思路,已经实现

回复

使用道具 举报

小伙425 发表于 2015-9-10 11:49:27
pig2 发表于 2014-9-9 20:02
一步步来,先自己搭建个环境,有个感性认识就不会产生这样的问题了。如何搭建,可以参考下面的内容。让你快 ...

我想问一下,我是刚接触这东西的,现在我们的需求是用flume去拿去日志文件,但是小文件会特别多,之后会存储在hbase中,之间不需要mr去操作的话,对于这些小文件flume有自己的处理方式吗?如果用mr处理的话可以减少小文件的数量,但是现在不想写mr,想知道flume是否有自己的方式可以处理?麻烦了

回复

使用道具 举报

muyannian 发表于 2015-9-10 15:20:08
小伙425 发表于 2015-9-10 11:49
我想问一下,我是刚接触这东西的,现在我们的需求是用flume去拿去日志文件,但是小文件会特别多,之后会 ...

flume只是用来搜集数据的,外部的操作不了
回复

使用道具 举报

小伙425 发表于 2015-9-10 15:49:02
muyannian 发表于 2015-9-10 15:20
flume只是用来搜集数据的,外部的操作不了

我现在在服务器上的既有日志又有图片或者mv什么的,我现在抓取的话怎么处理?而且小文件会比较多,我现在想把小文件合并或者处理下,减少小文件的数量,因为如果用mr处理的话,实际就是flume抓紧的数据作为mr的输入,进行切分,如果小文件过多,会影响map数的,会产生过大的开销的,我之前在看flume时,我看里面可以简单的对抓取到的数据做简单的处理聚合的,我现在的想法是对小文件使用avro进行序列化,或者压缩,或者其他,没有想好,也没有什么太好的想法,因为可能我的日志需要存在hbase中,不要mr处理的,其他文件呢存在hdfs上也没啥要处理的,所以有点迷茫,求指教
回复

使用道具 举报

jancan 发表于 2015-9-14 22:46:45
非常有用,谢谢
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条