Flume是Cloudera提供的一个高可用的,高可靠的。分布式的海量日志採集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同一时候,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

Flume有两个版本号,Flume 0.9X或CDH3及更早版本号的统称Flume-og,Flume-og由agent、collection、master等组件组成。Flume1.X或CDH4及以后的版本号统称Flume-ng,Flume-ng由agent、client等组件组成。截止到眼下为止,Flume最新版本号为1.6.0版本号。Flume1.6.0有几个新特性:

  • Flume Sink and Source for Apache Kafka(source、sink新增对Kafka的支持)
  • A new channel that uses Kafka(channel使用Kafka的消息通道)
  • Hive Sink based on the new Hive Streamingsupport
  • End to End authentication in Flume
  • Simple regex search-and-replace interceptor(拦截器支持简单的正則表達式)

Agent

Flume执行的核心是agent,agent用于採集数据。将数据源的数据发送给collector。它是一个完整的数据收集工具,含有三个核心组件,各自是source、channel、sink。Event从Source,流向Channel,再到Sink。Event代表着一个数据流的最小完整单元,从外部数据源来。向外部的目的地去。Source:完毕对日志数据的收集,分成transtion和
event 打入到channel之中。Channel:主要提供一个队列的功能,对source提供中的数据进行简单的缓存。Sink:取出Channel中的数据,进行对应的存储文件系统。数据库。或者提交到远程server。

通过这些组件,event能够从一个地方流向还有一个地方,例如以下图所看到的。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

Source消费从外部流进的Events,如AvroSource接收外部client传来的或是从别的agent流出来的Avro
Event。Source能够把event送往一个或多个channel。

channel是一个队列。持有event等待sink来消费。一种Channel的实现:FileChannel使用本地文件系统来作为它的存储。Sink的作用是把Event从channel里移除,送往外部数据仓库或给下一站agent的Source。如HDFSEventSink送往HDFS。同个agent下的source和sink是异步的。

flume-ng是由一个个agent组成的。一个agent就像一个细胞一样。当然能够自由组合,例如以下图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

下图为多对一Collection场景:

Source

完毕对日志数据的收集。分成transtion和 event打入到channel之中

  • Source用于获取数据,可从文本文件,syslog,HTTP等获取数据
  • Sink将Source获得的数据进一步传输给后面的Collector。
  • syslogTcp(5140) |agentSink("localhost",12345)
  • tail("/etc/services") |agentSink("localhost",12345)

能够让应用程序同已有的Source直接打交道,如AvroSource。SyslogTcpSource。

也能够写一个Source。以IPC或RPC的方式接入自己的应用。

Flume自带了直接可用的数据源(source),如:

ltext("filename")

ltail("filename")

lfsyslogTcp(5140)

lconsole("format")

lexec

lexecPeriodic

lexecStream

lirc

llog4jfile

lmultitail

lnonlsynth

lnull

lreport

lrpcSource

lscribe

lseqfile

lsyslogTcp

lsyslogTcp1

lsyslogUdp

l……

对于直接读取文件Source,有两种方式:

lExecSource:以执行Linux命令的方式。持续的输出最新的数据,如tail
-F
文件名称指令,在这样的方式下。取的文件名称必须是指定的。 ExecSource能够实现对日志的实时收集,可是存在Flume不执行或者指令执行出错时,将无法收集到日志数据,无法保证日志数据的完整性。

lSpoolSource:监測配置的文件夹下新增的文件,并将文件里的数据读取出来。

须要注意:复制到spool文件夹下的文件不能够再打开编辑;spool文件夹下不可包括对应的子文件夹。SpoolSource尽管无法实现实时的收集数据,可是能够使用以分钟的方式切割文件。趋近于实时。假设应用无法实现以分钟切割日志文件的话,能够两种收集方式结合使用。

在实际使用的过程中,能够结合log4j使用,使用log4j的时候,将log4j的文件切割机制设为1分钟一次。将文件复制到spool的监控文件夹。

log4j有一个TimeRolling的插件,能够把log4j切割的文件到spool文件夹。

基本实现了实时的监控。

Flume在传完文件之后,将会改动文件的后缀,变为.COMPLETED(后缀也能够在配置文件里灵活指定)

Channel

Channel有多种方式:

有MemoryChannel,JDBCChannel,MemoryRecoverChannel,FileChannel。

MemoryChannel能够实现快速的吞吐,可是无法保证数据的完整性。

MemoryRecoverChannel在官方文档的建议上已经建义使用FileChannel来替换。

FileChannel保证数据的完整性与一致性。在详细配置不限的FileChannel时,建议FileChannel设置的文件夹和程序日志文件保存的文件夹设成不同的磁盘,以便提高效率。

Sink

Sink在设置存储数据时,能够向文件系统、数据库、hadoop存数据。在日志数据较少时。能够将数据存储在文件系中。而且设定一定的时间间隔保存数据。在日志数据较多时,能够将对应的日志数据存储到Hadoop中。便于日后进行对应的数据分析。

Flume提供了非常多Sink,如:

lconsole[("format")]

ltext(“txtfile”)

ldfs(“dfsfile”)

lsyslogTcp(“host”,port)

lagentSink[("machine"[,port])]

lagentDFOSink[("machine"[,port])]

lagentBESink[("machine"[,port])]

lattr2hbase

lavroSink

lcollectorSink

lcounter

lformatDfs

lhbase

lirc

llogicalSink

lmultigrep

lregexhisto

lregexhistospec

lrpcSink

lseqfile

lthriftSink

l……

扫描以下的二维码能够关注作者的微信公众号。

大数据技术之Flume研究摘要(一)的更多相关文章

  1. 大数据技术之Flume

    第1章 概述 1.1 Flume定义 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统.Flume基于流式架构,灵活简单. 1.2 Flume组成架构 ...

  2. 大数据技术生态圈形象比喻(Hadoop、Hive、Spark 关系)

    [摘要] 知乎上一篇很不错的科普文章,介绍大数据技术生态圈(Hadoop.Hive.Spark )的关系. 链接地址:https://www.zhihu.com/question/27974418 [ ...

  3. 从大数据技术变迁猜一猜AI人工智能的发展

    目前大数据已经成为了各家互联网公司的核心资产和竞争力了,其实不仅是互联网公司,包括传统企业也拥有大量的数据,也想把这些数据发挥出作用.在这种环境下,大数据技术的重要性和火爆程度相信没有人去怀疑. 而A ...

  4. 【学习笔记】大数据技术原理与应用(MOOC视频、厦门大学林子雨)

    1 大数据概述 大数据特性:4v volume velocity variety value 即大量化.快速化.多样化.价值密度低 数据量大:大数据摩尔定律 快速化:从数据的生成到消耗,时间窗口小,可 ...

  5. 大数据技术之Hadoop入门

      第1章 大数据概论 1.1 大数据概念 大数据概念如图2-1 所示. 图2-1 大数据概念 1.2 大数据特点(4V) 大数据特点如图2-2,2-3,2-4,2-5所示 图2-2 大数据特点之大量 ...

  6. 除Hadoop大数据技术外,还需了解的九大技术

    除Hadoop外的9个大数据技术: 1.Apache Flink 2.Apache Samza 3.Google Cloud Data Flow 4.StreamSets 5.Tensor Flow ...

  7. 参加2013中国大数据技术大会(BDTC2013)

    2013年12月5日-6日参加了为期两天的2013中国大数据技术大会(Big Data Technology Conference, BDTC2013),本期会议主题是:“应用驱动的架构与技术 ”.大 ...

  8. Google大数据技术架构探秘

    原文地址:https://blog.csdn.net/bingdata123/article/details/79927507 Google是大数据时代的奠基者,其大数据技术架构一直是互联网公司争相学 ...

  9. 【云+社区极客说】新一代大数据技术:构建PB级云端数仓实践

    本文来自腾讯云技术沙龙,本次沙龙主题为构建PB级云端数仓实践 在现代社会中,随着4G和光纤网络的普及.智能终端更清晰的摄像头和更灵敏的传感器.物联网设备入网等等而产生的数据,导致了PB级储存的需求加大 ...

随机推荐

  1. CentOS 7.4 下搭建 Elasticsearch 6.3 搜索群集

    上个月 13 号,Elasticsearch 6.3 如约而至,该版本和以往版本相比,新增了很多新功能,其中最令人瞩目的莫过于集成了 X-Pack 模块.而在最新的 X-Pack 中 Elastics ...

  2. V形

    <!doctype html><html><head><meta charset="utf-8"><title>无标题文 ...

  3. python自动化--模块操作之re、MySQL、Excel

    一.python自有模块正则 import re # re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None print(re.match("www ...

  4. ImmutableJS

    引用大神的一句话:(具体是谁自己问度娘) Shared mutable state is the root of all evil(共享的可变状态是万恶之源) -- Pete Hunt   JavaS ...

  5. Java 基础入门随笔(6) JavaSE版——数组操作

    1.数组 概念:同一种类型数据的集合.其实就是数组就是一个容器. 好处:可以自动给数组中的元素从0开始编号,方便操作这些元素. 格式: ①. 元素类型[] 数组名 = new 元素类型[元素个数或数组 ...

  6. CLISTCTRL2

    回顾: 刚刚写完,因为是分期写的,所以最初想好好做一下的文章格式半途而废了~说的也许会有点啰嗦,但是所有的基础用到的技术细节应该都用到了. 如果还有什么疑问,请回复留言,我会尽力解答. 如果有错误,请 ...

  7. HDU多校Round 1

    Solved:5 rank:172 A.Maximum Multiple #include <stdio.h> #include <algorithm> #include &l ...

  8. 转自王垠Blog——写给清华大学的退学申请

    清华梦的粉碎—写给清华大学的退学申请(转自王垠Blog)   清华梦的诞生 小时候,妈妈给我一个梦.她指着一个大哥哥的照片对我说,这是爸爸的学生,他考上了清华大学,他是我们中学的骄傲.长大后,你也要进 ...

  9. 洛谷——P1471 方差

    P1471 方差 题目描述 蒟蒻HansBug在一本数学书里面发现了一个神奇的数列,包含N个实数.他想算算这个数列的平均数和方差. 借一下远航之曲大佬的图片,特别清晰: 那么只要维护区间平方和,就可以 ...

  10. UVA - 11214 Guarding the Chessboard(迭代加深搜索)

    题目: 输入一个n*m的棋盘(n,m<10),某些格子有标记,用最少的皇后守卫(即占据或攻击)所有的标记的格子.输出皇后的个数. 思路: 一开始没有想到用迭代加深搜索,直接dfs结果还没写完就发 ...