Flume原理剖析

一、介绍

Flume是一个高可用、高可靠,分布式的海量日志采集、聚合和传输的系统。Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。其中Flume-NG是Flume的一个分支,其目的是要明显简单,体积更小,更容易部署,其最基本的架构如下图所示:
在这里插入图片描述
Flume-NG由一个个Agent来组成,而每个Agent由Source、Channel、Sink三个模块组成,其中Source负责接收数据,Channel负责数据的传输,Sink则负责数据向下一端的发送。

二、模块说明

名称说明
SourceSource负责接收数据或通过特殊机制产生数据,并将数据批量放到一个或多个Channel。Source的类型有数据驱动和轮询两种。典型的Source类型如下:1.和系统集成的Sources:Syslog、Netcat。2.自动生成事件的Sources:Exec、SEQ。3.用于Agent和Agent之间通信的IPC Sources:Avro。4.Source必须至少和一个Channel关联。
ChannelChannel位于Source和Sink之间,用于缓存来自Source的数据,当Sink成功将数据发送到下一跳的Channel或最终目的地时,数据从Channel移除。Channel提供的持久化水平与Channel的类型相关,有以下三类:1.Memory Channel:非持久化。2.File Channel:基于WAL(预写式日志Write-Ahead Logging)的持久化实现。3.JDBC Channel:基于嵌入Database的持久化实现。Channel支持事务,可提供较弱的顺序保证,可以和任何数量的Source和Sink工作。
SinkSink负责将数据传输到下一跳或最终目的,成功完成后将数据从Channel移除。典型的Sink类型如下:1.存储数据到最终目的终端Sink,比如:HDFS、HBase。2.自动消耗的Sink,比如:Null Sink。3.用于Agent间通信的IPC sink:Avro。Sink必须作用于一个确切的Channel。

Flume也可以配置成多个Source、Channel、Sink,如下图所示:
在这里插入图片描述Flume的可靠性基于Agent间事务的交换,下一个Agent down掉,Channel可以持久化数据,Agent恢复后再传输。Flume的可用性则基于内建的Load Balancing和Failover机制。Channel及Agent都可以配多个实体,实体之间可以使用负载分担等策略。每个Agent为一个JVM进程,同一台服务器可以有多个Agent。收集节点(Agent1,2,3)负责处理日志,汇聚节点(Agent4)负责写入HDFS,每个收集节点的Agent可以选择多个汇聚节点,这样可以实现负载均衡。
在这里插入图片描述
Flume的架构和详细原理介绍,请参见:https://flume.apache.org/releases/1.9.0.html。

三、Flume原理

Agent之间的可靠性
Agent之间数据交换流程如下图所示。
在这里插入图片描述

  1. Flume采用基于Transactions的方式保证数据传输的可靠性,当数据从一个Agent流向另外一个Agent时,两个Transactions已经开始生效。发送Agent的Sink首先从Channel取出一条消息,并且将该消息发送给另外一个Agent。如果接受消息的Agent成功地接受并处理消息,那么发送Agent将会提交Transactions,标识一次数据传输成功可靠地完成。

  2. 当接收Agent接受到发送Agent发送的消息时,开始一个新的Transactions,当该数据被成功处理(写入Channel中),那么接收Agent提交该Transactions,并向发送Agent发送成功响应。

  3. 如果在某次提交(commit)之前,数据传输出现了失败,将会再次开始上一次Transactions,并将上次发送失败的数据重新传输。因为commit操作已经将Transactions写入了磁盘,那么在进程故障退出并恢复业务之后,仍然可以继续上次的Transactions。

四、Flume与HDFS的关系

当用户配置HDFS作为Flume的Sink时,HDFS就作为Flume的最终数据存储系统,Flume将传输的数据全部按照配置写入HDFS中。

五、Flume与HBase的关系

当用户配置HBase作为Flume的Sink时,HBase就作为Flume的最终数据存储系统,Flume将传输的数据全部按照配置写入HBase中。

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

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

相关文章

css 字体渐变样式(设置字体渐变样式+附加实现源码)

问题描述 先看效果图。 解决方案 在对应的css样式里添加如下代码。 我的商品列表在shangpinliebiaobiaotit-view类里面&#xff0c;那么就在shangpinliebiaobiaotit-view设置css渐变样式。 <view class"shangpinliebiaobiaotit-view">商品列表</view&g…

docker desktop搭建 nginx

【docker 桌面版】windows 使用 docker 搭建 nginx 拉取 nginx 镜像 docker pull nginx运行容器 docker run -d -p 80:8081 --name nginx nginx本地磁盘创建 nginx 目录 D:\DockerRep\nginx复制 docker 中的 nginx 配置文件 查看运行的容器 docker ps -a docker cp 9f0f82d66dd…

Spring-Cloud-Loadblancer详细分析_2

LoadBalancerClients 终于分析到了此注解的作用&#xff0c;它是实现不同服务之间的配置隔离的关键 Configuration(proxyBeanMethods false) Retention(RetentionPolicy.RUNTIME) Target({ ElementType.TYPE }) Documented Import(LoadBalancerClientConfigurationRegistrar…

Google FixMatch:SOTA 在半监督学习基准测试中的性能

作为当前计算机视觉应用的首选&#xff0c;深度网络通常通过监督学习&#xff08;一种需要标记数据集的方法&#xff09;来实现其强大的性能。尽管人工智能多年来取得了许多成就和进步&#xff0c;但标记数据的关键任务仍然落在人类专家身上。他们很难满足那些数据饥渴的深度网…

关于达梦网络通信异常问题

一.问题说明 springboot的项目&#xff0c;多数据源&#xff0c;其中一个数据源是达梦数据库。有个根据主键id查询详情的接口&#xff0c;一直报错网络通信异常&#xff0c;或连接尚未建立或者已经关闭。可以确保访问数据库的网络一切正常&#xff0c;单单一张表的接口一直报上…

基于模型的术语定义

文章仅供个人学习使用&#xff0c;请勿传播&#xff01; 原文来源&#xff1a; 袁亦方 大易方圆 OPM对象过程方法 2023-08-13 07:01 https://mp.weixin.qq.com/s/dUtuNLrMwFF_foCrQQyWmA INCOSE系统工程手册第5版使用说明部分&#xff08;内容对应第4版1.5节&#xff09;提出&…

登录验证码实现

Hutool代码改造 Hutool 有参考文档&#xff1b;很多工具类&#xff1b;把一些功能都封装好&#xff1b;都不用你自己去写&#xff1b;直接调用它的工具类 它这里会详细告诉你引入方式Hutool <dependency><groupId>cn.hutool</groupId><artifactId>hu…

数据结构:栈的实现(C实现)

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》 文章目录 前言一、栈的实现思路1. 结构的定义2. 初始化栈(StackInit)3. 入栈(StackPush)4. 出栈(StackPop)5. 获取栈顶元素(StackTop)6. 检查栈是否为空(StackEmpty)7. 销毁栈(StackDestroy) 二、…

Von Maur, Inc EDI 需求分析

Von Maur, Inc 是一家历史悠久的卖场&#xff0c;成立于19世纪&#xff0c;总部位于美国。作为一家知名的零售商&#xff0c;Von Maur 主要经营高端时装、家居用品和美妆产品。其使命是为顾客提供优质的产品和无与伦比的购物体验。多年来&#xff0c;Von Maur 凭借其卓越的服务…

ubuntu网络管理

主机-ip&#xff0c;service—port 分别查看/etc/hosts&#xff0c;/etc/host.conf&#xff1b;/etc/services&#xff0c;/etc/resolv.conf&#xff1b; 内核更新——linux-image-generic 6.2.0-24.24 非常抱歉&#xff0c;我误解了你的问题。如果你想更新已安装的内核版本…

Android高通8.1 Selinux问题

1、最近客户提了一个需求&#xff0c;说要在user版本上面切分辨率&#xff0c;默认屏幕分辨率是2.5 k 执行adb shell指令之后变成 4k 然后adb shell wm size可以查看 2、一开始我能想到就是在文件节点添加权限&#xff0c;这里不管是mtk还是qcom&#xff08;高通平台&#xff…

深度剖析堆栈指针

为什么打印root的值与&root->value的值是一样的呢 测试结果&#xff1a; *号一个变量到底取出来的是什么&#xff1f; 以前我写过一句话&#xff0c;就是说&#xff0c;如果看到一个*变量&#xff0c;那就是直逼这个变量所保存的内存地址&#xff0c;然后取出里面保存的…

【C语言】每日一题---1

大家好&#xff0c;我是苏貝&#xff0c;本篇博客是系列博客每日一题的第一篇&#xff0c;本系列的题都不会太难&#xff0c;如果大家对这种系列的博客感兴趣的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 下面代码的结果是&#xff1a; #include <…

[保研/考研机试] KY7 质因数的个数 清华大学复试上机题 C++实现

描述 求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如1202*2*2*3*5&#xff0c;共有5个质因数。 输入描述&#xff1a; 可能有多组测试数据&#xff0c;每组测试数据的输入是一个正整数N&#xff0c;(1<N<10^9)。 输出描述&#xff1a; 对于每组数…

微服务01-SpringCloud

1、简介 SpringCloud集成了各种微服务功能组件&#xff0c;并基于SpringBoot实现了这些组件的自动装配&#xff0c;从而提供了良好的开箱即用体验。 其中常见的组件包括&#xff1a; 2、服务拆分和远程调用 2.1 服务拆分 这里总结了微服务拆分时的几个原则&#xff1a; …

卷积神经网络CNN

卷积神经网络CNN 1 应用领域1 检测任务2 分类和检索3 超分辨率重构4 医学任务5 无人驾驶6 人脸识别 2 卷积的作用3 卷积特征值计算方法4 得到特征图表示5 步长和卷积核大小对结果的影响1 步长2 卷积核 6 边缘填充方法7 特征图尺寸计算与参数共享8 池化层的作用9 整体网络架构10…

uniapp项目如何运行在微信小程序模拟器上

在HbuilderX中的小程序写完后自己一定要保存&#xff0c;否则会出不来效果 那么怎么让uniapp项目运行在微信小程序开发工具中呢 1 在hbuilderx中点击运行到小程序模拟器 2 然后在项目目录中会生成一个文件夹 在微信小程序开发软件中的工具>安全设置>打开端口 或者在微…

k8sday02

第四章 实战入门 本章节将介绍如何在kubernetes集群中部署一个nginx服务&#xff0c;并且能够对其进行访问。 Namespace ​ Namespace是kubernetes系统中的一种非常重要资源&#xff0c;它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。 ​ 默认情况下&…

Openlayers实战:选择feature,列表滑动,定位到相应的列表位置

在Openlayers的实际项目中,点击某个图层的feature,在左侧的列表中显示出来,滚动条滑动,能显示在视觉区内,具体的方法请参考源代码。 效果图 数据 guangdong.json https://geo.datav.aliyun.com/areas_v3/bound/440000_full.json 源代码 /* * @Author: 大剑师兰特(xia…