1.内存不足
修改文件内容 <文件根目录>/bin/flume-ng
JAVA_OPTS="-Xms100m -Xmx4096m -Dcom.sun.management.jmxremote" 内存调大
2.采集kafka数据或者生产kafka数据的的时候默认数据大小是1M,所以使用flume工具导数据如果大于1M,需要添加配置参数
配置文件 <文件根目录>/bin/conf/启动第对应配置文件
采集kafka数据配置source agent.sources.r1.kafka.consumer.max.partition.fetch.bytes = 10240000
导入kafka数据配置sink agent.sinks.k1.kafka.producer.max.request.size = 10240000
3.导一条数据的大小超过默认大下2048字节,这一条数据会被拆成两条数据,导致数据格式异常
修改默认的一条数据最大值
源码包 flume-ng-core-1.8.0.jar ,重新放入lib中
修改的类位置 org.apache.flume.serialization.LineDeserializer
修改参数 public static final int MAXLINE_DFLT = 1048576 ; //调大
4.使用flume数据源为kafka,sink也为kafka,导致数据传输无响应问题
自定义sink ,默认数据能走到sink,只是在sink发送到kafka的时候失败了,这一块儿需要用java自定义发送数据到kafka
flume采集目录数据
a1.sources = yuan
a1.sinks = zhong
a1.channels = cun
a1.sources.yuan.type = spooldir
a1.sources.yuan.spoolDir = /home/shell/test/
a1.sources.yuan.fileHeader = true
a1.sources.yuan.includePattern = (^[0-9]{20}\\_CDSS\\_[0-9]{14}\\.TXT$) #文件正则匹配
a1.sources.yuan.recursiveDirectorySearch = true # 表示递归采集
#a1.sources.yuan.ignorePattern = .*log$
a1.sinks.zhong.type = org.ncmsa.cmpdcs.common.sink.mongdb.LinkDataMongoDBSink
a1.sinks.zhong.mongo.url = 127.0.0.1:17
a1.sinks.zhong.mongo.batch = 200
a1.sinks.zhong.end.symbol = ::
a1.sinks.zhong.database.name = db
a1.sinks.zhong.collection.name = aqjk_rt_sensormonitor
a1.sinks.zhong.mongo.thread = 1
a1.channels.cun.type = memory
a1.channels.cun.capacity = 10000
a1.channels.cun.transactionCapacity = 5000
a1.sources.yuan.channels = cun
a1.sinks.zhong.channel = cun
flume启动方式