文档章节

Flume入门

datapro
 datapro
发布于 2015/07/02 03:03
字数 1203
阅读 2K
收藏 61

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文件存在,配置完毕
待续更新...

© 著作权归作者所有

datapro
粉丝 16
博文 37
码字总数 22063
作品 0
广州
高级程序员
私信 提问
加载中

评论(2)

datapro
datapro 博主

引用来自“超爱fitnesse”的评论

你好,我也在试用flume,用于提高日志采集的可靠性,并输出到Graylog,备份日志文件。
请问你选用flume的依据是什么,用于什么目的?比如:转存到hadoop?
flume是一个分布式的日志收集系统,使用很灵活而且简单,稳定性相对于kafak、scribe、chukwa来说在其之上
超爱fitnesse
超爱fitnesse
你好,我也在试用flume,用于提高日志采集的可靠性,并输出到Graylog,备份日志文件。
请问你选用flume的依据是什么,用于什么目的?比如:转存到hadoop?
Apache Flume 1.9.0 发布,日志服务器

Apache Flume 1.9.0 发布了,Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 本次更新如...

程六金
2019/01/10
2.1K
4
Apache Flume 1.7.0 发布,日志服务器

Apache Flume 1.7.0 发布了,Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 本次更新如...

局长
2016/10/19
2.2K
3
Flume Installation

下载flume二进制安装包:apache-flume-1.6.0-bin.tar.gz http://www.apache.org/dist/flume/1.6.0/ http://www.apache.org/dist/flume/1.7.0/ 把apache-flume-1.6.0-bin.tar.gz文件存放在/op......

Yulong_
2017/08/10
28
0
flume1.8taildirSource

flume使用(一):入门demo flume使用(二):采集远程日志数据到MySql数据库 flume使用(三):实时log4j日志通过flume输出到MySql数据库 flume使用(四):taildirSource多文件监控实时采集...

hblt-j
2018/11/19
190
0
flume 1.7 源码导入eclipse windows

安装maven,设置MAVEN_HOME等配置 下载flume源码 eclipse-oxygen,设置eclipse 使用外部maven,并配置settings.xml 遇到问题: 如果顺利,已将所需jar都下载下来了。 导入后遇到如下问题 fl...

柯里昂
2017/10/31
135
0

没有更多内容

加载失败,请刷新页面

加载更多

Xilinx Zynq-7000 SoC高性能处理器的串口、CAN接口

TLZ7x-EasyEVM是广州创龙基于Xilinx Zynq-7000 SoC设计的高速数据采集处理开发板,采用核心板+底板的设计方式,尺寸为160mm*108mm,它主要帮助开发者快速评估核心板的性能。 核心板采用12层板...

Tronlong创龙
27分钟前
53
0
工作记录-图片高亮和 IE 下载图片错误

去年年底换了新的新项目组,又开始用自己喜欢的 angular 框架开发了,开心[眯眼笑]。这段时间做了几个需求,这里记录一下需要注意的几个点。 图片高亮功能 在原来的DOM层上添加遮罩,添加新的...

IrisHuang
45分钟前
71
0
如何修复MacBook Pro过热:保持MacBook散热的13个技巧

尽管MacBook Pro是一台能处理繁重工作量的高能效机器,但它却无法像市场上其他笔记本电脑一样避免过热。至于什么可以防止发热,那不是一两个技巧就能解决的问题。相反,这是一组技巧可以解决...

mac小叮当
47分钟前
49
0
软件工程-系统分析-用例

一、根据角色、过程来获取用例 在线商城用例 采购阶段 入库阶段 上架阶段 销售阶段 履约阶段 售后阶段 采购员 进货 仓库管理员 入库商品 出库商品; 发货; 商品管理员 上架商品; 下架商品 ...

LongCity
53分钟前
40
0
Vue实战之【企业开发常见问题】

1.vue框架使用注意事项和经验 1.1 解决Vue动态路由参数变化,页面数据不更新 问题描述: 遇到动态路由如:/page/:id 从/page/1 切换到 /page/2 发现页面组件没有更新 解决方式1: 给<router-v...

涂老师
54分钟前
67
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部