2020-09-30【学习笔记】【企业数据湖】六、基于Apache Flume的流式数据获取(2)

四、flume架构

一个简单的flume架构包含三个重要的组件,他们协同工作,并且以实时的方式将源数据传输到目的地。

  • source:用于监听流式数据或事件,将其写入到channel
  • channel:一个存储数据的流水线,数据存储在其中直到被其他组件取走
  • sink:用于从channal中获取事件并进一步处理或者持久化到数据存储。失败则重试

还有一些众所周知的结构

  • 分布式数据流水线(上面结构可一个个的连接起来)
  • 扇出(一个source将数据传给多个channel)
  • 扇入(多source写入一个channel)

在此不做详细介绍了。

flume架构中的三层设计

  • Agent层:与需要传输数据的数据源连接在一起
  • Collector层:手机Agent层数据
  • Storage层:接收Collector层数据并存储起来

高级flume架构:就是多了一个FlumeMaster可以使用ThriftApi控制集群配置

Flume的可靠性级别:

  • End-to-end:只要发送端是活跃的状态,就一定可以达到另一端
  • store on failure :只在接收方agent发生故障时才保存
  • Best-effort:最弱的,不经写入磁盘而直接被转发给下一跳,也不依赖下一个Agent的收条。

五、Flume事件--流式数据

事件结构比较简单

Event Header:一组键值对,map形式存储,

Event Payload:这部分是一个字节数组,以Byte形式存储,主体信息默认大小32KB(可后期配置)

六、Flume Agent

Agent是flume的最小部署单位。由source,channel,sink为主要组件。

可以设置的Agent的主要配置有:

多跳式(多Agent数据流)

合并式(融合的数据流)

倍增式

七、FlumeSource

Flume Agent可以有多个Source,但是必须最少有一个才能工作。source有sourcerunner管理,主要控制线程方面和执行模型。

事件驱动

轮询

八、Flume Channel

channel是flumeAgent用来将数据从source传输到sink的一种机制。

channel分为如下两类:

1、in-memory(内存中,队列)

2、Durable(持久化,文件,jdbc,kafka)

九、FlumeSink

和source的情况一样,sink由sinkrunner管理,管理线程和执行模型

与source不同的是,sink的执行模式是轮询。

目前有多种现成的sink可用

  • HDFS
  • Hbase
  • AsyncHbase
  • Hive
  • Kafka
  • Null和Looger

十、Flume配置

Flume配置规则:

  • 每个Agent至少包含一个channel
  • 每个Source至少包含一个channel
  • 每一个sink有且仅有一个channel
  • 应该给Agent命名,只有已命名的Agent才会被加载
  • 在已命名的Agent当中,只有活跃的组件才会 被加载
  • 定义任何组件时都应该定义它的类型

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值