我在flume-ng 1.1.0 孵化版的时候就开始接触了,自己也搞了一段时间,没事扯扯心得吧。

先说在前面,flume-ng 后面的版本,我没仔细读change log ,比较农民 , 不知道新添了哪些特别NB的功能,有说错的地方,还请多多指教。

首先,介绍一个非常全的文章,http://flume.apache.org/FlumeUserGuide.html 看了这篇文章,基本上别的都不用看了。(囧~~~~) 没错是官网文章,flume 其实很简单,所以官网上的文章已经介绍的很全了,如果你懒得看英文,那么就听我扯扯吧。

先讲讲flume是啥东西。可能大家都遇到过类似的问题,数据(日志信息)分布在N台机器上,想要把它们汇聚在一起组成一个大文件,来处理。在google,每台机器都装GFS,直接存本地就ok了。但是不是所有的公司都是这种架构,那怎么办?这时候类似于flume这样的日志收集工具就闪亮登场了。flume主要起到以下几个作用:收集、聚合和搬运数据。正如文档一开头说的:Apache Flume is a distributed, reliable, and available system for efficiently collecting, aggregating and moving large amounts of log data from many different sources to a centralized data store.

你可以说我传数据用scp, rysnc 也可以啊。没错,是没问题。但是那些是指的传文件,要是流式数据呢?还有传输过程中出错了呢?包括到底传了多少有监控吗?最后有个变态的需求,数据以XXXX开头的给我放在一个地方,以AAAAA开头的放在另一个地方,你怎么办?

然后说说为啥是ng,这里就不说为啥是flume了,因为我也没用过其他的。没试用过就没有发言权........各位可以自己去找找比较的文章。不过我感觉说的都是很笼统,就闭着眼自己调一个吧。

当时我们在技术选型的时候有0.9X版本和ng版本,我们毅然决然地选了ng。原因很简单,ng的架构很简单,很好懂。越简单的东西越稳定!

说说flume的架构:

这是一个flume-ng 最简单的图。flume-ng 是由一个个agent组成的。一个agent就像一个细胞一样。当然可以自由组合,如下图:

上面是两个agent链接在一起的,再看看更多的......

你会发现帅呆了。就像拼积木一样........

没错,整个flume-ng 架子是由一个一个agent拼接而成的,支持多层次多项扩展。这样非常灵活。

当然,也可以这么配:

下面说说 每个agent的构造:

每个agent里都有三部分构成:source、channel和sink。

就相当于source接收数据,通过channel传输数据,sink把数据写到下一端。这就完了,就这么简单。其中source有很多种可以选择,channel有很多种可以选择,sink也同样有多种可以选择,并且都支持自定义。哇塞,太灵活了。想怎么玩就怎么玩。

同时,如上上图所示,agent还支持选择器,就是一个source支持多个channel和多个sink,这样就完成了数据的分发。

这就完了,flume-ng就这么简单........

从看到最后用,一天足可以搞定。剩下的就是怎么组织你的agent的问题了。也就是搭积木的过程......

另外有一点需要强调的是,flume-ng提供了一种特殊的启动方式(不同于agent),那就是client启动。cilent是一个特殊的agent, 他的source是文件,channel是内存,sink是arvo。实际上是为了方便大家用,直接来传递文件的。具体可以看看官方使用手册。

估计到这儿,应该对flume-ng有了解了吧。

等等,好像少了点儿什么...........你说监控? 不好意思,当时我用的时候,flume-ng还没出监控和图形界面。现在出没出我不知道,不过我自己写了个。什么?你想听听怎么做?下次吧......

你的flume-ng的第一篇博客的更多相关文章

  1. 第一篇博客:Hello World

    2016年10月10日,双十,好日子,决定开始写第一篇博客,标题想了会,就叫Hello World 吧,哈哈^_^. 首先感谢博客园的管理们能批准我的申请,记得在14年的时候申请过一次,竟然没申请通过 ...

  2. 我的第一篇博客 ——【ToDoList】小程序开发

    我是一只即将大四的大三狗,这是我的第一篇博客,说来惭愧.今年1月份,学校放寒假的时候开始自学的IOS,放假的时候比较起劲,看了一堆Object-C的视频,然后照着中英文对照的IOS基础开发教程,做了两 ...

  3. Hello World -- 第一篇博客

    今年注定是不寻常的一年,因为技术,接触了许多大牛.通过一篇篇博文,看到了大牛们勤奋好学.孜孜不倦的精神,于是决定也开个博客,向大牛学习. 博客开了,写点什么呢?奈何肚子里墨水不多,吐出来也多是白沫,不 ...

  4. Ginger的第一篇博客

    怀着无感的心情,没有技术的身体,写下第一篇博客作为标记. 目前应该会搞清楚数据结构上相关的操作.算法,然后用c语言实现后记录在博客. 我是有目标的咸鱼! 2019/4/19

  5. “Hello, my first blog”------第一篇博客的仪式感

    本人在校大学生一枚,开通博客,主要是想记录自己的学习过程,分享自己的学习经历.记得大一的时候,很多不懂的操作和知识,都是在博客上找到了相应的解决办法.但比较讽刺的是,很多时候,曾经解决了的问题,当再次 ...

  6. 我的第一篇博客。(JavaScript的声明和数据类型的一些笔记)

    这是我的第一篇博客,务必请大家多多关照. 下面是前端js的变量和数据类型的一些笔记,不是很全请多多包涵. 1.变量 变量的声明 var 变量名 变量这个容器中放的是数据 变量的赋值 变量名 = 数据 ...

  7. 我的第一篇博客:不用sizeof求int的bit数

    我的第一篇博客..  还不会什么高端的东西就来点基础的. 不用sizeof求int的bit数 //不用sizeof求int的bit数 #include<stdio.h> int main( ...

  8. 第一篇博客 安装open live writer

    第一篇博客安装open live writer http://openlivewriter.org/ 有的人可能会打不开,所以我准备了一个百度云的链接地址 链接:https://pan.baidu.c ...

  9. C博客作业00—我的第一篇博客

    C博客作业00-我的第一篇博客 1. 你对网络专业或者计算机专业了解是怎样? 泛泛了解 - 原先只知道网络工程隶属于计算机工程学院,与院中其他专业一样,同样都需要学习大量的计算机基础知识,然后再分支学 ...

  10. Hello World -- 第一篇博客 -- 活着的意义

    今年注定是不寻常的一年,因为技术,接触了许多大牛.通过一篇篇博文,看到了大牛们勤奋好学.孜孜不倦的精神,于是决定也开个博客,向大牛学习. 博客开了,写点什么呢?奈何肚子里墨水不多,吐出来也多是白沫,不 ...

随机推荐

  1. linux awk命令详细使用方法

    简单介绍 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部 ...

  2. Python - 缩写(capwords) 和 创建转换表(maketrans) 详细说明

    缩写(capwords) 和 创建转换表(maketrans) 详细说明 本文地址: http://blog.csdn.net/caroline_wendy/article/details/27051 ...

  3. Redis集群环境安装指南

    环境 RHLinux-6.4-64-EN, 红帽6.4 64位,英文正式公布版. Redis3.0.0 redis2.x版本号还不支持集群,3.0版本号将会支持,如今3.0版本号还在开发中,如今是be ...

  4. 纯CSS3彩色边线3D立体按钮制作教程

    原文:纯CSS3彩色边线3D立体按钮制作教程 今天我们来分享一款利用纯CSS3实现的3D按钮,这款按钮的一个特点是有彩色的边线,这让整个按钮显得比较多姿多彩,没那么枯燥无趣.本文不仅可以让大家看到演示 ...

  5. 查询记录rs.previous()使用

    查询记录rs.previous()使用 假如查询一个数据表,假设没有记录就显示提示信息.有就所有显示出来查询结果.这时假设是有查询结果的话就须要进行两次查询.第一次查完记录指针指向最后一条记录.開始第 ...

  6. Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory

    1.错误叙述性说明 2014-7-12 0:38:57 org.apache.catalina.core.ApplicationContext log 信息: No Spring WebApplica ...

  7. 建立Cent OS7server有些问题需要注意

    1.与网络有关的问题 (1)网络配置问题 CentOS 7 与曾经的版本号项目在网络配置等许多的地方都做了比較大的改动,比如你会发现ifconfig命令没有了... 这是由于,centos7以下使用: ...

  8. String不变性

    String不变性理解类型: String x = "java"; System.out.println(x);//输出为java x.concat("java" ...

  9. Shuttle ESB

    Shuttle ESB(六)——在项目中的应用 如果说你认真看了前面几篇关于ESB的介绍,我相信,在这一篇文章中,你将会找到很多共鸣. 尽管,市面上开源的ESB确实非常之多,像Java中的Mule E ...

  10. MVC EF 修改 封装类 通用泛型方法(二)

    修改 这个 方法 如下. 排除 null 值. /// <summary> /// 修改 多数 数据, 个别数据除外, proNames 不写 则是 修改全部 /// </summa ...