Flume学习笔记:Flume的安装与基础应用
目录
Flume是什么
Flume是Cloudera公司发布的开源的日志收集工具
分布式、可靠和高可用的海量日志采集、聚合和传输的日志收集系统
系统灵活性高:数据源可定制、可扩展;数据存储系统可定制、可扩展
中间件:屏蔽了数据源和数据存储系统的异构性
Flume基本架构
Event
Event是Flume数据传输的基本单元,Flume以Event的形式将数据从数据源传送到最终的目的地。
Event由可选的header和载有数据的byte array构成,Header是容纳了kv字符串对的无序集合,key在集合里唯一。
Agent
一个Agent包括了Source、Channel和Sink,Agent是Flume流的基础部分。
Flume为这些组件提供了配置、生命周期管理、监控支持。
Agent必须部署在采集的机器上。
Source
Source负责接收Event或通过特殊机制产生Event,并将Event批量的放到一个或多个Channel
包含Event驱动(即数据源将数据推到Source)和轮询(Source向数据源读数据)两种类型
Source必须至少和一个Channel关联
Source的不同类型:
与系统集成的Source:Syslog,Netcat,监测目录池
自动生成Event的Source:Exec
用于Agent和Agent之间通信的IPC Source:Avro、Thrift
Channel
Channel位于Source和Sink之间,用于缓存从Source传进来的Event
Channel成功缓存Event后,会将Event发送到Sink
不同的Channel所提供的持久化水平是不同的
Memory Channel:volatile(不稳定的)
File Channel:基于WAL实现
JDBC Channel:基于嵌入式Database实现
Channel可以和任意数量的Source、Sink工作
Sink
Sink负责将Event传输到下一个Source或者最终目的地,成功后该Event将从Channel中移除
不同类型的silk
存储event到最终目的地终端sink,比如 HDFS,HBase
自动消耗的sink 比如 null sink
用于agent间通信的IPC:sink:Avro
必须作用于一个确切的channel
Interceptor:作用于Source,用于拦截、修改或者放弃Event。
Channel Selector:允许Source基于预设的标准,从所有Channel中,选择一个或者多个Channel
Sink Processor:多个Sink可以构成一个Sink Group,Sink Processor可以通过组中所有Sink实现负载均衡;也可以在一个Sink失败的时候转移到另一个
Flume的安装
https://www.cnblogs.com/haozhengfei/p/2192231596ceb2ac4c22294dbd25a1ca.html
这篇文章里讲述了五种情况下Flume的安装,在学习的过程中测试环境里只安装单个Flume。
测试环境
hive-1.1.0-cdh5.14.0
hbase-1.2.0-cdh5.14.0
hadoop-2.6.0-cdh5.14.0
zookeeper-3.4.5-cdh5.14.0
jdk1.8.0_171
apache-flume-1.6.0-cdh5.14.0-bin
解压tar包后,将flume-env.sh-template改名为flume-env.sh,并更改JAVA_HOME
需求:监控文件夹/flumeagent,将新增加的文件进行采集并打印在console上
写配置文件
指定agent的名字为a1,然后指定对应source、channel、sink的名字,再对他们进行配置
执行命令
flume-ng agent --conf $FLUME_HOME/conf/ --conf-file /agent.conf --name a1 -Dflume.root.logger=INFO,console
会有相关提示
然后往文件夹里添加文件
Flume里也会采集到对应的文件
进入文件夹可以看到文件被打上了Completed的标签,下次就不会重复采集了
上一篇: 在沙县小吃吃饭
下一篇: 那一夜他为小区挽回了千万损失。
推荐阅读
-
java 学习笔记(入门篇)_java的安装与配置
-
archLinux 学习笔记--mlocate的安装与使用
-
java 学习笔记(入门篇)_java的安装与配置
-
php学习笔记 面向对象中[接口]与[多态性]的应用
-
黑马Android76期学习笔记01基础--day07--广播,有、无序广播、特殊广播接受者、样式和主题,this与context的区别、普通对话框,进度条对话框、帧动画
-
python web学习笔记二---Django框架应用和基本运行方式(基础的用户登录)
-
Django基础与使用命令创建Django的过程(Django学习笔记)
-
C++基础 学习笔记二:变量的声明与初始化赋值
-
Flume入门,基础,学习笔记
-
HTML&CSS基础学习笔记1.24-input标签的单选与多选