flume安装与配置

news2024/11/28 12:35:04

目录

flume描述

flume用途

flume基本组件

配置flume

搭建环境:

解压flume安装包将其放入到opt/soft目录

 在/opt/soft目录下将apache-flume-1.9.0-bin.tar.gz 改名为flume190

到/opt/soft/flume190/conf目录中将临时配置文件flume-env.sh.template拷贝为配置文件flume-env.sh

继续在conf目录下配置flume-env.sh文件 (修改22行和25行)

在conf目录下新建netcat-logger.conf文件

​编辑  安装nc(在任何目录安装都行)

启动nc 

 安装拨号(在任何目录安装都行)

 拨号测试

flume拨号测试

 flumedemo.log中追加数据

 tail显示内容变动

 将指定文件中的内容输出到控制台(linux系统内部的文件)

编辑conf文件

​编辑 启动flume

插入数据进入flumedemo.log文件 

 将指定文件中的内容输出到控制台(window系统文件传入到linux系统的文件)

导入数据csv文件

编辑conf文件

 修改文件名来符合在上面定义的规则

启动flume 


flume描述

flume用途

Flume是Cloudera提供的日志收集系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种storage。Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。

flume基本组件

(1) Flume 工作流程
Source 采集数据并包装成Event,并将Event缓存再Channel中,Sink不断地从Channel 获取Event,并解决成数据,最终将数据写入存储或索引系统

(2) Agent
Agent 是一个JVM进程,它以事件的形式将数据从源头送至目的。是 Flume 数据传输的基本单元

Agent 的3个组件的设计思想,主要考虑的是:source 和 sink 之间解耦合,以及异步操作。

每一个agent相当于一个数据(被封装成Event对象)传递员,内部有3个核心组件:

Source:采集组件,用户跟数据源对接,以获取数据;它有各种各样的内置实现;
Sink:下沉组件,用于往下一级agent 传递数据或者向最终存储系统传递数据。
Channel : 传输通道组件,用于从source将数据传递到sink
(3) Source
Source 是负责接收数据到Flume Agent的组件,采集数据并包装成Event。Source组件可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy

(4) Sink
Sink 不断地轮询Channel 中的事件且批量地移除他们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。

**Sink是完全事务性的。**在从 Channel 批量删除数据之前,每个 Sink 用 Channel 启动一个事务。批量时间一旦成功写出到存储系统或下一个 Flume Agent,Sink 就利用Channel 提交事务。事务一旦被提交,该 Channel 从自己的内部缓存区删除事件。

Sink 组件目的地包括hdfs、logger、avro、thrift、ipc、file、HBase、solr、自定义

(5) Channel
Channnel 是位于 Source 和 Sink 之间的缓冲区。因此,Channel 允许Source 和 Sink 运作在不同的速率上。Channel是线程安全的,可以同时处理几个Source的写入操作和几个Sink的读取操作

Flume 自带两种Channel:

Memory Channel是内存中的队列。Memory Channel在不需要关系数据丢失的情景下适用。如果需要关心数据丢失,那么Memory Channel就不应该使用,因为程序死亡、机器当即或者重启都会导致数据丢失
File Channel 将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据
(6) Event
数据在channel中的封装形式。

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

(7) interceptor 拦截器
拦截器工作在source 组件之后,source 产生的 event 会被出啊还能入拦截器根据需要进行拦截处理,而且,拦截器可以组成拦截器链!

拦截器在flume中有一些内置的功能;

用户也可以根据自己的数据处理需求,自己开发自定义拦截器,这也是Flume的一个可以用来自定义扩展的接口。

(8) channel selector
一个source可以对接多个channel ,则 event 在这 n 个channel 之间传递的策略,由配置的channel selector 决定;

channel selector 有两种实现:replicating(复制),multiplexing(多路复用)

(9) sink processor
如果sink 和 channel 是一对一关系,则不需要专门的sink processor;

如果要配置一个channel 对多个sink ,则需要将这多个sink配置成一个sink group (sink组);

event 在一个组中的多个sink 间如何传递,则由所配置的sink processor l来决定;

原文链接:https://blog.csdn.net/weixin_45866849/article/details/125729411

配置flume

搭建环境:

基于flume190 +hadoop313+hbase235 +hive312 +jdk180 +sqoop147 +zeppelin +zk235

解压flume安装包将其放入到opt/soft目录

[root@gree2 install]# tar -zxf ./apache-flume-1.9.0-bin.tar.gz -C ../soft/

 在/opt/soft目录下将apache-flume-1.9.0-bin.tar.gz 改名为flume190

[root@gree2 soft]# mv apache-flume-1.9.0-bin/ flume190

到/opt/soft/flume190/conf目录中将临时配置文件flume-env.sh.template拷贝为配置文件flume-env.sh

[root@gree2  conf]# cp flume-env.sh.template flume-env.sh

继续在conf目录下配置flume-env.sh文件 (修改22行和25行)

[root@gree2 conf]# vim flume-env.sh

export JAVA_HOME=/opt/soft/jdk180
export JAVA_OPTS="-Xms2000m -Xmx2000m -Dcom.sun.management.jmxremote"

在conf目录下新建netcat-logger.conf文件

[root@gree2 conf]# vim ./netcat-logger.conf 

填入下列信息

a1.sources=r1
a1.sinks=k1
a1.channels=c1

a1.sources.r1.type=netcat
a1.sources.r1.bind=192.168.136.20
a1.sources.r1.port=8888

a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100

a1.sinks.k1.type=logger

a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1

  安装nc(在任何目录安装都行)

[root@gree2 conf]# yum install -y nc

启动nc 

 [root@gree2 conf]# nc -lk 8888

 安装拨号协议(在任何目录安装都行)

[root@gree2 ~]# yum list telnet*

 [root@gree2 ~]# yum install telnet-server

 [root@gree2 ~]# yum install telnet.*

 拨号测试

 [root@gree2 ~]# telnet localhost 8888

flume拨号测试

开启拨号服务

[root@gree2 flume190]# ./bin/flume-ng agent --name a1 --conf ./conf/ --conf-file ./conf/netcat-logger.conf -Dflume.root.logger=INFO,console

 [root@gree2 ~]# telnet 192.168.61.146 8888

 flumedemo.log中追加数据

[root@gree2 ~]# echo 'hello'>./flumedemo.log

[root@gree2 ~]# echo 'world' >> ./flumedemo.log

[root@gree2 ~]# echo 'happy birthday' >> ./flumedemo.log

 tail显示内容变动

[root@gree2 flume190]# tail -f /root/flumedemo.log

 将指定文件中的内容输出到控制台(linux系统内部的文件)

编辑conf文件

[root@gree2 flume190]# vim ./conf/file-flume-logger.conf

 #将指定文件中的内容输出到控制台
a2.sources=r1
a2.sinks=k1
a2.channels=c1

a2.sources.r1.type=exec
a2.sources.r1.command=tail -f /root/flumedemo.log

a2.channels.c1.type=memory
a2.channels.c1.capacity=1000
a2.channels.c1.transactionCapacity=100

a2.sinks.k1.type=logger

a2.sources.r1.channels=c1
a2.sinks.k1.channel=c1

 启动flume

 [root@gree2 flume190]# ./bin/flume-ng agent --name a2 --conf ./conf/ --conf-file ./conf/file-flume-logger.conf -Dflume.root.logger=INFO,console

插入数据进入flumedemo.log文件 

[root@gree2 ~]# echo 'sh very nice' >> ./flumedemo.log

 

 将指定文件中的内容输出到控制台(window系统文件传入到linux系统的文件)

导入数据csv文件

编辑conf文件

[root@gree2 flume190]# vim ./conf/events-flume-logger.conf

 填入下列代码

events.sources=eventsSource
events.channels=eventsChannel
events.sinks=eventsSink

events.sources.eventsSource.type=spooldir
events.sources.eventsSource.spoolDir=/opt/flumelogfile/events
events.sources.eventsSource.deserializer=LINE
events.sources.eventsSource.deserializer.maxLineLength=32000
events.sources.eventsSource.includePattern=events_[0-9]{4}-[0-9]{2}-[0-9]{2}.csv

events.channels.eventsChannel.type=file
events.channels.eventsChannel.checkpointDir=/opt/flumelogfile/checkpoint/events
events.channels.eventsChannel.dataDir=/opt/flumelogfile/data/events

events.sinks.eventsSink.type=logger

events.sources.eventsSource.channels=eventsChannel
events.sinks.eventsSink.channel=eventsChannel

 修改文件名来符合在上面定义的规则

[root@gree2 flume190]# mv /opt/flumelogfile/events/events.csv /opt/flumelogfile/events/events_2023-03-08.csv

启动flume 

[root@gree2 flume190]# ./bin/flume-ng agent --name events --conf ./conf/ --conf-file ./conf/events-flume-logger.conf -Dflume.root.logger=INFO,console

再次修改文件名的话会排队在这次输出后再次执行

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

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

相关文章

香港酒店模拟分析项目报告--使用tableau、python、matlab

转载请标记本文出处 软件:tableau、pycharm、关系型数据库:MySQL 数据大量分析考虑电脑性能的情况。 文章目录前言一、爬虫是什么?二、使用tableau数据可视化1.引入数据1.1 制作直方图-各地区酒店数量条形图1.2 各地区酒店均价1.3 价格等级堆…

Idea+maven+spring-cloud项目搭建系列--11-3 dubbo限流和熔断

前言: dubbo 作为rpc 通信组件,在使用过程中,如何避免服务提供端被多个消费端撑爆,消费端如何避免因为服务端的故障造成结果响应超时。 1 服务提供端的限流措施: 1.1 使用 :dubbo.protocol.accepts 参数限制服务端同…

面试热点题:回溯算法之组合 组合与组合总和 III

什么是回溯算法? 回溯算法也可以叫回溯搜索算法,回溯是递归的"副产品",回溯的本质是穷举,然后选出我们需要的数据,回溯本身不是特别高效的算法,但我们可以通过"剪枝"来优化它。 理解回溯算法 回溯…

电脑游戏怎么录屏?其实很简单,只需要简单3步

电脑游戏一直是游戏爱好者最热衷的游戏之一。但是,有时候我们想分享我们在游戏中的精彩时刻,或者记录我们的游戏过程以便后续观看和学习。在这种情况下,录屏就成了必不可少的工具。但是,许多人可能不知道电脑游戏怎么录屏。在本文…

逆向分析——壳

你脑海中的壳是什么 壳在自然界是动物的保护壳,软件同样有保护壳,为了防止破解 也许大海给贝壳下的定义是珍珠,也许时间给煤炭下的定义是钻石 ——沙与沫 壳的由来 在DOS时代,壳一般指的是磁盘加密软件中的一段加密程序 后来发展…

APM新添加UAVCAN设备

简介 UAVCAN是一种轻量级协议,旨在通过CAN总线在航空航天和机器人应用中实现可靠通信。要实现通信,最基本需要data_type_ id, signature、数据结构、设备程序初始化。 添加设备数据结构文件(.uavcan格式) 1.在以下路径添加设备数据结构文件,根据设备类…

三体到底是啥?用Python跑一遍就明白了

文章目录拉格朗日方程推导方程组微分方程算法化求解画图动图绘制温馨提示,只想看图的画直接跳到最后一节拉格朗日方程 此前所做的一切三体和太阳系的动画,都是基于牛顿力学的,而且直接对微分进行差分化,从而精度非常感人&#xf…

Web漏洞-CSRF漏洞

CSRF漏洞介绍:CSRF(Cross-Site Request Forgery),中文名称:跨站请求伪造,是一种劫持用户在当前已登录的Web应用程序上执行非本意操作一种攻击.原理:攻击者利用目标用户的身份,执行某…

基于Stackelberg博弈的光伏用户群优化定价模型(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

keras学习之回调函数的使用

回调函数 回调函数是一个对象(实现了特定方法的类实例),它在调用fit()时被传入模型,并在训练过程中的不同时间点被模型调用可以访问关于模型状态与模型性能的所有可用数据模型检查点(model checkpointing)…

【SAP PO】X-DOC:SAP PO 接口配置 REST 服务对接填坑记

X-DOC:SAP PO 接口配置 REST 服务对接填坑记1、背景2、PO SLD配置3、PO https证书导入1、背景 (1)需求背景: SAP中BOM频繁变更,技术人员在对BOM进行变更后,希望及时通知到相关使用人员 (2&…

配天智造自主原创数字工厂:百余名员工人均创收122万

配天智造(832223)2022年度报告显示,报告期内公司实现营业收入1.3亿元,同比增长52%,归属于挂牌公司股东的净利润3867万元,同比增长28.11%。而这家公司全部在职员工仅有107人,人均创收约为122万。…

计算机科学导论笔记(七)

目录 九、程序设计语言 9.1 演化 9.1.1 机器语言 9.1.2 汇编语言 9.1.3 高级语言 9.2 翻译 9.2.1 编译 9.2.2 解释 9.2.3 翻译过程 9.3 编程模式 9.3.1 面向过程模式 9.3.2 面向对象模式 9.3.3 函数式模式 9.3.4 声明式模式 9.4 共同概念 九、程序设计语言 9.1 …

Spring Cloud Alibaba全家桶(六)——微服务组件Sentinel介绍与使用

前言 本文小新为大家带来 微服务组件Sentinel介绍与使用 相关知识,具体内容包括分布式系统存在的问题,分布式系统问题的解决方案,Sentinel介绍,Sentinel快速开始(包括:API实现Sentinel资源保护,…

ABAQUS免费培训 Abaqus成型 焊接 疲劳多工况课程

一、详解Abaqus多工况分析在工程中,多工况的情况是普遍存在的情况,而单工况孤立存在是十分理想状态下的假设。例如我们在进行强度分析时,都是假设其本身是不存在应力的,然后基于这种无初始应力下的计算,使得我们不得不…

aop实现接口访问频率限制

引言 项目开发中我们有时会用到一些第三方付费的接口,这些接口的每次调用都会产生一些费用,有时会有别有用心之人恶意调用我们的接口,造成经济损失;或者有时需要对一些执行时间比较长的的接口进行频率限制,这里我就简…

OpenGL超级宝典学习笔记:纹理

前言 本篇在讲什么 本篇章记录对OpenGL中纹理使用的学习 本篇适合什么 适合初学OpenGL的小白 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 具有全流程的图文教学 重实践,轻理…

MP4文件播放不了是什么原因?原因及解决办法分享!

为什么mp4文件播放不了?常见的有三种原因,可能是由于视频流或音频流不兼容导致,可能是由于视频文件损坏,也可能是因为电脑上缺乏编解码器。下面小编根据mp4文件无法播放的三种可能进行针对性解答。 原因一:视频流或音频…

基于SSM的学生竞赛模拟系统

基于SSM的学生竞赛模拟系统 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍&#x…

DPU54国产全速USB1.1HUB控制器芯片替代AU9254

目录DPU54简介结构框图DPU54主要特性性能特点典型应用领域DPU54简介 DPU54是高性能、低功耗4口全速 USB1.1 HUB 控制器芯片,上行端口兼容全速 12MHz 模式,4 个下行端口兼容全速 12MHz、低速 1.5MHz 两种模式。 DPU54采用状态机单事务处理架构&#xff0…