本教程的目的:
介绍一下概念
Event: 事件是从Flume agent发过来的一个数据流单元。事件从 Source 到 Channel 到 Sink。
Flume agen: 是一个jvm 进程。这个进程负责将外部的来源产生的Event转发到外部的目的地
Source: 负责消费有特殊格式的Event。这些Event会通过一个外部的来源(比如一个web服务器)传递给Source. 比如一个 AvroSource 用来接收由客户端或者在同一个流程上其他的Flume agent 发过来的 Avro Event (注意:flume的agent是可以一个接一个的串联起来的)
当Source接收到Event的时候,它会把Event存储到Channel(通道)里面。Channel被动的存储和保持Event直到Sink消费掉它
打个比方,有一种Channel叫 FileChannel,它使用文件系统来存储文件
Sink:用来从Channel中移除Event,并且把Event放到外部资源库,比如hdfs(这种Sink叫HDFSEventSink)。或者也可以继续把Event推送给在同一个流程中的下一个Source。
flume-ng — flume本身
flume-ng-agent — 把flume agent做成一个服务的脚本
flume-ng-doc — Flume 文档
测试一下
会输出帮助信息
介绍下 Logger Sink: 采用日志的形式来消费Event。日志级别为INFO
介绍下 Memory Channel : 使用内存来暂存Event
粘贴以下文本进example.conf并保存
- flume 跟 hadoop 有什么关系
- 介绍flume的结构
- 介绍flume的安装
- 做一个简单的收集网络发送过来的文本(NetCat Source)并保存到日志文件(Logger Sink)的例子
flume 跟 hadoop 有什么关系
hadoop是一个分布式系统,跟hadoop配合的一般也是分布式系统,分布式系统带来的就是分布式日志,分布式日志带来1. 日志数量多 2. 日志数据量大, 所以无论是采集分布式的日志还是存储海量的日志到hadoop,都需要一个日志收集系统,这就是flume。不过其实关系也不是太大,日志方面没有太大需求的人其实可以跳过flume的学习
flume 结构
以下是一张解释flume如何工作的图介绍一下概念
Event: 事件是从Flume agent发过来的一个数据流单元。事件从 Source 到 Channel 到 Sink。
Flume agen: 是一个jvm 进程。这个进程负责将外部的来源产生的Event转发到外部的目的地
Source: 负责消费有特殊格式的Event。这些Event会通过一个外部的来源(比如一个web服务器)传递给Source. 比如一个 AvroSource 用来接收由客户端或者在同一个流程上其他的Flume agent 发过来的 Avro Event (注意:flume的agent是可以一个接一个的串联起来的)
当Source接收到Event的时候,它会把Event存储到Channel(通道)里面。Channel被动的存储和保持Event直到Sink消费掉它
打个比方,有一种Channel叫 FileChannel,它使用文件系统来存储文件
Sink:用来从Channel中移除Event,并且把Event放到外部资源库,比如hdfs(这种Sink叫HDFSEventSink)。或者也可以继续把Event推送给在同一个流程中的下一个Source。
flume一般是这样用的
或者是这样的
安装 flume
flume有三个组件flume-ng — flume本身
flume-ng-agent — 把flume agent做成一个服务的脚本
flume-ng-doc — Flume 文档
$ yum install -y flume-ng flume-ng-agent flume-ng-doc
测试一下
$ flume-ng help
会输出帮助信息
使用flume
flume监听NetCat例子
Step1
介绍下 NetCat Source : 这个source会监听一个端口,然后把每行通过这个端口发过来的文本当做一个事件传给channel介绍下 Logger Sink: 采用日志的形式来消费Event。日志级别为INFO
介绍下 Memory Channel : 使用内存来暂存Event
$ vim /etc/flume-ng/conf/example.conf
粘贴以下文本进example.conf并保存