实际开发中,flume的代理往往是多层嵌套的拓扑结构。所谓fan out(扇出)指的的是从一个source源向多个channnel,也就是向多个sink传递事件。正常的扇出流默认是向所有的channel复制事件,不过这个也是自定义选择的,比如可以通过source上设置一个复用选择器(multiplexing selector)来实现一些事件被送到指定的channel,另外一些事件被送到另一个channel.即我们可以通过配置复用选择器来定义路由规则。

拓扑结构如下:

案例演示:将事件同时传递到HDFS sink和logger sink。

注意:如上图channel1a,sink1a是到达HDFS,channel1b,sink1b是到达logger

agent1.sources = source1
agent1.sinks= sink1a sink1b  #多个sink,中间用空格
agent1.channels=channel1a  channel1b  #多个channel中间同样空格分割
agent1.sources.source1.channels = channnel1a  channel1b
agent1.sinks.sink1a.channnel = channel1a
agent1.sinks.sink1b.channnel =channel1b
agent1.sources.source1.type = spoodir
agnet1.sources.source1.spooDir = /tmp/spooldir
agent1.sinks.sink1a.type =hdfs
agent1.sinks.sink1a.hdfs.path=/tmp/flume
agent1.sinks.sink1a.hdfs.fileType = dataStream  #默认类型是SequenceFile,顺序文件,dataStream类似纯文本。
agent1.channels.channel1a.type =file  
agent1.channels.channel1b.type = memory

注意:上面两个channel配置类型不一样,一个是file,一个是memory。如果同一个机器上,配置两个channel都是file channel。那么则必须要通过配置使得它们分别指向不同的数据存储目录和检查点目录(因为默认情况下,filechannel 具有持久性,数据会被写入到本地系统,而默认情况下file channel写入的目录都是用户主目录中的同一个默认文件夹),否则会出现数据重叠覆盖的情况。

      如果两个channel都是配置的file channel,则可以如下配置:

       agent1.channels.channel1a.type =file
       agent1.channels.channel1a.checkpointDir=/tmp/agent1/file-channel1a/checkpoint
       agent1.channels.channel1a.dataDirs = /tmp/agent1/file-channel1a/data
       agent1.channels.channel1b.type =file
       agent1.channels.channel1b.checkpointDir=/tmp/agent1/file-channel1b/checkpoint
       agent1.channels.channel1b.dataDirs = /tmp/agent1/file-channel1b/data     

案例分析:

    1.Flume使用独立的事务分别完成从spooldir到每一个channel事件的传递和交付。如果其中一个事务失败,(比如channel满溢),则这些事件不会再source中删除,而是稍后等待重试。这样保证每一个事件都传递到每一个channel,sink中。

    2.具体很多参数配置,参考flume官网。

开发中Flume的扇出机制的使用相关推荐

  1. 浅谈电商网站开发中用户会话管理机制的设计和实现原理

    笔者由于工作需要,最近对国内外两款知名的电商网站的用户会话管理(User Session Management) 的实现机制做了一些调研,这里把我学习到的一些知识分享给各位同行,希望起到抛砖引玉的作用 ...

  2. java知识点8——垃圾回收原理和算法、通用的分代垃圾回收机制、 JVM调优和Full GC、开发中容易造成内存泄露的操作

    垃圾回收原理和算法 内存管理 Java的内存管理很大程度指的就是对象的管理,其中包括对象空间的分配和释放. 对象空间的分配:使用new关键字创建对象即可 对象空间的释放:将对象赋值null即可 垃圾回 ...

  3. Android事件分发机制在实战开发中的应用之一

    学习的最终目标就是要学以致用,本文所分享的案例都是自己在公司实战开发过程中的真实案例,现在把它分享出来,希望对初学者有所帮助 版权声明:本文来自门心叼龙的博客,属于原创内容,转载请注明出处:https ...

  4. Android事件分发机制在实战开发中的应用之二

    学习的最终目标就是要学以致用,本文所分享的案例都是自己在公司实战开发过程中的真实案例,现在把它分享出来,希望对初学者有所帮助 版权声明:本文来自门心叼龙的博客,属于原创内容,转载请注明出处:https ...

  5. 前端开发中的性能那点事

     前端开发中的性能那点事(一)巧用xdebug 前言: 在我们平时的php开发中,一个大的项目经过长时间的积累以后你会发现性能越来越慢,而性能到底消耗在了什么地方,常常是一个令人头疼的问题,funct ...

  6. 浅析操作系统和Netty中的零拷贝机制

    点击关注公众号,Java干货及时送达 零拷贝机制(Zero-Copy)是在操作数据时不需要将数据从一块内存区域复制到另一块内存区域的技术,这样就避免了内存的拷贝,使得可以提高CPU的.零拷贝机制是一种 ...

  7. Java开发中的23种设计模式详解(转)

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  8. 微信开发者和其他服务器区别,求教微信公众号开发中两种认证技术的区别?

    本人对微信开发中2个认证方式有些不解,求各位大佬给解释一番. 众所周知,在微信开发者进行开发时,有两个角色和两个场景存在,我分别描述如下: 第一个场景:微信服务器------>我的服务器. 在我 ...

  9. ios 开发中 动态库 与静态库的区别

    使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...

最新文章

  1. java 类隔离_微服务架构中zuul的两种隔离机制实验
  2. How Do Annotations Work in Java?--转
  3. Idea如何方便的查看Java字节码文件,你是怎么做的
  4. C++笔记——.和::和:和-的区别
  5. git merge用法_常用命令之git操作(进阶篇)
  6. 论文浅尝 | 基于属性嵌入的知识图谱实体对齐
  7. NSLayoutConstraint 使用详解 VFL使用介绍
  8. FreeRTOS+STM32F103串口通信错误解决方法
  9. 【持久化框架】Mybatis与Hibernate的详细对比
  10. dl320服务器内存型号,HP DL320 G5 1U XEON 3040/2GB内存/500G SATA 双核服务器
  11. 支付宝登陆泰国最大免税店King Power可扫码支付
  12. 安卓root后查看WiFi密码
  13. Jshop小程序商城
  14. 激光雷达与自动驾驶详解
  15. 2021年涡阳四中高考成绩查询,振奋人心,全是省重点!高考成绩出来了,涡阳家长快来看看!...
  16. 让你秒懂古人测算地球周长的原理
  17. 承前2021,启后2022
  18. STM32F107 以太网PHY选择和电路设计
  19. 一个简单的购物类网站
  20. Java、JSP音像租赁管理系统

热门文章

  1. 抑制细胞代谢紊乱的抑制剂
  2. IBM合作伙伴世界峰会:将全部筹码都押在认知计算上
  3. python如何生成等差数列_python numpy函数中的linspace创建等差数列详解
  4. oracle 连不上 显示socket read time out
  5. Nginx中last和break redirect和permanent区别和联系
  6. 利用python的turtle库画一个图形
  7. Android 虹软人脸识别获取数据的方法
  8. android html5 rtmp,利用H5实现RTMP流的WEB移动端直播
  9. (读书笔记)大数据分析计算机基础
  10. 超强破解Word“取消文档保护”密码