专栏首页米虫的家BigData--Apache Flume框架

BigData--Apache Flume框架

Flume进阶

1、Flume基本框架

1. Event

Event 是 Flume NG 数据传输的基本单元。类似于 JMS 和消息系统中的消息。一个 Event 由标题和正文组成:前者是键/值映射,后者是任意字节数组。

2. Source

数据收集组件,从外部数据源收集数据,并存储到 Channel 中。

Source类型

  • (1)监控后台日志:exec
  • (2)监控后台产生日志的端口:netcat

3. Channel

Channel 是源和接收器之间的管道,用于临时存储数据。可以是内存或持久化的文件系统:

  • Memory Channel : 使用内存,优点是速度快,但数据可能会丢失 (如突然宕机);
  • File Channel : 使用持久化的文件系统,优点是能保证数据不丢失,但是速度慢。

4. Sink

Sink 的主要功能从 Channel 中读取 Event ,并将其存入外部存储系统或将其转发到下一个Source ,成功后再从 Channel 中移除 Event

5. Agent

是一个独立的 (JVM) 进程,包含 SourceChannelSink 等组件。

2、Flume事务

Flume 的事务机制(类似数据库的事务机制):Flume 使用两个独立的事务分别负责从SoucrceChannel,以及从 ChannelSink 的事件传递。比如 spooling directory source 为文件的每一行创建一个事件,一旦事务中所有的事件全部传递到 Channel 且提交成功,那么 Soucrce 就将该文件标记为完成。同理,事务以类似的方式处理从 ChannelSink 的传递过程,如果因为某种原因使得事件无法记录,那么事务将会回滚。且所有的事件都会保持到 Channel 中,等待重新传递。

3、Flume Agent 内部原理

重要组件:

1)ChannelSelector

ChannelSelector 的作用就是选出 Event 将要被发往哪个 Channel。其共有两种类型,分别是 Replicating(复制)和 Multiplexing(多路复用)。

ReplicatingSelector 会将同一个 Event 发往所有的 ChannelMultiplexing 会根据相应的原则,将不同的 Event 发往不同的 Channel

2)SinkProcessor

SinkProcessor 共 有 三 种 类 型 , 分 别 是 DefaultSinkProcessorLoadBalancingSinkProcessorFailoverSinkProcessor

DefaultSinkProcessor 对 应 的 是 单 个 的 SinkLoadBalancingSinkProcessorFailoverSinkProcessor 对应的是 Sink GroupLoadBalancingSinkProcessor 可以实现负载均衡的功能,FailoverSinkProcessor 可以实现故障转移的功能。

4、Flume 拓扑结构

(1)、简单串联

这种模式是将多个 flume 顺序连接起来了,从最初的 source 开始到最终 sink 传送的目的存储系统。此模式不建议桥接过多的 flume 数量,flume 数量过多不仅会影响传输速率,而且一旦传输过程中某个节点 flume 宕机,会影响整个传输系统。

(2)、复制和多路复用

Flume 支持将事件流向一个或者多个目的地。这种模式可以将相同数据复制到多个channel 中,或者将不同数据分发到不同的 channel 中,sink 可以选择传送到不同的目的地。

(3)、负载均衡和故障转移

Flume支持使用将多个sink逻辑上分到一个sink组,sink组配合不同的SinkProcessor可以实现负载均衡和错误恢复的功能。

(4)、聚合

这种模式是我们最常见的,也非常实用,日常 web 应用通常分布在上百个服务器,大者甚至上千个、上万个服务器。产生的日志,处理起来也非常麻烦。用 flume 的这种组合方式能很好的解决这一问题,每台服务器部署一个 flume 采集日志,传送到一个集中收集日志的flume,再由此 flume 上传到 hdfshivehbase 等,进行日志分析。

5、 Flume 参数调优

(1). Source

增加 Source 个(使用 Tair Dir Source 时可增加 FileGroups 个数)可以增大 Source 的读取数据的能力。例如:当某一个目录产生的文件过多时需要将这个文件目录拆分成多个文件目录,同时配置好多个 Source 以保证 Source 有足够的能力获取到新产生的数据。

batchSize 参数决定 Source 一次批量运输到 Channel 的 event 条数,适当调大这个参数可以提高 Source 搬运 Event 到 Channel 时的性能。

(2). Channel

type 选择 memory 时 Channel 的性能最好,但是如果 Flume 进程意外挂掉可能会丢失数据。type 选择 file 时 Channel 的容错性更好,但是性能上会比 memory channel 差。

使用 file ChanneldataDirs 配置多个不同盘下的目录可以提高性能。

Capacity 参数决定 Channel 可容纳最大的 event 条数。transactionCapacity 参数决定每次 Source 往 channel 里面写的最大 event 条数和每次 Sink 从 channel 里面读的最大 event条数。transactionCapacity 需要大于 Source 和 Sink 的 batchSize 参数。

(3). Sink

增加 Sink 的个数可以增加 Sink 消费 event 的能力。Sink 也不是越多越好够用就行,过多的 Sink 会占用系统资源,造成系统资源不必要的浪费。

batchSize 参数决定 Sink 一次批量从 Channel 读取的 event 条数,适当调大这个参数可以提高 Sink 从 Channel 搬出 event 的性能。

6、Flume Channel Selectors

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [大数据架构 ]Apache大数据项目目录

    在使用BigData大约8年以上之后,我遇到了大量的项目。Esp Apache的运动对于BigData域非常强大。每个人都会提出一个针对特定解决方案的项目。但是...

    首席架构师智库
  • Flume介绍

    在一个完整的离线大数据处理系统中,除了 hdfs+mapreduce+hive 组成分析系统的核心之外,还需要 数据采集、结果 数据导出、 任务调度等不...

    用户4870038
  • Apache Flume

    在一个完整的离线大数据处理系统中,除了 hdfs+mapreduce+hive 组成分析系统的核心之外, 还需要数据采集、结果数据导出、任务调度等不可或缺的辅助...

    ChinaManor
  • 大数据开发:Flume分布式日志系统简介

    在企业级的平台系统当中,对于日志的收集和分析,一方面对于运维优化有着相应的作用,另一方面日志数据,作为大数据的一种形式,也蕴含着诸多价值。今天的大数据开发学习分...

    成都加米谷大数据
  • 0471-Oracle Goldengate实时复制Oracle数据到CDH Kafka

    Oracle Goldengate(以下简称OGG)是业界广泛使用的准实时数据复制软件,主要基于数据库日志进行变更数据的抽取,也就是我们常说的CDC(chang...

    Fayson
  • 果断收藏!六大主流大数据采集平台架构分析

    随着大数据越来越被重视,数据采集的挑战变的尤为突出。今天为大家介绍几款数据采集平台:

    华章科技
  • 【推荐收藏】六大主流大数据采集平台架构分析

    随着大数据越来越被重视,数据采集的挑战变的尤为突出。今天为大家介绍几款数据采集平台:Apache Flume Fluentd Logstash Chukwa S...

    钱塘数据
  • 果断收藏!六大主流大数据采集平台架构分析

    本文转自网络,如涉侵权请及时联系我们 大数据的应用速度超过此前人们的预期,现在新的一轮风口吹向了AI,对于交互设计来说,数据交互才是核心的竞争力,今日头条类型的...

    CDA数据分析师
  • 【推荐收藏】六大主流大数据采集平台架构分析

    随着大数据越来越被重视,数据采集的挑战变的尤为突出。今天为大家介绍几款数据采集平台:Apache Flume Fluentd Logstash Chukwa S...

    钱塘数据
  • Flume日志收集系统架构详解

    任何一个生产系统在运行过程中都会产生大量的日志,日志往往隐藏了很多有价值的信息。在没有分析方法之前,这些日志存储一段时间后就会被清理。随着技术的发展和分析能力的...

    大数据和云计算技术
  • Java程序员,你一定需要了解的六款大数据采集平台

    亲爱的小伙伴,抽点时间帮忙投一下票,选一下您目前所处的阶段,以便后期推出更多对您有帮助的文章和内容哦!

    Java后端技术
  • Java开发者一定要了解的六款大数据采集平台

    随着大数据越来越被重视,数据采集的挑战变的尤为突出。今天为大家介绍几款数据采集平台:

    风火数据
  • 你一定需要了解的六款大数据采集平台

    加米谷大数据
  • 大数据学习必备 | 推荐几个牛X 的 github 项目,助你事半功倍

    大家好,我是 梦想家 Alex 。我们都知道 github 对于程序员们而言,就是一个巨大的“聚宝盆”,上面不仅有很多优质的开源项目,还有很多热...

    大数据梦想家
  • Hadoop及其生态系统的基本介绍【转载】

    用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    foochane
  • 【工具】你一定需要 六款大数据采集平台的架构分析

    随着大数据越来越被重视,数据采集的挑战变的尤为突出。今天为大家介绍几款数据采集平台: Apache Flume Fluentd Logstash Chukwa ...

    小莹莹
  • flume 1.8.0 开发基础

    Apache Flume是一个用于高效地从大量异构数据源收集、聚合、传输到一个集中式数据存储的分布式、高可靠、高可用的系统。

    皮皮熊
  • 大数据技术之_09_Flume学习_Flume概述+Flume快速入门+Flume企业开发案例+Flume监控之Ganglia+Flume高级之自定义MySQLSource+Flume企业真实面试题(

      Flume(水槽) 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。   在2...

    黑泽君
  • 大数据简介,技术体系分类整理

    大数据是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样...

    知了一笑

扫码关注云+社区

领取腾讯云代金券