Flume多Sink方案修正
在实际项目中采用http://www.cnblogs.com/moonandstar08/p/6091384.html方案进行布署时,由于系统产生的消费比较大按照原方案进行布署时,随着国外局点不断增加,那么SZ局点的Channel会不断增加,另一方面,在Kafaka集群中创建Partitation时由于无法保证Channel均匀的分布到Kafka集群时,那么在实际的生产环境上布署时会发现:SZ Kafka中的数据会保存N(海外局点数)份在SZ的环境上,很容易造成磁盘中存了N份冗余数据,此时Flume的模型如下图所示:

因此需要对此方案进行修正,修正的思路主要有二种:
一、采用Flume load balance模式
模型原型如下所示:

采用此方案时,SZ本地的Flume配置如下:
#list the sources,sinks and channels int the agent
agent.sources = kafkaSrc
agent.channels = kafkaChannel_sz
agent.sinks = kafkaSink_sz #source configure
agent.sources.kafkaSrc.type = org.apache.flume.source.kafka.KafkaSource
agent.sources.kafkaSrc.zookeeperConnect = XXX:2181,YYY:2182
agent.sources.kafkaSrc.topic = test_produce
agent.sources.kakkaSrc.groupId = test
agent.sources.kakkaSrc.kafka.consumer.timeout.ms = 100 #use a channel which buffers events in memory
agent.channels.kafkaChannel_sz.type = memory
agent.channels.kafkaChannel_sz.capacity = 1000000
agent.channels.kafkaChannel_sz.transactionCapacity = 100 #sink
agent.sources.kafkaSink_sz.type = org.apache.flume.sink.kafka.KafkaSink
agent.sources.kafkaSink_sz.topic = test_consume
agent.sources.kafkaSink_sz.brokerList= XXX:9092
agent.sources.kafkaSink_sz.batchSize = 5 #bind the source and sink to the channel
agent.sources.kafkaSrc.channels = kafkaChannel_sz
agent.sinks.kafkaSink_sz.channel = kafkaChannel_sz
此方案的实质是通过memory共享数据,当数据量比较大时很容易造成内存溢出。另外,当memory中数据丢失时也无法恢复。
此模型的使用如下所示: 
可以参见:http://www.cnblogs.com/lishouguang/p/4558790.html
二、Kafka + Flume Souce groupID来处理
Kafka + Flume Souce groupID方案的模型如下图所示:

Flume相关配置如下:
A.SZ本地搭建Kafka集群,不进行Flume配置;
B.UK本地Flume配置如下:
#Source
agent.sources = kafkaSrc
agent.channels = kafkaChannel_sz
agent.sinks = kafkaSink_uk #Source configure
agent.sources.kafkaSrc.type = org.apache.flume.source.kafka.KafkaSource
agent.sources.kafkaSrc.channels = kafkaChannel_sz
agent.sources.kafkaSrc.zookeeperConnect = XXX:2181,YYY:2182 (SZ ZOO)
agent.sources.kafkaSrc.topic = k_produce
agent.sources.kafkaSrc.groupId = k_uk #Channel
agent.channels.kafkaChannel_sz.type = org.apache.flume.channel.kafka.KafkaChannel
agent.channels.kafkaChannel_sz.brokeList = XXX:9092,YYY:9093(UK brokeList)
agent.channels.kafkaChannel_sz.topic = k_uk
agent.channels.kafkaChannel_sz.zookeeperConnect = XXX:2181,YYY:2182(UK ZOO)
agent.channels.kafkaChannel_sz.capacity = 10000
agent.channels.kafkaChannel_sz.transactionCapacity = 1000 #Sink
agent.sinks.kafkaSink_uk.channel = kafkaChannel_sz
agent.sinks.kafkaSink_uk.type = org.apache.flume.sink.kafka.KafkaSink
agent.sinks.kafkaSink_uk.topic = t_uk_consume
agent.sinks,kafkaSink_uk.brokeList = XXX:9092,YYY:9093(UK brokeList)
agent.sinks.kafkaSink_uk.bachSize = 20
C.BR本地Flume配置如下:
#Source
agent.sources = kafkaSrc
agent.channels = kafkaChannel_sz
agent.sinks = kafkaSink_br #Source configure
agent.sources.kafkaSrc.type = org.apache.flume.source.kafka.KafkaSource
agent.sources.kafkaSrc.channels = kafkaChannel_sz
agent.sources.kafkaSrc.zookeeperConnect = XXX:2181,YYY:2182 (SZ ZOO)
agent.sources.kafkaSrc.topic = k_produce
agent.sources.kafkaSrc.groupId = k_br #Channel
agent.channels.kafkaChannel_sz.type = org.apache.flume.channel.kafka.KafkaChannel
agent.channels.kafkaChannel_sz.brokeList = XXX:9092,YYY:9093(BR brokeList)
agent.channels.kafkaChannel_sz.topic = k_br
agent.channels.kafkaChannel_sz.zookeeperConnect = XXX:2181,YYY:2182(BR ZOO)
agent.channels.kafkaChannel_sz.capacity = 10000
agent.channels.kafkaChannel_sz.transactionCapacity = 1000 #Sink
agent.sinks.kafkaSink_uk.channel = kafkaChannel_sz
agent.sinks.kafkaSink_uk.type = org.apache.flume.sink.kafka.KafkaSink
agent.sinks.kafkaSink_uk.topic = t_br_consume
agent.sinks,kafkaSink_uk.brokeList = XXX:9092,YYY:9093(BR brokeList)
agent.sinks.kafkaSink_uk.bachSize = 20
参考:http://shiyanjun.cn/archives/915.html
Flume多Sink方案修正的更多相关文章
- [bigdata] 使用Flume hdfs sink, hdfs文件未关闭的问题
现象: 执行mapreduce任务时失败 通过hadoop fsck -openforwrite命令查看发现有文件没有关闭. [root@com ~]# hadoop fsck -openforwri ...
- [Flume][Kafka]Flume 与 Kakfa结合例子(Kakfa 作为flume 的sink 输出到 Kafka topic)
Flume 与 Kakfa结合例子(Kakfa 作为flume 的sink 输出到 Kafka topic) 进行准备工作: $sudo mkdir -p /flume/web_spooldir$su ...
- 【原创】大叔经验分享(54)flume kudu sink运行一段时间kudu client报错
flume kudu sink运行一段时间报错: 19/05/05 10:15:56 WARN client.ConnectToCluster: Error receiving a response ...
- flume中sink到hdfs,文件系统频繁产生文件,文件滚动配置不起作用?
在测试hdfs的sink,发现sink端的文件滚动配置项起不到任何作用,配置如下: a1.sinks.k1.type=hdfs a1.sinks.k1.channel=c1 a1.sinks.k1.h ...
- Flume的Sink
一.Logger Sink 记录指定级别(比如INFO,DEBUG,ERROR等)的日志,通常用于调试 要求,在 --conf(-c )参数指定的目录下有log4j的配置文件 根据设计,logger ...
- flume 自定义sink
http://flume.apache.org/FlumeDeveloperGuide.html#sink 看了 还是比较好上手的,简单翻译一下 sink的作用是从 Channel 提取 Event ...
- Hadoop实战-Flume之Sink Load-balancing(十七)
a1.sources = r1 a1.sinks = k1 k2 a1.channels = c1 # Describe/configure the source a1.sources.r1.type ...
- Hadoop实战-Flume之Sink Failover(十六)
a1.sources = r1 a1.sinks = k1 k2 a1.channels = c1 # Describe/configure the source a1.sources.r1.type ...
- flume中sink到hdfs,文件系统频繁产生文件和出现乱码,文件滚动配置不起作用?
问题描述 解决办法 先把这个hdfs目录下的数据删除.并修改配置文件flume-conf.properties,重新采集. # Licensed to the Apache Software Fou ...
随机推荐
- 错误: 找不到或无法加载主类 Files\red5-server ,原因与解决办法
因为你把 red5放到了 Program Files 下,而Program Files 中间有个空格,启动路径不允许有空格,换个没空格的路径就OK啦
- NYOJ-712 探寻宝藏(第六届河南省程序设计大赛)
探 寻 宝 藏 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 传说HMH大沙漠中有一个M*N迷宫,里面藏有许多宝物.某天,Dr.Kong找到了迷宫的地图,他发现迷宫 ...
- Android -- Camera源码简析,启动流程
com.android.camera.Camera.java,主要的实现Activity,继承于ActivityBase. ActivityBase 在ActivityBase中执行流程: onCre ...
- android 在UI线程之外处理Bitmap - 开发文档翻译
由于本人英文能力实在有限,不足之初敬请谅解 本博客只要没有注明“转”,那么均为原创,转贴请注明本博客链接链接 Processing Bitmaps Off the UI Thread 在UI线程之外处 ...
- svmtrain princomp 出现的问题
错误一: >> modelw = svmstrain(wine_label,wine_data); Undefined function 'svmstrain' for input arg ...
- unity3d插件Daikon Forge GUI 中文教程-3-基础控件Button和Sprite的使用
(游戏蛮牛首发)大家好我是孙广东.官网提供了专业的视频教程http://www.daikonforge.com/dfgui/tutorials/,只是是在youtube上.要观看是须要FQ的. 只是教 ...
- 将Tp-link无线路由器桥接到Dlink无线路由器上
笔者家中原有两台笔记本和两台IPad,通过一台Dlink无线路由器(型号DIR-612,以下简称Dlink)上网,Dlink以PPPOE方式连到小区宽带.一直还可以. 后来为了练习Linux,启用了一 ...
- PowerDesigner P M F 的意思
M:表示强制非空:P:是否为主键:D:是否在模型中显示.gerenate:表示是否作为表生成
- cocos2d-html5模板分析
结构总览 js文件 src/myApp.js src/resource.js cocos2d.js cocos2d-jsb.js main.js 其他文件 build.xml index.html 具 ...
- java.io.IOException: Input/output error
java.io.FileOutputStream.close0(Native Method)at java.io.FileOutputStream.close(FileOutputStream.jav ...