【Flume 01】Flume简介、部署、组件

1 Flume简介

  • Flume是一个高可用、高可靠、分布式的海量日志采集、聚合和传输的系统

  • 主要特性:

    1. 它有一个简单、灵活的基于流的数据流结构(使用Event封装)
    2. 具有负载均衡机制和故障转移机制
    3. 一个简单可扩展的数据模型(Source、Channel、Sink)
  • Source组件:

    1. 从外界采集各种类型数据,将数据传递给Channel
    2. 支持类型有文件、目录、端口、Kafka等
    3. Exec Source:实现文件监控;注意 tail -F(跟踪文件) 和 tail -f 的区别
    4. NetCat TCP/UDP Source: 采集指定端口(tcp、udp)的数据
    5. Spooling Directory Source:采集文件夹里新增的文件
    6. Kafka Source:从Kafka消息队列中采集数据
  • Channel组件:

    1. 接受Source发出的数据,临时存储
    2. 支持类型有内存、文件,内存+文件、JDBC等
    3. Memory Channel:使用内存作为数据的存储,内存有限,临时存储
    4. File Channel:使用文件来作为数据的存储
    5. Spillable Memory Channel:使用内存和文件作为数据存储(即先存到内存中,如果内存中数据达到阈值再flush到文件中)
  • Sink组件:

    1. 从Channel中读取数据并存储到指定目的地
    2. 表现形式:控制台、HDFS、Kafka等
    3. 注意:Channel中的数据直到进入目的地才会被删除,当Sink写入失败后,可以自动重写,不会造成数据丢失
    4. Logger Sink:将数据作为日志处理
    5. HDFS Sink:将数据传输到HDFS中
    6. Kafka Sink:将数据发送到kafka消息队列中

2 Flume部署

访问flume下载地址,下载apache-flume-1.9.0-bin.tar.gz安装包,在/data/soft目录下解压

2.1 修改flume-env.sh文件

cd /data/soft/apache-flume-1.9.0-bin/conf
mv flume-env.sh.template flume-env.sh

将flume-env.sh.template剪切放到flume-env.sh中

2.2 示例

# example.conf: A single-node Flume configuration# Name the components on this agent 定义组件名称
# 这里定义了一个agent(代理)名为a1,包含了一个source(数据源)r1,一个sink(数据汇)k1,以及一个channel(通道)c1。
a1.sources = r1
a1.sinks = k1
a1.channels = c1# Describe/configure the source 配置数据源
# 这里设置数据源r1的类型为netcat(通过网络接收数据),绑定的IP地址为0.0.0.0,监听端口为44444。
a1.sources.r1.type = netcat
a1.sources.r1.bind = 0.0.0.0
a1.sources.r1.port = 44444# Describe the sink 配置数据汇
# 这里设置数据汇k1的类型为logger(打印日志)。
a1.sinks.k1.type = logger# Use a channel which buffers events in memory 配置通道
# 这里设置通道c1的类型为memory(内存缓冲区),容量为1000,事务容量为100。
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100# Bind the source and sink to the channel 绑定数据源和数据汇到通道:
# 这里将数据源r1绑定到通道c1,将数据汇k1绑定到通道c1。
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

这段代码是一个单节点的Flume配置文件,用于将网络上的数据通过netcat source接收,并通过logger sink输出到日志中。

通过这个配置文件,Flume Agent将会监听44444端口上的网络流量,并将收到的数据通过logger sink输出到日志中。通道c1将以内存缓冲的方式在数据源和数据汇之间传递数据。

执行命令:

cd /data/soft/apache-flume-1.9.0-bin
bin/flume-ng agent --conf conf --conf-file conf/example.conf --name a1 -Dflume.root.logger=INFO,console

该命令是用于启动 Apache Flume 的代理(agent)。以下是对各个部分的解释:

  • bin/flume-ng: 这是 Flume 的启动脚本,用于执行 Flume 的命令。
  • agent: 表示要启动的 Flume 组件是一个代理(agent)。
  • --conf conf: 指定 Flume 配置文件的目录,即 conf 目录。
  • --conf-file conf/example.conf: 指定 Flume 使用的配置文件路径,这里的路径是 conf/example.conf
  • --name a1: 给代理(agent)指定一个名称,此处为 a1
  • -Dflume.root.logger=INFO,console: 设置 Flume 的日志级别为 INFO,并将日志输出到控制台。

综上所述,该命令将使用指定的配置文件(conf/example.conf)启动一个名为 a1 的 Flume 代理(agent),并将日志输出到控制台。

开启另一个Terminal,执行远程连接命令,并输入传输内容:

telnet localhost 44444

telnet localhost 44444 是一条命令,用于在本地主机上使用 Telnet 协议连接到端口号为 44444 的服务。

Telnet 是一种远程登录协议,允许你通过网络(通常是互联网)与其他计算机建立终端会话。在这种情况下,你正在尝试连接到本地主机(localhost)上的 44444 端口。

如果 44444 端口上有运行并配置为接受 Telnet 连接的服务,该命令将建立与该服务的连接。然而,如果该端口上没有运行任何服务,或者被防火墙阻止,连接尝试将失败。

一旦 Telnet 会话建立,你可以使用基于文本的命令与远程服务进行交互。

3 高级组件

相关配置需要参考官方文档

  • Source Interceptors:Source可以指定一个或者多个拦截器按先后顺序依次对采集到的数据进行处理

  • Channel Selectors:Source发往多个Channel的策略设置

  • Sink Processors:Sink发送数据的策略设置

  • Event:

    1. Event是Flume传输数据的基本单位,也是事务的基本单位;在文本文件中,通常一行记录就是一个Event
    2. Event里有header和body;header类型为Map<String, String>
    3. 可以在Source中增加header的<key, value>,在Channel和Sink中使用header中的值

3.1 Source Interceptors

  • 常见Interceptors类型:Timestamp Interceptor、Host Interceptor、Search and Replace Interceptor 、Static Interceptor、Regex Extractor Interceptor等

3.2 Channel Selectors

  • Channel Selectors类型包括:Replicating Channel Selector(default)和Multiplexing Channel Selector
  • Replicating:会将Source采集过来的Event发往所有Channel
  • Multiplexing:会根据Event中header里面的值,将Event发往不同的Channel

3.3 Sink Processors

  • Sink Processors类型包括:Default Sink Processor、Load balancing Sink Processor和Failover Sink Processor
  • Default:是默认的不用配置sinkgroup;Load balancing是负载均衡;Failover是故障转移,后面需要定义sinkgroup

4 性能优化

  • Flume优化

    1. 调整Flume进程的内存大小,建议设置1G~2G,内存设置太小可能导致频繁GC
    2. 启动多个Flume进程时,建议修改配置区分日志文件,复制多个conf目录,修改log4j.properties文件
  • Flume进程监控

    1. Flume是一个单进程程序,会存在单点故障,所以需要有一个监控机制,发现Flume进程Down掉之后,需要重启
    2. 通过Shell脚本使用jps命令对Flume进程进行监控、告警之后并自动重启

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

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

相关文章

Zookeeper的基本概念以及安装

Zookeeper简介 Zookeeper是一个分布式的(多台机器同时干一件事情),开源的分布式应用程序协调服务,是Google公司Chubby产品,是Hadoop和Base重要的组件,.它是一个分布式应用程序提供一致性的服务的软件,提供的功能包括:配置服务,域名服务,分布式同步,组服务等 Zookeeper目…

多肽试剂1801415-23-5,Satoreotide,UNII-S58172SSTS,应用在多肽标记及修饰上

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ Satoreotide&#xff0c;UNII-S58172SSTS Product structure Product specifications 1.CAS No&#xff1a;1801415-23-5 2.Molecular formula&#xff1a;C58H72ClN15O14S2 3.Molecular weight&#xff1a;1302.9 4.Packa…

手机word文档怎么转换成pdf?分享两种方法

手机word文档怎么转换成pdf&#xff1f;在如今信息化的时代&#xff0c;电子文档已经成为人们日常办公不可或缺的一部分。随着科技的不断进步&#xff0c;电子文档的格式也在不断发展。PDF作为电子文档的一种重要格式&#xff0c;被广泛使用。那么&#xff0c;如何将手机上的Wo…

一)Stable Diffusion使用教程:安装

目前AI绘画最火的当属Midjorney和Stable Diffusion&#xff0c;但是由于Midjourney没有开源&#xff0c;因此我们主要分享下Stable Diffusion&#xff0c;后面有望补上Midjourney教程。 本节主要讲解Stable Diffusion&#xff08;以下简述SD&#xff09;的下载和安装。 1&…

MyBatis学习笔记——2

MyBatis学习笔记——2 一、MyBatis核心配置文件详解1.1、environment&#xff08;环境&#xff09;1.2、transactionManager&#xff08;事务管理器&#xff09;1.3、dataSource&#xff08;数据源&#xff09;1.4、properties1.5、mapper 二、在WEB中应用MyBatis&#xff08;使…

轮播图添加删除

轮播图页面和对话框搭建 页面简单布局 <template><div id"banner"><el-space direction"vertical" :size"20" style"width: 100%"><h1>轮播图管理</h1><div style"text-align: right"&g…

商城-学习整理-基础-分布式组件(三)

目录 一、前言二、Spring Cloud&Spring Cloud Alibaba1、Spring Cloud 与Spring Cloud Alibaba简介2、为什么使用Spring Cloud Alibaba3、版本选择4、项目中的依赖 三、Spring Cloud Alibaba-Nacos作为注册中心1、Nacos1&#xff09;、下载 nacos-server2&#xff09;、启动…

42. 接雨水

42.接雨水 这是一个简单的动态规划问题&#xff0c;虽然leetcode将它归结为困难。 但是我感觉它难度应该达不到&#xff0c;可能归结为中等比较合适0x1 题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨…

python flask 返回中文乱码

使用flask返回数据中带有中文的时候会显示成乱码(ascii)&#xff0c; 中文报文&#xff1a; ABAP中的三大财务报表是&#xff1a;* **资产负债表** * **收入证明** * **现金流量表**这些报表全面概述了公司的财务状况和业绩。* **资产负债表**显示公司在特定时间点的资产、负…

【Python数据分析】Python基础知识篇

&#x1f389;欢迎来到Python专栏~Python基础知识篇 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;Python学习专栏 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0c;希望大…

LeetCode[1508]子数组和排序后的区间和

难度&#xff1a;Medium 题目&#xff1a; 给你一个数组 nums &#xff0c;它包含 n 个正整数。你需要计算所有非空连续子数组的和&#xff0c;并将它们按升序排序&#xff0c;得到一个新的包含 n * (n 1) / 2 个数字的数组。 请你返回在新数组中下标为 left 到 right &#…

将请求参数数据推送至RabbitMQ队列中并且捕捉消息没有到达交换机的异常

1&#xff1a;自定义mq信息类&#xff08;我的交换这些信息都从nacos上直接取的&#xff0c;怎么从nacos取配置信息看上篇文章&#xff09;&#xff1a; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;impo…

GB2312编码

说明 GB2312代码表用两个字节表示一个图形字符&#xff0c;两个字节中前面的字节为第一字节&#xff0c;后面的字节为第二字节。 区位码&#xff1a; GB2312代码表分成94个区&#xff0c;范围为1-94&#xff0c;区的编号由第一字节表示&#xff1b;每个区有94位&#xff0c;范…

AE 3D粒子插件trapcode particular 新版本

Trapcode Particular for Mac是目前AE系列的插件中最火爆最流行的一款三维粒子插件&#xff0c;是属于Red Giant Trapcode Suite&#xff08;红巨人粒子特效套装插件&#xff09;中的一款粒子插件。该软件提供了多达一百余种粒子效果供用户使用&#xff0c;可以产生各种各样的自…

【mac系统】mac系统调整妙控鼠标速度

当下环境&#xff1a; mac系统版本&#xff0c;其他系统应该也可以&#xff0c;大家可以自行试下&#xff1a; 鼠标 mac妙控鼠标&#xff0c;型号A1657 问题描述&#xff1a; 通过mac系统自带的鼠标速度调节按钮&#xff0c;调到最大后还是感觉移动速度哦过慢 问题解决&…

【Docker】什么是Docker呢?本文带你洞悉

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前专攻C/C、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL、蓝桥杯&am…

学习day49

computed和watch的区别 1.computed能完成的功能&#xff0c;watch都可以实现 2.watch能完成的&#xff0c;computed不一定能实现&#xff0c;例如&#xff1a;watch可以进行异步操作 两个重要的小原则 1.所被Vue管理的函数&#xff0c;最好写成普通函数&#xff0c;这样this的指…

90道渗透测试面试题(附答案)

2023年已经快过去一半了&#xff0c;不知道小伙伴们有没有找到自己心仪的工作呀。最近后台收到不少小伙伴说要我整理一些渗透测试的面试题&#xff0c;今天它来了&#xff01;觉得对你有帮助的话记得点个赞再走哦~ 1、什么是渗透测试&#xff1f; 渗透测试是一种评估计算机系统…

【MATLAB】 二维绘图,三维绘图的方法与函数

目录 MATLAB的4种二维图 1.线图 2.条形图 3.极坐标图 4.散点图 三维图和子图 1.三维曲面图 2.子图 MATLAB的4种二维图 1.线图 plot函数用来创建x和y值的简单线图 x 0:0.05:30; %从0到30&#xff0c;每隔0.05取一次值 y sin(x); plot(x,y) %若(x,y,LineWidth,2) 可…

【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现粒子场_ParticleField】

Shader"ShaderToy/ParticleField" {Properties{_iMouse("iMouse", Vector) = (0,0,0,0)}SubSha