Flume入门知识点有哪些

80次阅读
没有评论

共计 3448 个字符,预计需要花费 9 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 Flume 入门知识点有哪些,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1、Flume 是什么?

 ○ Flume 是由 cloudera 开发的实时日志收集系统
 ○ 核心概念是由一个叫做 Agent(代理节点) 的 java 进程运行在日志收集节点
 ○ Flume 在 0.94.0 版本以前(包含 0.94.0 版本) 称为 Cloudera Flume OG, 由于 0.94.0 版本以前存在各种缺陷, 因此不得不重新设计 Flume 并更名为 Apache Flume NG(1.0.0 开始)
 ○ Flume NG VS Flume OG
 – 目前版本都是 Flume NG(1.0.0 版本之后)
  架构方面:
 □ Flume OG 有三种角色的节点:代理节点 agent、收集节点 collector、主节点 master
 □ agent 负责从各个数据源收集日志数据、将收集到的数据集中到 collector, 再由 collector 节点汇总存入到 HDFS. 而 master 负责管理 agent\collector 的活动
 □ agent、collector 都称为 node,node 的角色根据配置的不同分为逻辑节点和物理节点, 对于逻辑节点的区分、配置、使用非常复杂.
 □ agent、collector 由 source、sink 组成, 表示当前节点的数据从 source 传送到 sink

  以上相对于 Flume NG 来说:

 □ Flume NG 只有一种角色节点:代理节点 agent
 □ 没有 collector、master 节点, 这是最核心的变化.
  □ 去除逻辑节点和物理节点的概念和内容
  □ agent 节点的组成发生变化, 由 source、sink、channel 三个组件组成
 Zookeeper 方面:
 □ Flume OG 的稳定性依赖 zookeeper, 它需要 zookeeper 对其多类节点的工作进行管理, 虽然 OG 可以使用内存的方式对各类节点进行管理, 但需要用户忍受机器出现故障时信息丢失的出现.
 □ Flume NG 的节点角色数量由原来的 3 个缩减为 1 个, 不存在多类角色的问题, 所以不再需要 zookeeper 对各类节点协调的作用, 由此脱离了对 zookeeper 的依赖.

2、Flume 的三个组件

  一个 Agent 进程包含了三个组件:Source 组件、Channel 组件、Sink 组件,Source 组件负责收集日志文件并发送给 Channel 组件,Channel 组件形成一个管道, 再由 Sink 组件读取 Channel 组件中的日志文件并发送给其他目标或者文件系统

 

 Source 组件:专门收集日志文件,可以处理各种类型的日志数据,如:Avro、Thrift、Exec、JMS、Spooling Directory、Twitter、Kafka、NetCat、Sequence Generator、Syslog、HTTP、Stress、Legacy、Custom(自定义格式)、Scribe
 Channel 组件:专门用于存放临时文件,存储的位置可以是 Memory、JDBC、Kafka、File、Spillable Memory、Pseudo Transaction、Custom(自定义)
 Sink 组件:专门用于发送存放在 Channel 组件中的数据,发送的目标包括:HDFS、Hive、Logger、Thrift、IRC、File Roll、Null、HBase、MorphlineSolr、ElasticSearch、Kite Dataset、Kafka、Custom(自定义)
 Note:
 ○ 具体各种使用请参官方文档:http://flume.apache.org/FlumeUserGuide.html#flume-sink-processors
 ○ Channel 中的数据只有在 Sink 组件发送成功后才会被删除
 ○ 在整个数据的传输过程中流动的是 event,event 可以理解为是 flume 中数据传输的基本单位,event 表现为一条条的数据, 其事务保证是 event 级别.
 ○ flume 支持多级 flume 的 agent, 支持扇入(fan-in)\ 扇出(fan-out)

Note:

 ○ Sink 支持发送多个目标

3、Flume 的安装与配置

 ○ 下载
 apache-flume-1.6.0-bin.tar.gz
 JDK 版本:1.6+
 ○ 解压 FLUME_HOME

tar -zxvf apache-flume-1.6.0-bin.tar.gz

 ○ 安装 JDK、配置 JAVA_HOME、FLUME_HOME.

vi /etc/profile
export FLUME_HOME=/home/app/flume
export PATH=.:$FLUME_HOME/bin

 ○ 一个简单的例子, 监控 /home/data/logs 目录, 一旦有发现文件立即上传到 hdfs 中
 □ 首先编写一个配置文件, 文件名为:example.conf

#agent1 表示代理名称
 agent1.sources=source1
 agent1.sinks=sink1
 agent1.channels=channel1 #Spooling Directory 是监控指定文件夹中新文件的变化,一旦新文件出现,就解析该文件内容,然后写入到 channle。写入完成后,标记该文件已完成或者删除该文件。 # 配置 source1
 agent1.sources.source1.type=spooldir
 # 指定监控的目录
 agent1.sources.source1.spoolDir=/home/data/logs
 agent1.sources.source1.channels=channel1
 agent1.sources.source1.fileHeader = false
 agent1.sources.source1.interceptors = i1
 agent1.sources.source1.interceptors.i1.type = timestamp
 # 配置 sink1
 agent1.sinks.sink1.type=hdfs
 agent1.sinks.sink1.hdfs.path=hdfs://master:9000/flume/data
 agent1.sinks.sink1.hdfs.fileType=DataStream
 agent1.sinks.sink1.hdfs.writeFormat=TEXT
 agent1.sinks.sink1.hdfs.rollInterval=1
 agent1.sinks.sink1.channel=channel1
 agent1.sinks.sink1.hdfs.filePrefix=%Y-%m-%d
 # 配置 channel1
 agent1.channels.channel1.type=file
 #channel 数据存放的备份目录
 agent1.channels.channel1.checkpointDir=/home/data/channel_data.backup
 #channel 数据存放目录
 agent1.channels.channel1.dataDirs=/home/data/channel_data

 □ 将 example.conf 文件放到 $FLUME_HOME/conf 文件夹下
 □ 启动 agent 进程命令:需要指定 agent 的名字、指定配置目录和配置文件
  官方格式:

bin/flume-ng agent -n $agent_name -c conf -f conf/flume-conf.properties.template

在例子中编写成如下↓↓

 bin/flume-ng agent -n agent1 -c conf -f conf/example.conf -Dflume.root.logger=DEBUG,console
 -Dflume.root.logger=DEBUG,console 是在控制台打印信息

 □ 重新打开一个终端,上传一个文件到 /home/data/logs
 □ /home/data/logs 中的文件被更名为.COMPLETED, 查看 HDFS 文件存在, 配置完毕

关于“Flume 入门知识点有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计3448字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)