Flume是一种分布式的可靠开源系统,用于流数据的高效收集,聚集和移动.Flume通常用于移动日志数据.但是也能移动大量事件数据.如社交媒体订阅,消息队列事件或者网络流量数据.

Flume架构

  • Flume的数据源使用来自外部数据源的时间,然后转发到Channel中.外部数据源可以是任何一个能够产生事件的系统.比如Twitter这样的社交媒体网站,机器日志,或者消息队列.实施Flume数据源的目的是使用来源于特定外部数据源的时间.很多数据源都能关于Flume一起使用.包括AvroSource,SpoolDirectorySource,HTTPSource与JMSSource.

  • Flume 拦截器能够拦截时间,并且能在传输过程中对事件做出修改 .Flume拦截器还能够转化时间,丰富时间或者实时Java类任何一种基本的操作.拦截器常用于格式化,分区,过滤,分片,验证,或者将源数据用于事件

  • 选择器为事件提供了路径.用户能够使用选择器将时间发送到零至多个路径.正因为如此,如果需要分至多个Channel,或者需要基于事件发送到特定的Channel,那么选择器会非常有用.

  • Flume Channel存储事件,直到填满一个Sink.最常用的Channel为Memory Channel与File Channel. Memory Channel 将事件存储于内存.在Channel之重提供了最佳性能.但是如果处理或者主机操作失灵,将会丢失时间,导致可靠性降到最低.更为常用的磁盘Channel通过磁盘的持久存储提供更持久的事件存储.选择正确的Channel是一个很重要的构架决策,需要平衡性能与持久性.

  • Sink将事件从Channel中移除并传输到目的位置.目的位置可能是事件的最终目标系统.或者可以进一步进行Flume处理的位置.常用的Flume Sink是HDFS Sink.顾名思义,他会将事件写入HDFS文件中

  • Flume agent是这些组件的容器.承载着Flume数据源,Sink,Channel等JVM进程

Flume的特点

  • 可靠性

    事件会一直在Channel中存储,直到传输到下一个阶段

  • 可恢复性

    事件可以持久化到硬盘,然后在出现错误时回复

  • 声明式

    无需编码,配置会指定各组件的组合方式

  • 高度定制化

    尽管Flume包含大量的数据源,Sink以及框架外的组成,但它提供高度可插拔的框架,能按照用户的需求定制化的市县.

最新文章

  1. EBS报表参数间的关联性的设置
  2. Linux命令(1)- grep
  3. Gradle学习系列之八——构建多个Project
  4. IOS 判断日期是今天,昨天还是明天
  5. IOS内存管理「4」- ARC 和垃圾回收机制的基本概念
  6. Linux多线程之同步2 —— 生产者消费者模型
  7. php 依赖注入容器
  8. cJSON 库的使用和优化
  9. Angular路由——路由守卫
  10. 如何使用Sencha touch 构建基于Cordova的安卓项目
  11. IOS开发中关于runtime的认识
  12. Visual C++ 6.0中if..else..的简单用法和基本格式
  13. mybatis08--关联查询多对一
  14. 关于trim,ltrim ,rtrim 的 移除问题
  15. 【转】ExtJS获取父子、兄弟容器元素方法
  16. C++之类和对象的使用(二)
  17. 编译OSG的FreeType插件时注意的问题
  18. [T-ARA][Cry Cry]
  19. Android ExpandableListActivity
  20. .NET FrameWork 中的 CTS

热门文章

  1. windows下安装和配置SNMP
  2. SQLSERVER2008 内存占用高的处理方式
  3. Educational Codeforces Round 68 (Rated for Div. 2)补题
  4. go 常量
  5. Android MediaPlayer 在 STREAM_ALARM 中播放媒体
  6. dgv数据绑定后,添加行遇到过的问题并解决
  7. 解决 Ubuntu 19 安装openjdk 8后与openjfx不兼容
  8. 如何将webstrom本地的代码上传到github上
  9. 实现div可以调整高度(div实现resize)
  10. 销售订单(SO)-API-给已有的销售订单增加一行