大数据离线(五)

Flume

1. 概述

Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的软件。

2. 运行机制

Flume系统中核心的角色是agent,agent 本身是一个 Java 进程,一般运行在日志收集节点。内部有三个组件:

  • Source:采集源,用于跟数据源对接以获取数据
  • Sink:下沉地,采集数据的传送目的,用于往下一级agent传递数据或者往最终存储系统传递数据
  • Channel:agent内部的数据传输通道,用于将数据从Source传输到Sink

在整个数据的传输的过程中,流动的是 event,它是 Flume 内部数据传输的最基本单元。一个完整的 event 包括:event headers、event body、event 信息,其中event 信息就是 flume 收集到的日记记录。

3. Flume采集系统结构图

4.Flume 的 的 load-balance 、failover

负载均衡是用于解决一台机器(一个进程)无法解决所有请求而产生的一种算法。

#Load balancing Sink Processor Agent1 是一个路由节点,负责将 Channel 暂存的 Event 均衡到对应的多个 Sink组件上
a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2 k3
a1.sinkgroups.g1.processor.type = load_balance
a1.sinkgroups.g1.processor.backoff = true #如果开启,则将失败的 sink 放入黑名单
a1.sinkgroups.g1.processor.selector = round_robin # 另外还支持 random
a1.sinkgroups.g1.processor.selector.maxTimeOut=10000 #在黑名单放置的超时时间,超时结束时,若仍然无法接收,则超时时间呈指数增长
# Failover Sink Processor 只要有一个 Sink组件可用,Event 就被传递到下一个组件
a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2 k3
a1.sinkgroups.g1.processor.type = failover
a1.sinkgroups.g1.processor.priority.k1 = 5 #优先级值, 绝对值越大表示优先级越高
a1.sinkgroups.g1.processor.priority.k2 = 7
a1.sinkgroups.g1.processor.priority.k3 = 6
a1.sinkgroups.g1.processor.maxpenalty = 20000 #失败的 Sink 的最大回退期(millis)

猜你喜欢

转载自www.cnblogs.com/lifuwei/p/9432873.html