设为首页 收藏本站
查看: 1800|回复: 0

[经验分享] 使用Flume NG构建数据收集系统(第一部分 Flume介绍) 转载

[复制链接]

尚未签到

发表于 2017-5-22 06:00:11 | 显示全部楼层 |阅读模式
  转载自:http://blog.csdn.net/xiaochawan/article/details/8986489
  好文章,留下备忘。
  Flume是什么

  • 收集、聚合事件流数据的分布式框架
  • 通常用于log数据
  • 采用ad-hoc方案,明显优点如下:

    • 可靠的、可伸缩、可管理、可定制、高性能
    • 声明式配置,可以动态更新配置
    • 提供上下文路由功能
    • 支持负载均衡和故障转移
    • 功能丰富
    • 完全的可扩展

  核心概念

  • Event
  • Client
  • Agent

    • Sources、Channels、Sinks
    • 其他组件:Interceptors、Channel Selectors、Sink Processor

  核心概念:Event

  Event是Flume数据传输的基本单元。flume以事件的形式将数据从源头传送到最终的目的。Event由可选的hearders和载有数据的一个byte array构成。


  • 载有的数据对flume是不透明的
  • Headers是容纳了key-value字符串对的无序集合,key在集合内是唯一的。
  • Headers可以在上下文路由中使用扩展
[java] view plaincopy


  • public interface Event {  
  •     public Map<String, String> getHeaders();  
  •     public void setHeaders(Map<String, String> headers);  
  •     public byte[] getBody();  
  •     public void setBody(byte[] body);  
  • }  

  核心概念:Client
  Clinet是一个将原始log包装成events并且发送它们到一个或多个agent的实体。


  • 例如

    • Flume log4j Appender
    • 可以使用Client SDK (org.apache.flume.api)定制特定的Client

  • 目的是从数据源系统中解耦Flume
  • 在flume的拓扑结构中不是必须的
  核心概念:Agent
  一个Agent包含Sources, Channels, Sinks和其他组件,它利用这些组件将events从一个节点传输到另一个节点或最终目的。


  • agent是flume流的基础部分。
  • flume为这些组件提供了配置、生命周期管理、监控支持。
  核心概念:Source

  Source负责接收events或通过特殊机制产生events,并将events批量的放到一个或多个Channels。有event驱动和轮询2种类型的Source


  • 不同类型的Source:

    • 和众所周知的系统集成的Sources: Syslog, Netcat
    • 自动生成事件的Sources: Exec, SEQ
    • 用于Agent和Agent之间通信的IPC Sources: Avro

  • Source必须至少和一个channel关联
  核心概念:Channel
  Channel位于Source和Sink之间,用于缓存进来的events,当Sink成功的将events发送到下一跳的channel或最终目的,events从Channel移除。


  • 不同的Channels提供的持久化水平也是不一样的:

    • Memory Channel: volatile
    • File Channel: 基于WAL(预写式日志Write-Ahead Logging)实现
    • JDBC Channel: 基于嵌入Database实现

  • Channels支持事务
  • 提供较弱的顺序保证
  • 可以和任何数量的Source和Sink工作
  核心概念:Sink

  Sink负责将events传输到下一跳或最终目的,成功完成后将events从channel移除。


  • 不同类型的Sinks:

    • 存储events到最终目的的终端Sink. 比如: HDFS, HBase
    • 自动消耗的Sinks. 比如: Null Sink
    • 用于Agent间通信的IPC sink: Avro

  • 必须作用与一个确切的channel
  Flow可靠性
   DSC0000.jpg

   DSC0001.jpg


  • 可靠性基于:

    • Agent间事务的交换
    • Flow中,Channel的持久特性

  • 可用性:

    • 内建的Load balancing支持
    • 内建的Failover支持


DSC0002.jpg

  核心概念:Interceptor
  用于Source的一组Interceptor,按照预设的顺序在必要地方装饰和过滤events。


  • 内建的Interceptors允许增加event的headers比如:时间戳、主机名、静态标记等等
  • 定制的interceptors可以通过内省event payload(读取原始日志),在必要的地方创建一个特定的headers。
  核心概念:Channel Selector
  Channel Selector允许Source基于预设的标准,从所有Channel中,选择一个或多个Channel


  • 内建的Channel Selectors:

    • 复制Replicating: event被复制到相关的channel
    • 复用Multiplexing: 基于hearder,event被路由到特定的channel

核心概念:Sink Processor
多个Sink可以构成一个Sink Group。一个Sink Processor负责从一个指定的Sink Group中激活一个Sink。Sink Processor可以通过组中所有Sink实现负载均衡;也可以在一个Sink失败时转移到另一个。


  • Flume通过Sink Processor实现负载均衡(Load Balancing)和故障转移(failover)
  • 内建的Sink Processors:

    • Load Balancing Sink Processor – 使用RANDOM, ROUND_ROBIN或定制的选择算法
    • Failover Sink Processor 
    • Default Sink Processor(单Sink)

  • 所有的Sink都是采取轮询(polling)的方式从Channel上获取events。这个动作是通过Sink Runner激活的
  • Sink Processor充当Sink的一个代理


总结



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-379669-1-1.html 上篇帖子: flume-ng avro方式传输数据配置 flume-ng多节点实例 下篇帖子: Hive读取Flume正在写入的HDFS
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表