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 ...
随机推荐
- 网络编程socket之listen函数
摘要:listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程.在TCP服务器编程中listen函数把进程变为一个服务器,并指定相应的套接字变为被 ...
- GPU/CUDA程序初体验 向量加法
现在主要的并行计算设备有两种发展趋势: (1)多核CPU. 双核,四核,八核,...,72核,...,可以使用OpenMP编译处理方案,就是指导编译器编译为多核并行执行. (2)多线程设备(GP)GP ...
- WF4.0(2)----设计工作流
自从做了程序员,发现自己长胖了,而且自己的身体抵抗力也出了问题,最近身体不适,公司工作任务最近也很赶,上次写了WF4.0的简介,这次就工作中工作流设计的几种方式稍微总结一下.设计工作流包括四种方式:流 ...
- 如何解决 SQL Server 中的锁升级所致的阻塞问题
概要 锁升级为表锁插入转换很多细粒度的锁 (如行或页锁) 的过程.Microsoft SQL Server 动态确定何时执行锁升级.作出决定之前,SQL Server 将特定的扫描,整个事务,并且用于 ...
- PHP 解决版本问题:"Assigning the return value of new by reference is deprecated"
问题描述: 在最近使用ECSHOP v273帮客户建立了一个商城系统,商城搭建一切ok但在使用中后台发现了一个500错误 在服务器上访问该地址发现了错误信息:"Assigni ...
- telnet 退出命令
telnet xxx port ctrl + ] telnet > quit ctrl + w 是清除命令 转自: http://wangyifeng.blog.51cto.com/214490 ...
- (转)Unity3D命令行Build
转自:http://www.cnblogs.com/gameprogram/archive/2012/05/11/2496303.html 本来是没想用这个命令行Build方式,可惜电脑不知道怎么的就 ...
- Javascript游戏,街头霸王
在线演示 本地下载 街头霸王,有没有记起点什么?我想起了那个有颗大槐树的老院子,还有一台小霸王和一个儿时的伙伴.
- STL - Unorderedset - 自定义哈希函数
1. hash工具类 hashval.hpp #ifndef _Core_HashVal_H_ #define _Core_HashVal_H_ #include <functional> ...
- MVC的Filter应用小结
一.概念定义 Filter是一种声明式编程方式,在Asp.net MVC中它只能限制于Action(或它的Controller). Filter用途广泛:(1)判断登录与否或用户权限:(2)决策输出缓 ...