Alex 的 Hadoop 菜鸟教程: 第22课 分布式日志收集组件:flume

本文是一篇关于Flume的菜鸟教程,详细介绍了Flume与Hadoop的关系,Flume的基本结构,如何安装和使用Flume,包括通过NetCat监听和收集log4j日志文件并写入HDFS的实例。通过Flume,可以有效地管理和处理分布式系统的海量日志,提升系统的容错性和效率。
摘要由CSDN通过智能技术生成
本教程的目的:
  1. flume 跟 hadoop 有什么关系
  2. 介绍flume的结构
  3. 介绍flume的安装
  4. 做一个简单的收集网络发送过来的文本(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并保存

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值