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下载 复制该网址 这里以…

P3388-[模板]割点(割顶)【tarjan】

正题 题目大意 求所有割点 解题思路 跑tarjantarjantarjan&#xff0c;然后判断dfnx≤lowydfn_x\leq low_ydfnx​≤lowy​ codecodecode #include<cstdio> #include<algorithm> #define N 20100 #define M 100100 using namespace std; struct node{int to,next…

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

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

Hadoop生态Flume(二)安装配置

一、flume下载地址 列中的链接应显示可用镜像的列表&#xff0c;并根据您的推断位置进行默认选择。如果看不到该页面&#xff0c;请尝试使用其他浏览器。校验和和签名是主分发服务器上原始文件的链接。 Apache Flume二进制文件&#xff08;tar.gz&#xff09;apache-flume-1.…

小程序如何将wx.request里的数据传出去

设置一个事件&#xff0c;用来测试 用类似于vue中的this.msg result.data[1].receiver并不能把值传出去 但是用setData却可以&#xff0c;代码如下 btnclick:function(){var that this;wx.request({url: http://www.k1998.xyz/kjh/reciever.php,success: (result) > {cons…

纪中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 选择压缩包&#xff0c;重启Idea就行 安装完的结果&#xff1a;

v-for指令案例详解

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

jzoj1273-袁绍的刁难【进制转换】

正题 题目大意 第iii个武将价值为3i−13^{i-1}3i−1&#xff0c;求第kkk大的选择武将价值之和 解题思路 因为∑i0n−13i<3n\sum_{i0}^{n-1}3^i<3^{n}∑i0n−1​3i<3n 所以其实答案就是kkk转成二进制之后强行转成3进制的值。 codecodecode #include<cstdio> …

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

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

Vue之splice和push

methods:{getIt(){this.list.push({name:"aaa"}) },delIt(){this.list.splice(0,1)}}对于splice() 前面的是序列号&#xff0c;后面的是删除的个数 序列号为1的时候&#xff0c;从后面删 序列号为0的时候&#xff0c;从前面开始删 序列号为2或者2以上的时候&#xff…

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

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

jzoj5230-队伍统计【状压dp】

正题 题目大意 nnn个人排队&#xff0c;mmm个条件(u,v)(u,v)(u,v)表示uuu要排在vvv前&#xff0c;可以去掉kkk个&#xff0c;求方案总数 解题思路 考虑依次插入人在队头 对于状态1表示已经在队列里&#xff0c;0表示不在 fi,jf_{i,j}fi,j​表示iii表示状态,jjj表示违背了的条件…

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

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

TypeError: Cannot set property 'msg' of undefined

在axios中想把数据取出来 this. msg “kkk” 但是却报TypeError: Cannot set property ‘msg’ of undefined的错误 后来找到&#xff0c;原来是自己没有函数不是箭头函数导致的 如果不是箭头函数的话&#xff0c;this的指向就会有问题&#xff0c;然后一直报错 将一下代码改为…

jzoj5231-序列问题【分治】

正题 题目大意 nnn个数字&#xff0c;求 (∑l1n∑rlnmin{ai}∗max{ai}(i∈[l..r]))%(1097)(\sum_{l1}^n\sum_{rl}^nmin\{a_i\}*max\{a_i\}(i\in [l..r]))\%(10^97)(l1∑n​rl∑n​min{ai​}∗max{ai​}(i∈[l..r]))%(1097) 解题思路 考虑分治&#xff0c;单独在半个内的分治下…

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

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

Hadoop生态hive(六)Hive QL表

一、创建表 语法&#xff1a; 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] 例子&#xff1a; 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>这样就可以把后端接口的…