大数据之Flume

news2024/11/24 16:58:58

Flume概述

一个高可用(稳定),高可靠(稳定),分布式的海量日志采集,聚合和传输的系统。Flume基于流式架构,灵活简单。日志文件即txt文件,不能传输音频,视频,office等其他文件。Flume最主要的作用是实时读取服务器本地磁盘的数据,将数据写入到HDFS。

架构

  • Web Server一般为java后台程序

  • Agent

    • Source: 对接各种web server程序,从中读取数据
    • Channel:用来作为缓冲区,平衡读取和写入速度的不一致问题。
      • Memory Channel: 速度快,容易丢失
      • File Channel: 速度慢,不容易丢失
    • Sink: 对接各种传输终点,Sink不断轮询Channel中的事件且批量的移除它们到对应系统中
  • 文件系统:比如HDFS,传输的终点

  • Event: Flume数据传输的基本单元

安装部署

  1. 官网下载:http://flume.apache.org/
  2. 解压后修改文件名称为flume
  3. 修改conf 下log4j2.xml确定打印的位置,日志会跟随运行路径放置flume日志。
<Properties>
    <Property name="LOG_DIR">/opt/module/flume/logs</Property>
  </Properties>

入门案例

1. 监控端口数据官方案例

  1. 安装netcat工具,该工具用于端口传话sudo yum install -y nc
  2. 一个窗口使用nc -lk 端口号,监听端口
  3. 另一个窗口使用nc localhost 44444 连接端口
  4. 配置flume configuration文件
# 给组件命名,默认 agent 叫 a1
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# 配置 source 的类型、主机名、端口号
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444

# 配置 sink 
a1.sinks.k1.type = logger

# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000   # 1000个event
a1.channels.c1.transactionCapacity = 100  # 批次大小,达到该值就发送

# 绑定 the source and sink to the channel
a1.sources.r1.channels = c1 # source可以连多个channel
a1.sinks.k1.channel = c1  # sink不能连多个channel
  1. 创建job目录,创建conf文件。命令时建议为 发送者_flume_接收者.conf
  2. 运行Flume, bin/flume-ng agent -c conf/ -f-file job/nc_flume_log.conf -n a1
  3. 配置log4j2.xml文件,添加一个属性让日志同时打印到控制台,方便查看。
 <AppenderRef ref="Console" />

2. 实时监控目录下的多个追加文件

  1. 创建符合条件的flume配置文件
  2. 执行配置文件taildir_flume_log.conf,开启监控
  3. 向监控文件追加文件,echo >> file1.txt
  4. 运行flume监听,bin/flume-ng agent -c conf/ -f-file job/taildir_flume_log.conf -n a1
  5. 可以关闭该监听服务后,继续追加,然后重写开启监听,会发现之前添加的内容也可以查看到,这个就是断点续传。监听读取后会生成对应的监听日志taildir_position.json
  6. 如果监控文件改名后仍然符合监控正则,该文件的数据会全部重传。这个机制在底层实现上不仅判断了inode的值,还判断了文件名是否改变。后期可以修改源码,改为只判断Inode即可。
  7. HDFS sink存在小文件问题,每10个event一个文件,或者每30秒一个文件。可以通过修改sink的参数来解决改问题:
    • hdfs.rollinterval: 默认是30秒,置为0时表示不判断时间。一般企业中建议设置为3600秒
    • hdfs.rollSize: 一般设置为134217700,超过128M生成一个文件
    • hdfs.rollCount: 设置为0

Flume原理

1. 事务

put事务流程

在Source和Channel之间有事务来保证put操作的完整性。source能够保证数据没有提交成功时,不会修改当前发送数据的偏移量,只有当source成功将数据放到channel中时,source才会更新当前的偏移量。当channel内存空间不足时,即put失败,会回滚数据,即不更新当前数据的偏移量。

pull事务流程

在channel和sink节点之间进行的拉取操作也有可能失败,只有当数据成功放到sink中,才会将channl中的数据进行删除。否则,事务会将数据回滚到数据还未拉取前的状态,来保证数据的不丢失性。

2. Flume Agent内部原理

  1. 拦截器清除数据,排除错误数据,添加解析部分数据,比如Header头信息
  2. channel选择器:
    • 副本选择器,同一数据发送多份
    • 多路复用选择器, 同一数据拆分发送
  3. sinkProcessor处理器:
    • 默认处理器:由于都在同一机器上运行,后两种处理器没有任何意义
    • 负载均衡处理器
    • 竞争失败处理器

内部原理图

如果有flume的连接传输,启动时需要先开启下游flume,再开启上游flume。关闭时需要先关闭上游flume,再关闭下游flume。

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

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

相关文章

【狼疮抗凝物-- 抗心磷脂抗体】

狼疮抗凝物属于易栓症的一种. 狼疮抗凝物 &#xff08;Lupus Anticoagulant LAC&#xff09;是一种作用于磷脂的IgG或IgM的抗磷脂抗体&#xff0c;在体内和体外 凝血试验中&#xff0c;磷脂对凝血酶原酶复合体活化起模板作用。狼疮抗凝物是抗磷脂的成分的抗 体&#xff0c;在多…

消息队列中,如何保证消息的顺序性?

本文选自&#xff1a;advanced-java 作者&#xff1a;yanglbme 问&#xff1a;如何保证消息的顺序性&#xff1f; 面试官心理分析 其实这个也是用 MQ 的时候必问的话题&#xff0c;第一看看你了不了解顺序这个事儿&#xff1f;第二看看你有没有办法保证消息是有顺序的&#xf…

大范围XSS扫描工具:XSS-Freak,BurpSuite随机用户代理,Hades 静态代码审核系统

大范围XSS扫描工具&#xff1a;XSS-Freak&#xff0c;BurpSuite随机用户代理&#xff0c;Hades 静态代码审核系统。 #################### 免责声明&#xff1a;工具本身并无好坏&#xff0c;希望大家以遵守《网络安全法》相关法律为前提来使用该工具&#xff0c;支持研究学习…

华为云云耀云服务器L实例评测|centos7.9 配置python虚拟环境 运行django

文章目录 ⭐前言⭐安装python&#x1f496; wget下载&#x1f496; 选择安装位置 ⭐pip安装虚拟环境&#x1f496; pip3安装 virtualenv&#x1f496; 创建目录存放python虚拟环境 ⭐安装django&#x1f496; 指定端口运行django&#x1f496; 远程访问 ⭐总结⭐结束 ⭐前言 大…

STL函数对象和谓词

目录 函数对象 谓词 函数对象 概念: 重载函数调用操作符的类&#xff0c;其对象常称为函数对象 函数对象使用重载的()时&#xff0c;行为类似函数调用&#xff0c;也叫仿函数 本质: 函数对象(仿函数)是一个类&#xff0c;不是一个函数 特点: …

Linux进程创建、进程终止、进程等待、进程程序替换

目录 进程创建fork函数fork函数返回值fork创建子进程的目的之一fork调用失败的原因写实拷贝 进程终止进程执行结果进程退出码进程终止的理解进程的退出方式 进程等待进程等待的必要性进程等待的概念wait方法获取子进程status 进程程序替换替换原理替换函数函数解释命名理解单进…

深度学习自学笔记六:深层神经网络

一、深层神经网络概述 深层神经网络&#xff08;Deep Neural Networks&#xff0c;DNN&#xff09;是一种机器学习模型&#xff0c;由多个神经网络层组成。与传统的浅层神经网络相比&#xff0c;深层神经网络具有更多的隐藏层&#xff0c;使其能够进行更复杂、更抽象的特征学习…

【07】FISCOBCOS一键部署前的准备工作ubuntu安装,mysql,python,PyMySQL,java

官方文档最下面https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE/install.html JAVA已经安装好了,可以看控制台那篇文章【03】 安装mysql 下载并解压mysql sudo apt install -y mysql-server mysql-client libmysqlclient-dev安装 MySQL 服务器、MySQL 客户端和…

【C/C++笔试练习】——printf在使用%的注意事项、for循环语句的三个条件、运算符优先级、删除公共字符

文章目录 C/C笔试练习1.%符号在printf用作格式说明符的注意事项&#xff08;1&#xff09;输出%5.3s&#xff08;2&#xff09;判断%中小数点含义 2.for循环语句的三个条件&#xff08;3&#xff09;判断循环次数&#xff08;4&#xff09;判断循环次数 3.运算符优先级&#xf…

交换奇偶位:交换一个整数的二进制的奇偶位置(仅考虑正数情况)

方法二&#xff1a; 设计思想&#xff1a; 0xAAAAAAAA 的二进制表示为 10101010...&#xff08;从最低位开始&#xff09; 0x55555555 的二进制表示为 01010101...&#xff08;从最低位开始&#xff09; 问题&#xff1a;更加想不到掩码&#xff01;&#xff01;&#xf…

JVM——11.JVM小结

这篇文章我们来小结一下JVM JVM&#xff0c;即java虚拟机&#xff0c;是java代码运行时的环境。我们从底层往上层来说&#xff0c;分别是硬件部分&#xff0c;操作系统&#xff0c;JVM&#xff0c;jre&#xff0c;JDK&#xff0c;java代码。JVM是直接与操作系统打交道的。JVM也…

数据结构:二叉树的基本概念

文章目录 1. 二叉树的定义2. 二叉树的特点3. 特殊二叉树斜树满二叉树完全二叉树 4. 二叉树的性质 1. 二叉树的定义 如果我们猜一个100以内的数字,该怎么猜才能理论最快呢? 第一种方式:从1,2一直猜到100, 反正数字都是100以内,总能猜到的 第二种方式:先猜50,如果比结果小,猜75…

【WPF】填坑 - WindowChrome 自定义窗口完美实现

【WPF】填坑 - WindowChrome 自定义窗口完美实现 概述Demo 说明基本样式资源布局ShellView Style界面元素修正Command BindingCommand 实现 效果 概述 前面写过一篇关于在 WPF 中通过对 WindowChrome 的操作实现自定义窗口并保留一部分的系统功能。 【WPF】WindowChrome 自定义…

虚幻4学习笔记(13)用户UI 交互动画、制作2D UI、制作3D UI

虚幻4学习笔记 制作2D UIUI 主菜单制作UI动画 和 暂停游戏 制作3D UI B站UP谌嘉诚课程&#xff1a;https://www.bilibili.com/video/BV164411Y732 制作2D UI 导入图片 新建 用户界面-控件蓝图 双击打开 拖入image 参数设置 SizeX1920 SizeY1080 选择对焦居中点 右下角平铺 参…

【Acwing1027】方格取数(动态规划)题解

题目描述 思路分析 错误思路&#xff1a; 贪心法&#xff0c;先走一次求出最大值&#xff0c;把走过的路上面的数值清零&#xff0c;然后用同样的方法再走一遍求最大值&#xff0c;然后让这两个最大值相加就是最后的结果。 很多人在看到这个题目的时候会有上面的思路&#x…

微信小程序开发学习

模板与绑定 1.数据绑定 1&#xff09;在data中定义数据 在页面对应的.js文件中把数据定义到data对象中即可 2&#xff09;在WXML中使用数据 把data中的数据绑定到页面中渲染&#xff0c;使用Mustache&#xff08;双大括号{{}}&#xff09;将变量名包起来即可&#xff0c;格式…

AHK c++ 禁用鼠标设备实现完美息屏(不是休眠)

如何实现完美息屏呢&#xff1f;虽然可以用ahk实现息屏&#xff0c;但桌子一晃动&#xff0c;鼠标稍微偏移一下&#xff0c;又亮了&#xff0c;导致息屏无效&#xff01; win10 更新了设备管理器&#xff0c;现在可以禁用鼠标设备了。以前这里是灰色的。 c 禁用鼠标 那么&…

第二章 进程与线程 十七、用信号量实现进程互斥、进程同步、进程的前驱关系

一、实现进程互斥 1、过程 &#xff08;1&#xff09;分析并发进程的关键活动&#xff0c;划定临界区&#xff08;如:对临界资源打印机的访问就应放在临界区) &#xff08;2&#xff09;设置互斥信号量mutex&#xff0c;初值为1 &#xff08;3&#xff09;在进入区P(mutex)…

网工基础知识——以太网

1972年Bob Metcalfe“以太网之父”被Xerox雇佣为网络专家&#xff0c;Bob Metcalfe 来到Xerox公司的Palo Alto研究中心&#xff08;PARC&#xff09;的第一个任务是把Palo Alto的计算机连接到ARPANET&#xff08;Internet的前身&#xff09;上。1972年底Bob Metcalfe以ALOHA系统…

基于OSATE环境的AADL项目——简单的项目构建与分析示例

一、背景 本文描述了一个非常简单的AADL项目的构建&#xff0c;以及一个示例项目的分析过程。本文主要记录了OSATE工具环境的一些基本操作&#xff0c;适用于刚刚了解OSATE之后&#xff0c;对于整个工具环境无从下手的小白。 因为基于OSATE环境的AADL项目的构建和分析的详细示…