当前位置: 首页 > news >正文

Flume日志采集系统的部署,实现flume负载均衡,flume故障恢复

目录

安装包

flume的部署

负载均衡测试

故障恢复


安装包

在这里给大家准备好了flume的安装包

通过网盘分享的文件:apache-flume-1.9.0-bin.tar.gz
链接: https://pan.baidu.com/s/1DXMA4PxdDtUQeMB4J62xoQ 提取码: euz7 
--来自百度网盘超级会员v4的分享

-----------------------------------------------------------------------------------------------

大家自行下载。那么正片开始。

flume的部署

首先,我们切换到software目录

cd /export/software

使用rz命令上传安装包

上传完成后,解压缩安装包道,servers目录

tar -zxvf apache-flume-1.9.0-bin.tar.gz -C /export/servers

解压缩完成之后!

切换到servers目录

cd /export/servers

之后,我们进行一个重命名的大动作。

mv apache-flume-1.9.0-bin flume

ok,fine,一切完成之后,让我们切换到conf目录

cd /export/servers/flume/conf

切换完成之后,开始进行下一步,

复制一下文件。

cp flume-env.sh.template  flume-env.sh 

完成之后,我们输入ll,查看一下自己是不是安装成功了。

之后我们输入。

vi flume-env.sh

进入文件,然后输入shift + g

到达文件底部,最后贴入自己java的环境变量。

export JAVA_HOME=/export/servers/jdk

大家根据自己的实际情况来进行修改哈,如果不知道自己的java环境变量是什么的话,可以冒号wq保存退出之后,在命令行输入·

vi /etc/profile

然后使用shift+g到达文件底部。

查看一下自己的环境变量,再复制粘贴到刚才的文件里。

看到这里首先不要着急的去复制。

来都来了,我们顺手配置一下flume的环境变量。

export FLUME_HOME=/export/servers/flume
export PATH=$FLUME_HOME/bin:$PATH

OK,配置完成之后,我们esc保存退出。

之后让我们来分发一下Flume吧。

scp -r /export/servers/flume/  hadoop02:/export/servers/
scp -r /export/servers/flume/  hadoop03:/export/servers/

现在你已经分发完flume了,那么接下来我们再分发一下环境变量。

scp -r /etc/profile hadoop02:/etc/
scp -r /etc/profile hadoop02:/etc/

分发完hadoop02和hadoop03环境变量,接下来我们需要分别在hadop02,和hadoop03上输入

soruce /etc/profile

来令环境变量生效。

接下来我们测试一下hadoop01的哦配置效果、

切换到hadoop01的data目录下

cd /export/data

切换完成之后,执行

netcat-logger.conf

复制下面的内容带哦文件里

a1.sources = r1
a1.sinks = k1
a1.channels = c1
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
a1.sinks.k1.type = logger
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

输入完成之后保存退出。

输入下面的命令看下效果。

 flume-ng agent --name a1 --conf conf/ --conf-file /export/data/netcat-logger.conf -Dflume.root.logger=INFO,console

出现下面的页面,就算是成功了。

,那么让我们再次打开一个hadoop01窗口,开始进行一些操作

打开另一个窗口之后,我们

yum -y install telnet

下载一个telnet包

下载完成之后,连接一下44444端口

telnet localhost 44444

然后另一边

日志采集到这里就算是完成了。

接下来使用ctrl+c退出进行下一步。两个窗口都ctrl+c,然后随便关闭一个。

都干完之后,我们来到hadop01的flume的conf目录

cd /export/servers/flume/conf

输入

vi exec-avro.conf

然后粘贴下面的内容,粘贴完成之后,保存退出。

a1.sources  =  r1
a1.sinks = k1 k2
a1.channels = c1
a1.sources.r1.channels = c1
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /export/data/123.log
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.sinks.k1.channel = c1
a1.sinks.k1.type = avro
a1.sinks.k1.hostname = hadoop02
a1.sinks.k1.port = 53421
a1.sinks.k2.channel = c1
a1.sinks.k2.type = avro
a1.sinks.k2.hostname = hadoop03
a1.sinks.k2.port = 53421
a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = load_balance
a1.sinkgroups.g1.processor.backoff = true
a1.sinkgroups.g1.processor.selector = random
a1.sinkgroups.g1.processor.maxTimeOut=10000

输入完成之后,我切换搭配hadoop02的conf目录下

vi avro-logger1.conf

染的时候输入下面的内容

a1.sources = r1
a1.sinks = k1
a1.channels = c1
a1.sources.r1.type = avro
a1.sources.r1.bind = hadoop02
a1.sources.r1.port = 53421
a1.sinks.k1.type = logger
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
 

完成之后,切换到hadoop03的虚拟机

同样是切换目录

vi avro-logger2.conf

切换完成之后,我们输入下面的内容

a1.sources = r1
a1.sinks = k1
a1.channels = c1
a1.sources.r1.type = avro
a1.sources.r1.bind = hadoop03
a1.sources.r1.port = 53421
a1.sinks.k1.type = logger
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

配置完成之后,我们在hadoop02上执行下面的命令,来启动agent

flume-ng agent --name a1 --conf conf/ --conf-file  avro-logger1.conf -Dflume.root.logger=INFO,console

完成之后切换到hadoop03,执行下面的命令

flume-ng agent --name a1 --conf conf/ --conf-file  avro-logger2.conf -Dflume.root.logger=INFO,console

下面放上hadoop01和hadoop02启动成功的画面

之后,我们切换回hadoop01

切换到conf目录

cd /export/servers/flume/conf

之后输入下面的命令

flume-ng agent --name a1 --conf conf/ --conf-file exec-avro.conf -Dflume.root.logger=INFO,console

启动成功之后如下图所示。

ok,一切完成之后,我们开始一个负载均衡测试。

负载均衡测试

我们再次打开一个hadop01的窗口

像data目录下写入,flume flume...

下面的命令每隔两秒会向日志追加一条flume flume...

while true;do echo "flume flume..." >> /export/data/123.log;sleep 2;done

hadoop01和hadoop03会如下图所示

接下来我们就可以开心的开始下一项’

故障恢复

下面文件里的内容,一定要和自己的主机名搭配起来!!!!

来到hadoop01的conf目录下

cd /export/servers/flume/conf

输入

vi exec-avro-failover.conf

输入下面的内容

a1.sources = r1
a1.sinks = k1 k2
a1.channels = c1
a1.sources.r1.channels = c1
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /export/data/456.log
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.sinks.k1.channel = c1
a1.sinks.k1.type = avro
a1.sinks.k1.hostname = hadoop02
a1.sinks.k1.port = 53422
a1.sinks.k2.channel = c1
a1.sinks.k2.type = avro
a1.sinks.k2.hostname = hadoop03
a1.sinks.k2.port = 53422
a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = failover
a1.sinkgroups.g1.processor.priority.k1 = 5
a1.sinkgroups.g1.processor.priority.k2 = 10
a1.sinkgroups.g1.processor.maxpenalty = 10000

那么好 ,接下来切换到hadoop02

vi avro-logger3.conf

写入以下内容

a1.sources = r1
a1.sinks = k1
a1.channels = c1
a1.sources.r1.type = avro
a1.sources.r1.bind = hadoop02
a1.sources.r1.port = 53422
a1.sinks.k1.type = logger
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

然后wq保存退出

那么再切换到hadoop03

vi avro-logger4.conf

写入下面的内容

a1.sources = r1
a1.sinks = k1
a1.channels = c1
a1.sources.r1.type = avro
a1.sources.r1.bind = hadoop03
a1.sources.r1.port = 53422
a1.sinks.k1.type = logger
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

接下来切换到hadoop02,输入

flume-ng agent --name a1 --conf conf/ --conf-file  avro-logger3.conf -Dflume.root.logger=INFO,console

接下来切换到hadoop03

flume-ng agent --name a1 --conf conf/ --conf-file  avro-logger4.conf -Dflume.root.logger=INFO,console

接下来切换到hadoop01的conf目录下。

cd /export/servers/flume/conf
flume-ng agent --name a1 --conf conf/ --conf-file  exec-avro-failover.conf -Dflume.root.logger=INFO,console

全部启动成功之后,我们切换到

hadoop01就可以提开始发挥了

while true;do echo "flume flume..." >> /export/data/456.log;sleep 2;done

音位hadoop03的优先级会比hadoop02高

所以是hadoop03会比hadoop02先写入日志

这个时候,就要及时止损,

ctrl+c退出,静等一会儿,你就会发现

hadoop02上出现了hadoop03上终止的信息。日志记录不会被停止‘

相关文章:

Flume日志采集系统的部署,实现flume负载均衡,flume故障恢复

目录 安装包 flume的部署 负载均衡测试 故障恢复 安装包 在这里给大家准备好了flume的安装包 通过网盘分享的文件:apache-flume-1.9.0-bin.tar.gz 链接: https://pan.baidu.com/s/1DXMA4PxdDtUQeMB4J62xoQ 提取码: euz7 --来自百度网盘超级会员v4的分享 ----…...

CodiMD导出pdf失败或无中文

CodiMD导出pdf失败,弹出文件保存窗口,有个pdf文件能下载,但是保存的时候提示“网站出问题了”,实际到服务器上看会发现docker崩溃了。 解决办法: 使用最新的CodiMD镜像,如nabo.codimd.dev/hackmdio/hackmd:…...

数字图像处理(2):Verilog基础语法

(1)Verilog常见数据类型: reg型、wire型、integer型、parameter型 (2)Verilog 常见进制:二进制(b或B)、十进制(d或D)、八进制(o或O)、…...

Kafka 工作流程解析:从 Broker 工作原理、节点的服役、退役、副本的生成到数据存储与读写优化

Kafka:分布式消息系统的核心原理与安装部署-CSDN博客 自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例-CSDN博客 Kafka 生产者全面解析:从基础原理到高级实践-CSDN博客 Kafka 生产者优化与数据处理经验-CSDN博客 Kafka 工作流程解析&#xff1a…...

爬虫重定向问题解决

一,问题 做爬虫时会遇到强制重定向的链接,此时可以手动获取重定向后的链接 如下图情况 第二个链接是目标要抓取的,但它是第一个链接重定向过去的,第一个链接接口状态也是302 二,解决方法 请求第一个链接&#xff0…...

Java技术复习提升 10异常

10 异常 10.1异常介绍及分类 异常捕获 选中后alttabt->选中try-catch 异常就是程序执行中不正常的情况 注意语法和逻辑错误并不是异常 异常分类有两种 error和exception error是错误 虚拟机无法解决的严重问题 exception是其他因为编程错误或者外在因素导致的一般性的问…...

真题-桂城2022年五年级

目录 GC.2022.五年级.01.拍7 输入数据 1 输出数据 1 GC.2022.五年级.02.硬币 输入数据 1 输出数据 1 答案: GC.2022.五年级.03.次大公约数 输入数据 1 输出数据 1 GC.2022.五年级.04.显示器 输入数据 1 输出数据 1 GC.2022.五年级.05.数对 输入数据 1 输…...

android 使用MediaPlayer实现音乐播放--权限请求

在Android应用中,获取本地音乐文件的权限是实现音乐扫描功能的关键步骤之一。随着Android版本的不断更新,从Android 6.0(API级别23)开始,应用需要动态请求权限,而到了android 13以上需要的权限又做了进一步…...

Web开发:ORM框架之使用Freesql的DbFrist封装常见功能

一、调用 public class Program {static string connectionstring "连接字符串(数据库名)";static void Main(string[] args){//1.连接数据库var freesql new FreeSqlBuilder().UseConnectionString(DataType.SqlServer, connectionstring…...

【多线程-第一天-多线程的执行原理-多线程的优缺点-主线程 Objective-C语言】

一、多线程的执行原理 1.单任务操作系统:同一时间只能执行一个任务 多任务操作系统:同一时间可以执行多个任务 比如,我可以一边听着酷狗,一边聊着QQ, 在单任务的操作系统里边,只有进程,没有线程, 单任务操作系统,CPU必须执行完一个任务,才能执行第二个任务, 多任…...

SQL基础语法介绍-基于MySQL

文章目录 一、SQL分类二、SQL语法1.数据库字段类型1.1.数值类型1.2 字符类型1.3 日期类型 2.字段约束2.1约束介绍2.2 非空约束(not null)2.3 唯一约束(unique)2.4 主键约束(primary key)2.5 自增长主键2.6 …...

一分钟学习数据安全——数据安全风险的系统化应对思路

数据是组织的重要资产,未经授权的数据访问可能导致数据泄露、数据篡改、隐私侵犯和合规风险等问题。企业可以通过数据访问控制来提高信息系统在数据全生命周期管理中的安全性。企业可以引入IAM系统,来控制身份来管理权限。通过对用户访问权限的管理和合适…...

端口port常识

端口(Port)用于区分不同的服务或进程。在网络通信中,每个运行在计算机上的进程都会通过一个端口来与其他计算机上的进程进行通信。以下是一些关于端口和使用常识的信息: 端口号范围: 0-1023:这些被称为“知…...

【Oracle实战】文章导读

【Oracle基础】 【实战】Oracle基础之单机安装-01 Windows 2016 Oracle 11gR2【实战】Oracle基础之单机安装-02 Windows 2016 Oracle 12cR2【实战】Oracle基础之单机安装-03 CentOS 7.9 Oracle 11gR2【实战】Oracle基础之单机安装&#x…...

“人工智能+高职”:VR虚拟仿真实训室的发展前景

在当今科技日新月异的时代,人工智能(AI)与虚拟现实(VR)技术的融合正逐步改变着各行各业,教育领域也不例外。特别是在高等职业教育(简称“高职”)体系中,VR虚拟仿真实训室…...

c语言学习27宏定义条件编译

1类型重定义 typedef typedef关键字 属性:关键字 功能:将数据类型重新定义别名 (数据类型 别名) 格式:typedef数据类型名 别名; 例子:typedef unsigned char u8; 位置…...

理论结合实践:用Umami构建网站分析系统

个人博客地址(欢迎大家访问):理论结合实践:用Umami构建网站分析系统 1. 引言 网站统计分析是一种通过收集、处理和分析网站数据来评估网站性能、用户行为和流量来源的综合方法。通过分析用户访问模式、页面浏览量、访问时长、用户…...

Unreal从入门到精通之如何绘制用于VR的3DUI交互的手柄射线

文章目录 前言实现方式MenuLaser实现步骤1.Laser和Cursor2.移植函数3.启动逻辑4.检测射线和UI的碰撞5.激活手柄射线6.更新手柄射线位置7.隐藏手柄射线8.添加手柄的Trigger监听完整节点如下:效果图前言 之前我写过一篇文章《Unreal5从入门到精通之如何在VR中使用3DUI》,其中讲…...

移动充储机器人“小奥”的多场景应用(上)

在当前现代化城市交通体系中,移动充储机器人“小奥”发挥着至关重要的作用。该机器人不仅是一个简单的设备,而是一个集成了高科技的移动充电站,为新能源汽车提供了一种前所未有的便捷充电解决方案。该机器人配备了先进的电池管理系统&#xf…...

已解决wordpress提示正在执行例行维护,请一分钟后回来

今天打开网站时提示“正在执行例行维护,请一分钟后回来”,一分钟后还这样,刷新也没用,这究竟是怎么回事了? 问题原因 这是WordPress在更新,wordpress在升级程序、主题、插件时,都会先切换到维护模式&…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

day52 ResNet18 CBAM

在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...