flume介绍与入门

1 .背景

flume是由鼎鼎大名的cloudera软件公司产出的可分布式日志收集系统,后与2009年被捐赠了apache软件基金会,为hadoop相关组件之一。尤其近几年随着flume的不断被完善以及升级版本的逐一推出,特别是flume-ng;同时flume内部的各种组件不断丰富,用户在开发的过程中使用的便利性得到很大的改善,现已成为apache top项目之一.

2 .概述

1.  什么是flume?

apache Flume 是一个从可以收集例如日志,事件等数据资源,并将这些数量庞大的数据从各项数据资源中集中起来存储的工具/服务,或者数集中机制。flume具有高可用,分布式,配置工具,其设计的原理也是基于将数据流,如日志数据从各种网站服务器上汇集起来存储到HDFS,HBase等集中存储器中。其结构如下图所示:

2.应用场景

比如我们在做一个电子商务网站,然后我们想从消费用户中访问点特定的节点区域来分析消费者的行为或者购买意图. 这样我们就可以更加快速的将他想要的推送到界面上,实现这一点,我们需要将获取到的她访问的页面以及点击的产品数据等日志数据信息收集并移交给Hadoop平台上去分析.而Flume正是帮我们做到这一点。现在流行的内容推送,比如广告定点投放以及新闻私人定制也是基于次,不过不一定是使用FLume,毕竟优秀的产品很多,比如facebook的Scribe,还有Apache新出的另一个明星项目chukwa,还有淘宝Time Tunnel。
3.Flume的优势

1.  Flume可以将应用产生的数据存储到任何集中存储器中,比如HDFS,HBase

2.  当收集数据的速度超过将写入数据的时候,也就是当收集信息遇到峰值时,这时候收集的信息非常大,甚至超过了系统的写入数据能力,这时候,Flume会在数据生产者和数据收容器间做出调整,保证其能够在两者之间提供一共平稳的数据.

3.   提供上下文路由特征

4.   Flume的管道是基于事务,保证了数据在传送和接收时的一致性.

5.   Flume是可靠的,容错性高的,可升级的,易管理的,并且可定制的。

4. Flume具有的特征:

1. Flume可以高效率的将多个网站服务器中收集的日志信息存入HDFS/HBase中

2. 使用Flume,我们可以将从多个服务器中获取的数据迅速的移交给Hadoop中

3. 除了日志信息,Flume同时也可以用来接入收集规模宏大的社交网络节点事件数据,比如facebook,twitter,电商网站如亚马逊,flipkart等

4. 支持各种接入资源数据的类型以及接出数据类型

5. 支持多路径流量,多管道接入流量,多管道接出流量,上下文路由等

6. 可以被水平扩展

 3. Flume的结构

1. flume的外部结构:

如上图所示,数据发生器(如:facebook,twitter)产生的数据被被单个的运行在数据发生器所在服务器上的agent所收集,之后数据收容器从各个agent上汇集数据并将采集到的数据存入到HDFS或者HBase中

2. Flume 事件

事件作为Flume内部数据传输的最基本单元.它是由一个转载数据的字节数组(该数据组是从数据源接入点传入,并传输给传输器,也就是HDFS/HBase)和一个可选头部构成.

典型的Flume 事件如下面结构所示:

我们在将event在私人定制插件时比如:flume-hbase-sink插件是,获取的就是event然后对其解析,并依据情况做过滤等,然后在传输给HBase或者HDFS.

3.Flume Agent

我们在了解了Flume的外部结构之后,知道了Flume内部有一个或者多个Agent,然而对于每一个Agent来说,它就是一共独立的守护进程(JVM),它从客户端哪儿接收收集,或者从其他的 Agent哪儿接收,然后迅速的将获取的数据传给下一个目的节点sink,或者agent. 如下图所示flume的基本模型

Agent主要由:source,channel,sink三个组件组成.

Source:

从数据发生器接收数据,并将接收的数据以Flume的event格式传递给一个或者多个通道channal,Flume提供多种数据接收的方式,比如Avro,Thrift,twitter1%等

Channel:

channal是一种短暂的存储容器,它将从source处接收到的event格式的数据缓存起来,直到它们被sinks消费掉,它在source和sink间起着一共桥梁的作用,channal是一个完整的事务,这一点保证了数据在收发的时候的一致性. 并且它可以和任意数量的source和sink链接. 支持的类型有: JDBC channel , File System channel , Memort channel等.

sink:

sink将数据存储到集中存储器比如Hbase和HDFS,它从channals消费数据(events)并将其传递给目标地. 目标地可能是另一个sink,也可能HDFS,HBase.

它的组合形式举例:

以上介绍的flume的主要组件,下面介绍一下Flume插件:

1. Interceptors拦截器

用于source和channel之间,用来更改或者检查Flume的events数据

2. 管道选择器 channels Selectors

在多管道是被用来选择使用那一条管道来传递数据(events). 管道选择器又分为如下两种:

默认管道选择器:  每一个管道传递的都是相同的events

多路复用通道选择器:  依据每一个event的头部header的地址选择管道.

3.sink线程

用于激活被选择的sinks群中特定的sink,用于负载均衡.

----------------------------------------------------<完>-------------------------------------------------------

参考资料:

http://www.tutorialspoint.com/apache_flume/apache_flume_data_flow.htm

author: gongxijun

请注明转载自 http://www.cnblogs.com/gongxijun/p/5656778.html

时间: 2024-12-30 09:31:08

flume介绍与入门的相关文章

flume简易实现入门

1.下载  http://www.apache.org/dist/flume/stable/ 下载最新的tar.gz包即可2.解压 tar -zxvf ....3.配置环境变量 FLUME_HOME和PATH 记得执行source /etc/profile4.添加一个简单的测试案例 a.在conf目录下新建一个文件,test-conf.propertis,内容如下: # define the alias(sources->channels->sinks) a1.sources = s1 a1.

TFS(Team Foundation Server)介绍和入门

在本文的两个部分中,我将介绍Team Foundation Server的一些核心特征,重点介绍在本产品的日常应用中是怎样将这些特性结合在一起使用的. 作为一名软件开发者,在我的职业生涯中,我常常会用到支持软件开发过程的大量开发工具,如版本号控制工具.漏洞跟踪包.生成脚本语言.单元測试框架和需求分析工具等等.在.NET平台上,大量的支持工具可以非常好地独立工作,可是,为了使得各种工具之间都够互相协作,还是常常须要一些手动工作. 随着Visual Studio产品线中Team Foundation

Flume介绍与安装

搭建环境 部署节点操作系统为CentOS,防火墙和SElinux禁用,创建了一个shiyanlou用户并在系统根目录下创建/app目录,用于存放 Hadoop等组件运行包.因为该目录用于安装hadoop等组件程序,用户对shiyanlou必须赋予rwx权限(一般做法是root用户在根目录下 创建/app目录,并修改该目录拥有者为shiyanlou(chown –R shiyanlou:shiyanlou /app). Hadoop搭建环境: 虚拟机操作系统: CentOS6.6 64位,单核,1

详细图解 Flume介绍、安装配置

写在前面一: 本文总结"Hadoop生态系统"中的其中一员--Apache Flume 写在前面二: 所用软件说明: 一.什么是Apache Flume 官网:Flume is a distributed, reliable, and availableservicefor efficientlycollecting, aggregating, and moving large amounts of log data. It has a simple and flexible arch

自然语言处理-介绍、入门与应用

自然语言处理-介绍.入门与应用 根据工业界的估计,仅仅只有21%的数据是以结构化的形式展现的.数据由说话,发微博,发消息等各种方式产生.数据主要是以文本形式存在,而这种方式却是高度无结构化的.使用这些文本消息的例子包括:社交网络上的发言,聊天记录,新闻,博客,文章等等. 尽管我们会有一些高维的数据,但是它所表达的信息我们很难直接获取到,除非它们已经被我们人工地做了处理(例如:我们阅读并理解了它们).或者,我们可以通过自动化系统来对他进行分析. 为了从文本数据里得到有意义并且可行的深层信息,我们需

Dbutils学习(介绍和入门)

一:Dbutils是什么?(当我们很难理解一个东西的官方解释的时候,就让我们记住它的作用) Dbutils:主要是封装了JDBC的代码,简化dao层的操作. 作用:帮助java程序员,开发Dao层代码的简单框架. 框架的作用:帮助程序员,提高程序的开发效率. 出生:Dbutils是由Apache公司提供. 二:为什么需要Dbutils ? 在使用Dbutils 之前,我们Dao层使用的技术是JDBC,那么分析一下JDBC的弊端: (1)数据库链接对象.sql语句操作对象,封装结果集对象,这三大对

python之路1:介绍和入门

Python介绍 python2和python3的区别 安装 Hello World程序 变量 字符编码 用户输入 .pyc是什么 控制流语句 一. Python介绍 Python的创始人为Guido van Rossum,1989年的圣诞节期间,他为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程.Python简洁的语法和对动态输入的支持,再加上解释性语言的本

C# 压缩组件介绍与入门

1.前言 作为吉日嘎拉权限管理系统最早的一批学习版用户,学了不少东西,在群里面也结识了很多朋友,更重要的是闲余时间,大家都发布很多可靠的外包工作.这次也是由于吉日嘎拉发布了一个有关"压缩文件损坏检测"的外包任务,最早在2009年用C#很简单的使用过压缩组件,这次有了这个需求,才所以才深入研究一番,顺便有了这篇博客. 在日常项目开发过程中,操作Zip或者RAR压缩文件也是一件比较常见的事情.主要是打包文件,解压文件等等常规的操作,也相信很多人也用过.NET自带的GZip压缩.今天要给大家

Hadoop生态圈介绍及入门(转)

本帖最后由 howtodown 于 2015-4-2 23:15 编辑 问题导读 1.Hadoop生态圈介绍了哪些组件,分别都是什么? 2.大数据与Hadoop是什么关系? 本章主要内容: 理解大数据的挑战 了解Hadoop生态圈 了解Hadoop发行版 使用基于Hadoop的企业级应用 你可能听别人说过,我们生活在“大数据”的环境中.技术驱动着当今世界的发展,计算能力飞速增长,电子设备越来越普遍,因特网越来越容易接入,与此同时,比以往任何时候都多的数据正在被传输和收集. 企业正在以惊人的速度产