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.

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#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的名字、指定配置目录和配置文件
    官方格式:

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

在例子中编写成如下↓↓

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

来自:http://my.oschina.net/u/2377453/blog/473150

Flume入门的更多相关文章

  1. 大数据学习day35----flume01-------1 agent(关于agent的一些问题),2 event,3 有关agent和event的一些问题,4 transaction(事务控制机制),5 flume安装 6.Flume入门案例

    具体见文档,以下只是简单笔记(内容不全) 1.agent Flume中最核心的角色是agent,flume采集系统就是由一个个agent连接起来所形成的一个或简单或复杂的数据传输通道.对于每一个Age ...

  2. Flume 入门--几种不同的Sources

    1.flume概念 flume是分布式的,可靠的,高可用的,用于对不同来源的大量的日志数据进行有效收集.聚集和移动,并以集中式的数据存储的系统. flume目前是apache的一个顶级项目. flum ...

  3. Flume入门——Selector、Chanel等

    1.selector (http://blog.csdn.net/looklook5/article/details/40430965) (http://blog.csdn.net/xiao_jun_ ...

  4. 《OD大数据实战》Flume入门实例

    一.netcat source + memory channel + logger sink 1. 修改配置 1)修改$FLUME_HOME/conf下的flume-env.sh文件,修改内容如下 e ...

  5. 大数据入门第十二天——flume入门

    一.概述 1.什么是flume 官网的介绍:http://flume.apache.org/ Flume is a distributed, reliable, and available servi ...

  6. Apache Flume入门指南[翻译自官方文档]

    声明: 根据官方文档选择性的翻译了下,不对请指正 https://flume.apache.org/FlumeUserGuide.html

  7. Flume入门:安装、部署

    一.什么是Flume? flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用.Flume 初始的发行版本目前被统称为 Flume OG(original genera ...

  8. Flume 入门--几种不同的Sinks

    主要介绍几种常见Flume的Sink--汇聚点 1.Logger Sink 记录INFO级别的日志,一般用于调试.前面介绍Source时候用到的Sink都是这个类型的Sink 必须配置的属性: 属性说 ...

  9. Flume入门样例

    Flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用.Flume 初始的发行版本目前被统称为 Flume OG(original generation),属于 clo ...

随机推荐

  1. 用Bluepages来验证intranetId和Password的有效性

    代码很简单,如下: int ret = -1;ReturnCode rc = null;            cwa2 cw = new cwa2();rc = cw.authenticate(in ...

  2. C#.NET常见问题(FAQ)-SplitPanel如何设置上下和左右

    定位到Orientation属性即可     更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123   我的在线论坛: http: ...

  3. 【CSWS2014 Main Conference】Some Posters

    随机选了几张POSTER,之前没做过POSTER的同学可以看一下文字.图片.布局以及每个版块的小标题,以后如果需要做poster就容易多了. 据说这种Poster一张需要60RMB左右. 其中第5幅是 ...

  4. 【转】Spring中IoC的优点与缺点

    1. 优点 我们知道,在Java基本教程中有一个定律告诉我们:所有的对象都必须创建:或者说:使用对象之前必须创建,但是现在我们可以不必一定遵循这个定律了,我们可以从Ioc容器中直接获得一个对象然后直接 ...

  5. Android 笔记-Fragment 与 Activity之间传递数据

    Fragment 与 Activity之间传递数据有两种方法.一种是使用setArgument,一种是使用接口回调.以下先学习第一种方法. (1)使用setArgument方法: 为了便于理解,我在这 ...

  6. iOS CGRectGetMaxX/Y 使用

    在iOS的界面布局中我们能够使用CGRectGetMaxX 这种方法来方便的获取当前控件的x坐标值+宽度的数值.这样便能够方便布局. 同理CGRectGetMaxY是获取y坐标值+控件高度的值,当然这 ...

  7. vue 通信方式汇总

    1.10种通信方式 10种:https://juejin.im/post/5bd18c72e51d455e3f6e4334 2.除此之外,还有children和ref. 需要注意 $children  ...

  8. servlet Servlet例子

    Servlet是sun公司提供的一门用于开发动态web资源的技术.   Sun公司在其API中提供了一个servlet接口(参看J2EE API文档),用户若想使用Java程序开发一个动态web资源, ...

  9. 全球免费知名DNS服务器

    全球免费知名DNS服务器 jalone 2013-06-18 14:25:46 最近老是发表DNS相关文章,今天继续说DNS,国内75%以上的家用宽带路由器存在严重的安全隐患:用户浏览网页的时候其DN ...

  10. mybatis对mysql进行分页

    Mybatis对mysql数据库分页 在generator中增加插件,下载地址http://download.csdn.net/detail/shunlongjin/6937045 <plugi ...