Hadoop生态Flume(一)介绍

一、概述

Apache Flume是一个分布式,可靠且可用的系统,用于有效地收集,聚合大量日志数据并将其从许多不同的源移动到集中式数据存储中。

Apache Flume的使用不仅限于日志数据聚合。由于数据源是可定制的,因此Flume可用于传输大量事件数据,包括但不限于网络流量数据,社交媒体生成的数据,电子邮件消息以及几乎所有可能的数据源。

Apache Flume是Apache Software Foundation的顶级项目。

(1)起源

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

Flume初始的发行版本目前被统称为“Flume OG(original generation)”,属于 Cloudera。但随着FLume功能的扩展,“Flume OG”代码工程臃肿、核心组件设计不合理、核心配置不标准等缺点暴露出来,尤其是在“Flume OG”的最后一个发行版本0.94.0中,日志传输不稳定的现象尤为严重,为了解决这些问题,2011年10月22号,Cloudera完成了“Flume-728”,对Flume进行了里程碑式的改动:重构核心组件、核心配置以及代码架构,重构后的版本统称为“Flume NG(next generation)”;改动的另一原因是将 Flume 纳入Apache旗下,“Cloudera Flume”改名为“Apache Flume”。
(2)重要版本
Flume 0.9X版本的统称Flume-og,
Flume 1.X版本的统称Flume-ng。
由于Flume-ng经过重大重构,与Flume-og有很大不同。

 

二、架构

Flume事件定义为具有字节有效负载和可选字符串属性集的数据流单位。Flume代理是一个(JVM)进程,承载了组件,事件通过这些组件从外部源流到下一个目标(hop)。

Flume源使用由外部源(如Web服务器)传递给它的事件。外部源以目标Flume源可以识别的格式将事件发送到Flume。例如,Avro Flume源可用于从流中从Avro接收器发送事件的流中的Avro客户端或其他Flume代理接收Avro事件。可以使用Thrift Flume源定义类似的流程,以接收来自Thrift Sink或Flume Thrift Rpc客户端或以Flume Thrift协议生成的任何语言编写的Thrift客户端的事件.Flume源接收到事件后,会将其存储到一个或多个渠道。该通道是一个被动存储,用于保留事件,直到被Flume接收器消耗为止。文件通道就是一个示例–由本地文件系统支持。接收器从通道中删除事件,并将其放入HDFS之类的外部存储库(通过Flume HDFS接收器),或将其转发到流中下一个Flume代理(下一跳)的Flume源。给定代理中的源和接收器与通道中上演的事件异步运行。

(1)数据流模型

 

(2)复合流模型

Flume允许用户建立多跳流程,其中事件在到达最终目的地之前会通过多个代理传播。它还允许扇入和扇出流,上下文路由和备份路由(故障转移)。

事件在每个代理上的一个通道中上演。然后将事件传递到流中的下一个代理或终端存储库(如HDFS)。仅将事件存储在下一个代理程序的通道或终端存储库中之后,才将其从通道中删除。这就是Flume中的单跳消息传递语义如何提供流的端到端可靠性的方式。

Flume使用事务性方法来确保事件的可靠传递。源和接收器分别在事务中封装在通道提供的事务中放置或提供的事件的存储/检索。这确保了事件集在流中从点到点可靠地传递。在多跳流的情况下,来自上一跳的接收器和来自下一跳的源都运行其事务,以确保将数据安全地存储在下一跳的通道中。

事件在通道中上演,该通道管理从故障中恢复。Flume支持持久的文件通道,该通道由本地文件系统支持。还有一个内存通道可以将事件简单地存储在内存队列中,这样速度更快,但是当代理进程死亡时,仍保留在内存通道中的任何事件都无法恢复。

 

三、核心组件

Flume Agent配置存储在本地配置文件中。这是遵循Java属性文件格式的文本文件。可以在同一配置文件中指定一个或多个Agent的配置。配置文件包括代理中每个Source,Sink和Channel的属性,以及它们如何连接在一起以形成数据流。

流中的每个组件(Source,Sink或Channel)都有一个名称,类型和特定于该类型和实例化的属性集。例如,一个Avro源需要一个主机名(或IP地址)和一个端口号来接收数据。内存Channel可以具有最大队列大小(“容量”),并且HDFS接收器需要知道文件系统URI,创建文件的路径,文件旋转的频率(“ hdfs.rollInterval”)等。组件的所有此类属性需要在托管Flume Agent的属性文件中进行设置。

Agent需要知道要加载哪些单个组件以及如何连接它们才能构成流程。通过列出代理中每个Source,Sink和Channel的名称,然后为每个Sink和Source指定连接Channel来完成此操作。例如,Agent通过称为FileChannel的文件通道将事件从名为avroWeb的Avro Source流到HDFS Sink hdfs-cluster1。配置文件将包含这些组件的名称和文件通道,作为avroWeb源和hdfs-cluster1 Sink的共享通道。

  • Agent:使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。
    Client:生产数据,运行在一个独立的线程。
  • Source:从Client专门用来收集数据,传递给Channel,可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy、自定义。
  • Sink:从Channel收集数据,运行在一个独立线程,sink组件是用于把数据发送到目的地的组件,目的地包括hdfs、logger、avro、thrift、ipc、file、null、Hbase、solr、自定义。
  • Channel:连接 sources 和 sinks ,这个有点像一个队列,source组件把数据收集来以后,临时存放在channel中,即channel组件在agent中是专门用来存放临时数据的——对采集到的数据进行简单的缓存,可以存放在memory、jdbc、file等等。
  • Events:可以是日志记录、 avro 对象等。


 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos7安装最新版node

为了在linux服务端运行前端以及node后端项目,就必须在服务器上安装node了 但是想要运行前端项目版本就必须是8.x以上的,所以我们干脆安装最新的node 下载 进入下面的官方网站 https://nodejs.org/en/download/ 点击64位的Linux下载 复制该网址 这里以…

[译]ASP.NET Core 2.0 网址重定向

问题 如何在ASP.NET Core 2.0中实现网址重定向? 答案 新建一个空项目,在Startup.cs文件中,配置RewriteOptions参数并添加网址重定向中间件(UseRewriter): public void Configure(IApplicationBuilder app, …

纪中2019(上)游记+总结

目录之下 文章目录目录之下游记之下Day−1Day-1Day−1Day0Day0Day0Day1Day1Day1Day2Day2Day2Day3Day3Day3Day4Day4Day4Day5Day5Day5Day6Day6Day6Day7Day7Day7Day8Day8Day8Day9Day9Day9Day10Day10Day10Day11Day11Day11Day12Day12Day12Day13Day13Day13Day14Day14Day14比赛之下欢乐…

asp.net core WebAPI实现CRUD

本节用于构建一个简单的WebAPI来管理to-do列表。不会创建用户界面。 API Description Request body Response body GET /api/todo Get all to-do items NoneArray of to-do items GET /api/todo/{id} Get an item by ID NoneTo-do item POST /api/todo Add a new item To-do it…

Hadoop2.6.0的Intellij Idea 插件

一、Hadoop2.6.0的Idea Intellij插件下载 github源码地址 github插件压缩包 二、安装插件 setting》Plugins》install plugins from disk 选择压缩包,重启Idea就行 安装完的结果:

v-for指令案例详解

对于v-for指令,以前老是不能理解,经常记混,所以特地写篇笔记来加强下记忆,希望借此能学的更深刻一点 v-for顾名思义就是个for循环,是vue的一个循环。在遍历json字符串的时候有奇佳的效果,感觉就是为他们而造…

Docker ASP.NET Core 2.0 微服务跨平台实践

本篇博文的目的:在 Mac OS 中使用 VS Code 开发 ASP.NET Core 2.0 应用程序,然后在 Ubuntu 服务器配置 Docker 环境,并使用 Docker 运行 Consul 和 Fabio 环境,最后使用 Docker 运行 ASP.NET Core 2.0 应用程序。 你要的项目源码&…

微软Connect(); 2017大会梳理:Azure、数据、AI开发工具

在今天召开的 Connect(); 2017 开发者大会上,微软宣布了 Azure、数据、AI 开发工具的内容。这是第一天的 Connect(); 2017 的主题演讲。 在开场视频中霍金又来了。你记得这个Intel为他开发的系统使用了C#,而且是开源的,在Github上地址&#x…

Hadoop生态hive(五)Hive QL数据库

(1)查看数据库 show databases; (2)使用数据库 use db; (3)查看当前数据库 #与mysql的select database();不一样 select current_database(); (4)创建数据库 create database [if …

讨论.NET Core 配置对GC 工作模式与内存的影响

引出问题: Asp.net core应用在 Kubernetes上内存使用率过高问题分析 Asp.net core应用在 Kubernetes上内存使用率过高问题分析 这篇文章中讨论了,在默认情况下,ASP.NET Core程序跑在K8s的Docker中内存使用率>600MB,导致Docker容器频繁重启…

Hadoop生态hive(六)Hive QL表

一、创建表 语法: create [temporary] [external] table [if not exists] [db_name.] table_name [(col_name data_type [comment col_comment], ...)] [comment table_comment] [row format row_format] [stored as file_format] 例子: create tab…

v-for渲染img标签图片

错误的示例 <div v-for"item in list"><img src"{{item.image}}" /> </div>这样做会报错 正确的做法应该是 <div v-for"item in list"><img :src"item.image" /> </div>这样就可以把后端接口的…

Mono的新解释器

Mono即将通过它的JIT编译器和静态编译器以及一个.net解释器以带来一些新的方式来运行你的代码. 在2001年Mono项目诞生之时&#xff0c;我们为.net指令集实现了一个解释器用基于它实现了一个在Linux上的自托管的.net开发环境. 当时我们把解释器定义为一个用来构建JIT编译器的临时…

欢乐纪中某B组赛【2019.1.27】

前言 写完T1T1T1和T2T2T2颓了半天 成绩 RankRankRank是有算别人的 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC2222017myself2017myself2017myself2302302301001001001001001003030304442017xxy2017xxy2017xxy2002002001001001001001001000001111112017zyc2017zy…

Apache Druid(一)简介

翻译自 Apache Druid Apache Druid&#xff08;正在孵化&#xff09;是一个开源的分布式数据存储。德鲁伊的核心设计结合了OLAP /分析数据库&#xff0c;时间序列数据库和搜索系统的思想&#xff0c;为广泛的用例创建了一个统一的系统。Druid将这三个系统中的每个系统的关键特…

[ASP.NET Core 2.0 前方速报].NET Core 2.0.3 已经支持引用第三方程序集了

发现问题 在将 FineUIMvc&#xff08;支持ASP.NET MVC 5.2.3&#xff09;升级到 ASP.NET Core 2.0 的过程中&#xff0c;我们发现一个奇怪的现象&#xff1a; 通过项目引用 FineUICore 工程一切正常&#xff0c;但是将 FineUICore 编译后&#xff0c;通过程序集的引用方式就会报…

设计事件驱动的微服务

事件驱动的微服务是一个未受到应有探讨的领域&#xff0c;在近日举行的Con伦敦2017微服务大会上&#xff0c;Greg Young表达了这样的观点。同时&#xff0c;他还特别强调&#xff0c;不应该对所有的微服务都使用事件驱动模式。相反&#xff0c;他建议逐个服务进行考察&#xff…

express中获取url参数

问号传参获取参数 获取 http://127.0.0.1:3001/user?id10&namezs 中的查询参数&#xff1a; 直接使用 req.query 获取参数即可&#xff1b; 注意&#xff1a;URL 地址栏中通过 查询字符串 传递的参数&#xff0c;express 框架会直接解析&#xff0c;大家只需使用 req.que…

处理ASP.NET Core中的HTML5客户端路由回退

在使用由Angular&#xff0c;React&#xff0c;Vue等应用程序框架构建的客户端应用程序时&#xff0c;您总是会处理HTML5客户端路由&#xff0c;它将完全在浏览器中处理到页面和组件的客户端路由。几乎完全在浏览器中... HTML5客户端路由在客户端上工作的很好&#xff0c;但是当…

TFS在项目中DevOps落地进程(下)

紧接上篇 TFS在项目中Devops落地进程&#xff08;上&#xff09; 再接着说TFS相关之前先插入一个番外篇&#xff0c;虽然跟TFS关系不大但跟DevOps关系很大&#xff0c;觉得有必要在此乱入一下。 番外篇--监控之Application Insights 我们之前并没有任何监控类产品&#xff08;我…