CSDN话题挑战赛第2期
参赛话题:大数据学习成长记录
目录
监控端口数据到控制台(netcat-memeory-logger)
一、引入
Flume是什么
Flume(日志收集系统)是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
Flume能干什么
-
提供从固定目录下采集日志信息到目的地(HDFS,HBase,Kafka)能力。
-
提供实时采集日志信息(taidir)到目的地的能力。
-
FLume支持级联(多个Flume对接起来),合并数据的能力。
-
Flume支持按照用户定制采集数据的能力。
总结起来就是实现了日志统一收集再放置于自定义目录的功能。
Flume的特点
- 良好的扩展性: Flume 架构是完全分布式的,没有任何中心化组件,这使得它非常容易扩展。
- 高度定制化:各个组件(比如 Source 、 Channel 和 Sink 等)是可插拔的,用户很容易根据需求进行定制。
- 声明式动态化配置: Flume 提供了一套声明式配置语言,用户可根据需要动态配置一个基于 Flume 的数据流拓扑结构。
- 语意路由:可根据用户的设置,将流式数据路由到不同的组件或存储系统中,这使得搭建一个支持异构的数据流变得非常容易。
Flume的版本
Flume OG到Flume NG
FLUM OG(初代):
-
FLUM OG 有三种角色的节点:代理节点(agent)、收集节点(collector)、主节点(master)。
-
agent 从各个数据源收集日志数据,将收集到的数据集中到 Collector,然后由收集节点汇总存入 HDFS。master 负责管理 agent,collector 的活动。
-
agent、collector 都称为 node,node 的角色根据配置的不同分为 logical node(逻辑节点)、physical node(物理节点)。
-
agent、collector 由 source、sink 组成,代表在当前节点数据是从 source 传送到 sink。
Flume NG 取消了集中管理配置的 Master 和 Zookeeper,变为一个纯粹的传输工具。Flume NG 另一个主要的不同点是读入数据和写出数据现在由不同的工作线程处理(称为Runner)。在 Flume OG 中,读入线程同样做写出工作(除了故障重试),如果写出慢的话(不是完全失败),它将阻塞 Flume 接收数据的能力。这种异步的设计使读入线程可以顺畅的工作而无需关注下游的任何问题。
FLUME NG(二代)
-
NG 只有一种角色的节点:代理节点(agent)。
-
没有 collector、master 节点,这是核心组件最核心的变化。
-
去除了 physical nodes、logical nodes 的概念和相关内容。
-
agent 节点的组成也发生了变化。Flume NG 的 agent 由 source、sink、Channel 组成。
flume ng 节点组成图:
多 Agent 并联下的架构图:
Flume 的特性
flume 的数据流由事件(Event)贯穿始终。事件是 Flume 的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些 Event 由 Agent 外部的 Source 生成,当 Source 捕获事件后会进行特定的格式化,然后 Source 会把事件推入(单个或多个) Channel 中。可以把 Channel 看作是一个缓冲区,它将保存事件直到 Sink 处理完该事件。
Sink 负责持久化日志或者把事件推向另一个 Source。
flume 具备高可靠性:
当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,从强到弱依次分别为:
-
end-to-end:收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。
-
Store