`

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

 
阅读更多

转载自: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可以在上下文路由中使用扩展

 

  1. public interface Event {  
  2.     public Map<String, String> getHeaders();  
  3.     public void setHeaders(Map<String, String> headers);  
  4.     public byte[] getBody();  
  5.     public void setBody(byte[] body);  
  6. }  

 

核心概念: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可靠性

                      

 

               

 

  • 可靠性基于:
    • Agent间事务的交换
    • Flow中,Channel的持久特性
  • 可用性:
    • 内建的Load balancing支持
    • 内建的Failover支持

 

核心概念: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的一个代理

 

总结

 

分享到:
评论

相关推荐

    flume-ng-1.6.0-cdh5.14.2.rar

    在大数据领域,数据收集是至关重要的第一步,而 Flume 正好提供了这样的服务,使得从各种数据源高效地抽取数据成为可能。`flume-ng-1.6.0-cdh5.14.2` 版本是 Cloudera Distribution Including Apache Hadoop(CDH)...

    flume-ng-1.6.0-cdh5.12.0.tar.gz

    Apache Flume,作为一个分布式、可靠且可用的数据收集系统,是大数据处理链路中不可或缺的一部分。Flume NG(Next Generation)是其发展到第二代后的版本,它在CDH(Cloudera Distribution Including Apache Hadoop...

    apache-flume-1.9.0-bin.tar,kafka_2.11-0.10.1.0,zookeeper-3.3.6_.tar

    这些组件在大数据生态系统中的整合使用,可以创建一个强大的数据处理链路:Flume收集和传输日志数据,Kafka作为中间层进行数据缓冲和分发,ZooKeeper提供一致性服务来管理整个流程。这样的架构允许实时数据流处理,...

    大数据采集技术-Flume配置.pptx

    在大数据领域,数据采集是整个数据分析流程的第一步,它涉及从各种来源收集大量数据并将其传输到处理或存储系统。Apache Flume是Apache Hadoop项目的一个子项目,专门设计用于高效、可靠且可扩展地收集、聚合和移动...

    第10章 Flume组件安装配置.docx

    Apache Flume 是一个分布式、可靠且可用于有效收集、聚合和移动大量日志数据的系统。在Linux环境中配置Flume组件是大数据分析系统中常见的任务,因为它可以高效地处理流式数据,例如网络日志。本章将详细介绍如何在...

    flime安装+配置+测试+案例(采集日志至HDFS)

    Flume 是 Apache Hadoop 生态系统中的一个关键组件,它设计用于高效地收集、聚合和传输大规模日志数据。在本文中,我们将深入探讨 Flume 的安装、配置、测试以及如何将其应用于实际案例,即从不同节点采集日志并存储...

    尚硅谷大数据技术之电商推荐系统.doc

    消息缓冲服务使用 Kafka 作为流式数据的缓存组件,接受来自 Flume 的数据采集请求,并将数据推送到项目的实时推荐系统部分;实时推荐服务使用 Spark Streaming 作为实时推荐系统,通过接收 Kafka 中缓存的数据,通过...

    第8章-大数据采集.pptx

    例如,在一个典型的数据仓库构建流程中,Sqoop可以用于前期将大量结构化数据迁移到Hadoop生态中,而Flume则可以在数据迁移后持续地捕获新的业务日志数据,不断为数据仓库补充最新鲜的数据血液。 总之,Sqoop和Flume...

    IT安全态势感知解决方案.docx

    数据采集层通过专门的接口(如绿盟A接口或flume-ng)将这些数据源接入并转发至处理层。 大数据处理层是解决方案的第二部分,负责数据的传输、清洗、存储和检索。数据在进入存储前通常需要进行1到2次清洗,以去除...

Global site tag (gtag.js) - Google Analytics