flume采集数据易出现的bug

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启动方式

/bin/flume-ng  agent --name a1 --conf/conf --conf-file /conf/sink.dir-mongodb.conf -Dflume.root.logger=INFO,console

你可能感兴趣的:(大数据工具)