Flume学习笔记

视频地址:https://www.bilibili.com/video/BV1wf4y1G7EQ/

定义

Flume是一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统。
Flume高最要的作用就是实时读取服务器本地磁盘的数据,将数据写入HDFS。
官网:https://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html
源码包:https://gitee.com/apache/flume.git

架构图

在这里插入图片描述

1.Agent

Agent主要有3个部分组成,Source、Channel、Sink

2.Source

Source是负责接收数据到Flume Agent的组件。Source 组件可以处理各种类型、各种格式的日志数据,包括 avro、thrift、exec、jms、spooling directory、netcat、taildir、sequence generator、syslog、http、legacy。

3.Sink

Sink 不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。
Sink 组件目的地包括hdfs、logger、avro、thrift、ipc、file、HBase、solr、自定义。

4.Channel

Channel是位于Source 和Sink之间的缓冲区。因此,Channel允许Source 和Sink 运作在不同的速率上。Channel是线程安全的,可以同时处理几个Source的写入操作和几个
Sink 的读取操作。←Flume自带两种Channel:MemoryChannel和File Channel。Memory Channel是内存中的队列。Memory Channel在不需要关心数据丢失的情景下适用。如果需要关心数据丢失,那么MemoryChanne1就不应该使用,因为程序死亡、机器宕机或者重启都会导致数据丢失。←
FileChannel将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据。

5.Event

传输单元,Flume数据传输的基本单元,以vent的形式将数据从源头送至目的地。Event 由Header 和 Body 两部分组成,Header 用来存放该event 的一些属性,为K-V结构,Body用来存放该条数据,形式为字节数组。

示例

官方文档
在这里插入图片描述

1.配置文件

# example.conf: A single-node Flume configuration# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
# Describe the sink
a1.sinks.k1.type = logger
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
  1. 可以配置多个source、sink、channel
  2. 事务容量要比总容量小,事务容量指单次最大的事件数量
  3. 一个source可以绑定多个channel
  4. 一个sink只能绑定一个channel
  5. 一个channel可以绑定多个sink

2.启动命令

bin/flume-ng agent -n a1 -c conf -f conf/flume-conf
  1. -n --name : agent名称
  2. -c --conf: conf目录
  3. -f --conf-file: 配置文件
  4. -Dflume.root.logger=INFO,console 打印日志

3.Agent

3.1.内部原理

在这里插入图片描述

3.1.1.Channel Selectors
3.1.1.1.ReplicatingChannel Selector

(默认)将source过来的events发往所有channel
在这里插入图片描述
示例
在这里插入图片描述

3.1.1.2.MultiplexingChannel Selector

可以配置发往哪些Chanmel
在这里插入图片描述
示例
在这里插入图片描述

3.1.2.SinkProcessor

3.1.2.1.DefaultSinkProcessor

只接收一个请求,只能绑定一个Sink

3.1.2.2.LoadBalanceingSinkProcessor

负载均衡,分散到其他sink中
在这里插入图片描述示例
在这里插入图片描述

3.1.2.3.FailoverSinkProcessor

故障转移,按优先级排序

在这里插入图片描述
示例
在这里插入图片描述

4.Source

4.1.exec

在这里插入图片描述

4.1.1.示例

监控文件内容
在这里插入图片描述

4.1.2.缺点

不能断点续传

4.2.spooldir

在这里插入图片描述

4.2.1.示例

监控目录中新文件
在这里插入图片描述

4.2.2.缺点

不能动态监听变化文件

4.3.Taildir

在这里插入图片描述

4.3.1.示例

在这里插入图片描述

4.3.2.优点

1.监控不同目录
2.

4.4.Avro

在这里插入图片描述

4.4.1.示例

在这里插入图片描述

4.4.2.缺点

5.Sink

5.1.HDFS

在这里插入图片描述
在这里插入图片描述

5.1.1.示例

在这里插入图片描述

5.2.Avro

在这里插入图片描述

5.2.1.示例

在这里插入图片描述

5.3.FileRoll

在这里插入图片描述

5.3.1.示例

在这里插入图片描述

6.修改源码

下载源码:https://gitee.com/apache/flume.git

Flume拓扑结构

1.简单串联

1.1.结构图

在这里插入图片描述

1.2.示例

2.复制和多路利用

2.1.结构图

在这里插入图片描述

2.2.示例

2.2.1.单数据源多出口案例
2.2.1.1.需求

在这里插入图片描述

2.2.1.2.flume-file-flume.conf
# Name the comnentson this agent
a1.sources=r1
a1.channels=c1
a1.sinks = k1 k2#Describe/configure the source
a1.sources.r1.type =exec
a1.sources.r1.command=tail -F /opt/module/hive/logs/hive.log
a1.sources.r1.shell= /bin/bash -c#Describe the sink
a1.sinks.kl.type =avro
a1.sinks.k1.hostname =hadoop102
a1.sinks.k1.port =4141a1.sinks.k2.type =avro
a1.sinks.k2.hostname =hadoop102
a1.sinks.k2.port =4142#Describe the channe
a1.channels.c1.type=memory
al.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100#将数据流复制给所有channele
a1.sources.r1.selector.type=relicating# Bind the source and sink to the channel
a1.sources.r1.channels=c1 c2
al.sinks.k1.channel=c1
a1.sinks.k2.

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

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

相关文章

TikTok账号被封是为什么?如何解决?

多人在使用TikTok的过程中都会遇到一些问题,比如为什么TikTok没有浏览量?事实上,这很可能是因为你的账号已被禁止。但为什么它会被封呢?你怎样才能解决它? 一、TikTok账号为什么被封? 1、什么是 TikTok 影…

鸿蒙原生应用开发-网络管理Socket连接(一)

一、简介 Socket连接主要是通过Socket进行数据传输,支持TCP/UDP/TLS协议。 二、基本概念 Socket:套接字,就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。 TCP:传输控制协议(Transmission Control Protocol)。是一…

回文数的判断

算法思想:代码是将字符串全部入栈,然后扫描字符串进行比较,直到扫描到字符串尾部,该算法需要两次扫描字符串,效率不高。 可以改进代码,只将字符串的前半部分入栈,然后前半部分出栈与字符串后半…

Golang Context是什么

一、这篇文章我们简要讨论Golang的Context有什么用 1、首先说一下Context的基本作用,然后在讨论他的实现 (1)数据传递,子Context只能看到自己的和父Context的数据,子Context是不能看到孙Context添加的数据。 (2)父子协程的协同,比…

python 成员方法的区别是什么

Python的静态方法和类成员方法都可以被类或实例访问,两者概念不容易理清,但还是有区别的: 1)静态方法无需传入self参数,类成员方法需传入代表本类的cls参数; 2)从第1条,静态方法是…

无法解析的外部符号,在xxxx中调用

这个函数在类里****没有正确定义: 1.头文件只有声明,没有实现 2.只有实现,没有声明 3.声明的和实现的,参数不对

SEO文章写作器,批量写作原创SEO收录文章

在当今数字化时代,搜索引擎优化(SEO)已经成为了网站获得流量和曝光度的关键手段之一。而在SEO领域中,内容的质量和原创性是至关重要的。为了应对不断增长的内容需求,越来越多的人开始转向AI写作生成器,这些…

Nginx在Kubernetes集群中的进阶应用

简介 在现代DevOps环境中,Nginx作为负载均衡器与Kubernetes的Ingress资源的结合,为应用程序提供了强大的路由和安全解决方案。本文将深入探讨如何利用Nginx的灵活性和功能,实现高效、安全的外部访问控制,以及如何配置Ingress以优…

MySQL 优化及故障排查

目录 一、mysql 前置知识点 二、MySQL 单实例常见故障 故障一 故障二 故障三 故障四 故障五 故障六 故障七 故障八 三、MySQL 主从故障排查 故障一 故障二 故障三 四、MySQL 优化 1.硬件方面 (1)关于 CPU (2)关…

基于Springboot+Vue前后端分离的(学生信息)课程管理系统设计与实现+论文+PPT+指导搭建视频

介绍 系统设计是一个把软件需求转换成用软件系统表示的过程通过对目标系统的分析和研究,做出了学生信息管理系统的总体规划,这是全面开发系统的重要基础。在对学生信息管理系统全面分析调查的基础上,制定出学生信息管理系统的总体规划。系统…

jupyter加目录contrib nbextension 使用

jupyter在工作中使用很方便,可是一旦单个文件的内容多了,即使有markdown文本提醒,上下翻找依旧很费精力。这时,有个目录就显得至关重要了。 1 安装模块 打开anaconda的PowerShell(带有Prompt的)&#xff0…

lanbiew程序如何提高变量读取速度(全是干货)

闲来无事做了个测试,使用四种不同的方式生成一个10万个数的数组: 1.用局部变量生成一个十万个数的数组 2.用全局变量生成一个十万个数的数组 3.用应用程序目录生成一个十万个路径的数组 4.用属性节点的方式生成十万个数的数组 结果是:应用程…