flume与spark相结合做离线、实时分析的疑惑?

版本:flume 1.7.0 spark1.6.1
 
在设计 flume与spark相结合做离线、实时分析时,采用flume1.7.0的TAILDIR source实时监控目录文件的变化。离线:以一个小时吐一个hdfs文件出来,实时:sparkStreaming 本来就支持 可以直接消费flume
没有打算用kafka,flume直接把数据拉到hdfs上,若要用kafka,还需要拉一份数据到kafka上,这样元数据相当于要维护两份,感觉到时元数据信息有可能出现不一致的情况,就摒弃了
kafka(反正sparkStreaming可以直接消费hdfs上的数据或者接收Flume以avro形式发送的数据).这样设计好吗?
麻烦老师,能在flume与spark相结合做离线、实时分析时 能给点建议吗?谢谢!
 flume的设计如下:
a1.sinks = k1,k2
# define the source
a1.sources.r1.type = TAILDIR
a1.sources.r1.channels = c1
a1.sources.r1.positionFile = /app/gslb.json
a1.sources.r1.filegroups = f1
a1.sources.r1.filegroups.f1 = /app/openresty/nginx/logs/tracker.otvcloud.com_access.log
a1.sources.r1.headers.f1.headerKey1 = gslb
a1.sources.r1.fileHeader = true

#define the file channel
a1.channels.c1.type = file
a1.channels.c1.checkpointDir = /app/flume/checkpoint/gslb/
a1.channels.c1.dataDirs = /app/flume/data/gslb/
a1.channels.c1.capacity = 200000000
a1.channels.c1.transactionCapacity = 6000
a1.channels.c1.checkpointInterval = 60000

# define the hdfs sink
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://hdfscluster/apps/flume/gslb/%Y-%m-%d/%k/
a1.sinks.k1.hdfs.useLocalTimeStamp = true
a1.sinks.k1.hdfs.fileType = DataStream
a1.sinks.k1.hdfs.writeFormat = Text
a1.sinks.k1.hdfs.encoding = UTF-8
a1.sinks.k1.hdfs.minBlockReplicas = 1
a1.sinks.k1.hdfs.filePrefix=a1_%Y%m%d_%H
a1.sinks.k1.hdfs.inUsePrefix = .
a1.sinks.k1.hdfs.inUseSuffix = .temp
a1.sinks.k1.hdfs.fileSuffix = .log
a1.sinks.k1.hdfs.rollInterval = 3600
a1.sinks.k1.hdfs.rollSize = 0
a1.sinks.k1.hdfs.rollCount = 0
a1.sinks.k1.hdfs.callTimeout = 60000
a1.sinks.k1.hdfs.idleTimeout = 600

# define the avro sink
a1.sinks.k2.type = avro
a1.sinks.k2.hostname = master
a1.sinks.k2.port = 33333

caocao_mdj

赞同来自:

以前我也是直接flume接spark,需要的问题有2个: 1. 性能。有人说数据量太大的时候flume挺不住,不得不切换到kafka。我的日志1小时不到100g,没碰到这个问题; 2. 容错。flume虽然有缓存能力,但是作为channel来讲,更多的意义是通道。File方式落地了,还好一些;Memory可能会在服务异常中止时存在数据丢失。 只要能考虑好以上2个问题,flume完全可以取代kafka。

jhg22

赞同来自:

谢谢你的回答,离线这块应该没问题。主要是做实时分析:比如 flume1.7.0的TAILDIR source 监控到一个目录中文件的数据有所变化,想用sparkStreaming直接去消费flume里的数据。

要回复问题请先登录注册