数仓开发之Flume《一》:Flume的概述及安装

news2025/1/21 11:30:21

目录

1. 🥙Flume概述

1.1 Flume简介

1.2 Flume的架构

1. 🧀agent介绍

2. ​Agent 主要有 3 个部分组成,Source、Channel、Sink。

🥗2.1 Source

🥗2.2 Sink

🥗2.3 Channel

3. 🧀Flume 自带两种 Channel:Memory Channel 和 File Channel。

4. 🧀Event 介绍

2. 🥙Flume的安装配置

2.1 下载地址

2.2 安装部署 


1. 🥙Flume概述

1.1 Flume简介

  • Flume是一种可配置、高可用的数据采集工具,主要用于采集来自各种流媒体的数据(Web服务器的日志数据等)并传输到集中式数据存储区域。
  • Flume 支持在日志系统中定制各种数据发送方,用于收集数据;并且可以对数据进行简单处理,将其写到可定制的各种数据接收方(如文本、HDFS、HBase等)。
  • Flume最主要的作用就是,实时读取服务器本地磁盘的数据,将数据写入到HDFS。

1.2 Flume的架构

单个agent采集数据

多级agent之间串联-级联flume

1. 🧀agent介绍

Flume中最核心的角色是agent,flume采集系统就是由一个个agent连接起来所形成的一个或简单或复杂的数据传输通道。 对于每一个Agent来说,它就是一个独立的守护进程(JVM),它负责从数据源接收数据,并发往下一个目的地。

2. ​Agent 主要有 3 个部分组成,Source、Channel、Sink。

🥗2.1 Source

Source 是负责接收数据到 Flume Agent 的组件。Source 组件可以处理各种类型、各种格式的日志数据----》说白了就是就是数据来源

常用的Source类型

描述

Avro source

监听Avro端口并且从外部Avro客户端接收Event需指定被监听的IP和端口号。

Exec Source

可以通过指定的linux操作命令对日志进行读取,使用exec时需指定使用的命令

Spooling Directory Source

读取目录里的文件,当出现新文件时会读取该文件并获取数据(文件在读取过程中不能修改)

NetCat source

监听指定的端口并将接收到的数据的每一行转换为一个事件。

Kafka Source

作为一个消费者,从Kafka的topic读取消息

Http Source

接收HTTP 的GET和POST请求作为Flume的事件

TailDir Source

监控目录里的正则文件,并支持断点续传。

🥗2.2 Sink

下沉组件,用于往下一级agent传递数据或者向最终存储系统传递数据。Sink 组件目的地包括 hdfs、logger、avro、thrift、ipc、file、HBase、solr、自定义。-----》数据最终写出的位置

常用的Sink类型

描述

Logger Sink

将数据写到Flume的log中,通常用于测试或者调试

Avro Sink

将数据发送给其他Avro Source

File Roll Sink

将数据存放在本地文件系统中,根据时间或者大小生成文件

Kafka Sink

将数据写入Kakfa中

HBase Sink

将数据写入Hbase

AsyncHbase Sink

使用异步的方式将数据写入Hbase

Hive Sink

将数据写入Hive

HDFS Sink

将数据写入HDFS

ElasticSearch Sink

将数据写入ElasticSearch

MorphilineSoir Sink

将数据写入Soir

🥗2.3 Channel

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

常用的Channel类型

描述

Memory Channel(常用)

储存Event在内存队列中,如果宕机可能会造成数据的丢失,具有很高的吞吐量

JDBC Channel

将Event储存在持久化的数据库中

Kafka Channel(常用)

将Event储存在Kafka中,Kakfa提供了高可用和复制性,当Kafka或agent崩溃时也不会丢失

File Channel(常用)

将Event持久化在本地文件系统里(性能较差),但可以保证数据不会丢失

Spillable Memory Channel

Event数据存储在内存和磁盘上,当内存队列满了将会持久化到磁盘文件(新加的,不稳定)

3. 🧀Flume 自带两种 Channel:Memory Channel 和 File Channel

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

4. 🧀Event 介绍

数据agent内部数据流转的封装形式;

  • Source组件在获取到原始数据后,需要封装成Event放入channel; Sink组件从channel中取出Event后,需要根据目标存储的需求,转成其他形式的数据输出。
  • Event封装对象主要有两部分组成: Headers和 Body
  • header是一个集合 Map[String,String],用于携带一些KV形式的元数据(标志、描述等) body: 就是一个字节数组byte[];装载具体的数据内容
Event: {  
headers:HashMap<String,String>  ==> {host=doitedu01,timestamp=17623745832457} 元数据
body:byte[] ==> 61 20 61 20 61 61 61 20 61 20 0D    字节数据 
}  

2. 🥙Flume的安装配置

Flume的安装非常简单,只需要解压即可,当然,前提是已有hadoop环境

2.1 下载地址

(1)Flume 官网地址:Welcome to Apache Flume — Apache Flume
(2)文档查看地址:Flume 1.11.0 User Guide — Apache Flume
(3)下载地址:Index of /dist/flume

2.2 安装部署 

上传安装包到数据源所在节点上,然后解压 

tar -zxvf apache-flume-1.11.0-bin.tar.gz

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

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

相关文章

2.k8s架构

目录 k8s集群架构 控制平面 kube-apiserver kube-scheduler etcd kube-controller-manager node 组件 kubelet kube-proxy 容器运行时&#xff08;Container Runtime&#xff09; cloud-controller-manager 相关概念 k8s集群架构 一个Kubernetes集群至少包含一个控制…

蓝桥杯刷题day14——盖印章【算法赛】

一、问题描述 小 Z 喜欢盖印章。 有一天,小 Z 得到了一个 nm 的网格图,与此同时,他的手上有两种印章(分别称为 A,B),如下图所示。 他想将这两种印章盖在这个网格图上。 由于小 Z 是一个有原则的人,他将按照以下规则进行操作。 每个印章所形成的图案的边必须和网格图…

三防平板定制服务:亿道信息与个性化生产的紧密结合

在当今数字化时代&#xff0c;个性化定制已经成为了市场的一大趋势&#xff0c;而三防平板定制服务作为其中的一部分&#xff0c;展现了数字化技术与个性化需求之间的紧密结合。这种服务是通过亿道信息所提供的技术支持&#xff0c;为用户提供了满足特定需求的定制化三防平板&a…

面向电力行业定制安全云工作站解决方案,麒麟信安出席2024年电力企业信创替代技术研讨会

日前&#xff0c;由中国电子企业协会主办的“2024年电力企业信创替代技术研讨会”在江苏南京正式召开。会议以国家推进实现自主可控、加快建设“数字中国”为大背景&#xff0c;聚焦电力企业紧抓“信创替代”机遇&#xff0c;通过安全可靠的软硬件迭代升级&#xff0c;实现企业…

2024/4/2—力扣—连续数列

代码实现&#xff1a; 思路&#xff1a;最大子数组和 解法一&#xff1a;动态规划 #define max(a, b) ((a) > (b) ? (a) : (b))int maxSubArray(int* nums, int numsSize) {if (numsSize 0) { // 特殊情况return 0;}int dp[numsSize];dp[0] nums[0];int result dp[0];fo…

day03 51单片机

51单片机学习 1 模块化编程 1.1 什么是模块化编程 随着我们的代码越来越复杂,我们的main.c越来越长,阅读性也越来越差。如果将来开始做项目,我们可能要同时操作好几个模块,这种情况下我们无法再把代码写到同一个文件,而是要分模块管理代码。 具体实现方法,就是将源码…

【go】模板展示不同k8s命名空间的deployment

gin模板展示k8s命名空间的资源 这里学习如何在前端单页面&#xff0c;调用后端接口展示k8s的资源 技术栈 后端 -> go -> gin -> gin模板前端 -> gin模板 -> html jsk8s -> k8s-go-client &#xff0c;基本资源(deployment等) 环境 go 1.19k8s 1.23go m…

单点登录系统设计

一、介绍 token鉴权最佳的实践场景就是在单点登录系统上。 在企业发展初期&#xff0c;使用的后台管理系统还比较少&#xff0c;一个或者两个。 以电商系统为例&#xff0c;在起步阶段&#xff0c;可能只有一个商城下单系统和一个后端管理产品和库存的系统。 随着业务量越来…

腾讯云流量怎么计算的?轻量服务器流量价格表

腾讯云轻量应用服务器套餐带流量包&#xff0c;就是有月流量限制的意思&#xff0c;超出轻量套餐的流量需要另外支付流量费&#xff0c;轻量服务器地域不同超额流量费用也不同&#xff0c;北京上海广州等中国内地地域流量价格是0.8元每GB&#xff0c;中国香港地域流量价格是1元…

单片机IGBT驱动电路一例

概述&#xff1a; 驱动的作用有三个&#xff1a; 1.是作为放大器获得所需要的驱动电压。 2.是提高输出电流能力。 3.是进行功率回路和控制回路的隔离 信号从MCU到IGBT驱动芯片 首先驱动电流需要放大 MCU的输出电流是mA级别&#xff0c;而IGBT需要的驱动电流可能达到几安培…

解锁ETLCloud中Kettle的用法

随着大数据时代的到来&#xff0c;数据的处理和管理成为各行各业不可或缺的一环。ETL&#xff08;Extract-Transform-Load&#xff09;工具作为数据处理的重要环节&#xff0c;扮演着将数据从源端抽取出来、经过转换处理&#xff0c;最终加载至目标端的关键角色。在众多ETL工具…

香港科技大学(广州)智能制造学域可持续能源与环境学域博士招生宣讲会——重庆大学专场(暨全额奖学金政策)

两个学域代表教授亲临现场&#xff0c;面对面答疑解惑助攻申请&#xff01;可带简历现场咨询和面试&#xff01; &#x1f4b0;一经录取&#xff0c;享全额奖学金1.5万/月&#xff01; 报名链接&#xff1a;https://www.wjx.top/vm/wmuN2ea.aspx# 地点&#xff1a;重庆大学A区…

docker一键部署GPU版ChatGLM3

一键运行 docker run --gpus all -itd --name chatglm3 -p 81:80 -p 6006:6006 -p 8888:8888 -p 7860:7860 -p 8501:8501 -p 8000:8000 --shm-size32gb registry.cn-hangzhou.aliyuncs.com/cwp-docker/chatglm3-gpu:1.0 进入容器 docker exec -it chatglm3 /bin/bash cd /…

MacOS Docker 部署 Redis 数据库

一、简介 Redis是一个开源的、使用C语言编写的、基于内存亦可持久化的Key-Value数据库&#xff0c;它提供了多种语言的API&#xff0c;并支持网络交互。Redis的数据存储在内存中&#xff0c;因此其读写速度非常快&#xff0c;每秒可以处理超过10万次读写操作&#xff0c;是已知…

Vue项目打包成exe文件(electron)

1.将写好的vue项目打包 1.1运行vue ui命令 输出目标文件 如果打开index.html是空白的&#xff0c;而且控制台报错获取xxx资源失败的问题&#xff0c;你需要在vue.config.js 上加一个命令&#xff0c;如果没有你需要创建一个。 2.下载electron官方示例 git clone https://gith…

Go 项目依赖注入wire工具最佳实践介绍与使用

文章目录 一、引入二、控制反转与依赖注入三、为什么需要依赖注入工具3.1 示例3.2 依赖注入写法与非依赖注入写法 四、wire 工具介绍与安装4.1 wire 基本介绍4.2 安装 五、Wire 的基本使用5.1 前置代码准备5.2 使用 Wire 工具生成代码 六、Wire 核心技术5.1 抽象语法树分析5.2 …

idea开发 java web 疫情信息查询系统bootstrap框架web结构java编程计算机网页接口查询

一、源码特点 java 疫情信息查询系统是一套完善的完整信息系统&#xff0c;结合java web开发和bootstrap UI框架完成本系统 &#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 前段主要技术 css j…

复习知识点整理

零碎语法 1.导入某个文件夹的index文件&#xff0c;index可以省略&#xff08;这里导入的是router和store文件下的index.js文件&#xff09; 2.路由懒加载 this 1.在vue文件中使用router\store对象时 this&#xff1a;普通函数的this指向vue实例对象(在没有明确指向的时候…

ubuntu系统设置java环境变量 jdk离线安装

目录 目的一、下载jdk二、安装三、配置jdk环境变量1、编辑文件~/.bashrc2、刷新系统环境变量3、验证 目的 在ubuntu环境下配置java环境变量&#xff0c;除jdk压缩包下载外&#xff0c;其余安装及配置过程无需联网&#xff0c;可离线完成。 一、下载jdk 一些比较靠谱的免登录…

Davinci报警40359

问题现象 前几天做实验的时候遇到个问题被卡着&#xff0c;报警40359。 问题描述 报警信息里面描述&#xff0c;我的一个IDT里面的基础类型有问题。 问题分析 根据提示排查 首先检查了出问题的IDT里面的基础类型&#xff0c;引用的是基础类型里面的布尔类型&#xff0c;非…