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

目录

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.hqwc.cn/news/599835.html

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

相关文章

milvus search api的数据结构

search api的数据结构 此api的功能是向量相似度搜索(vector similarity search) 一个完整的search例子: 服务端collection是一个hnsw类型的索引。 import random from pymilvus import (connections,Collection, )dim 128if __name__ __main__:connections.connect(alias…

zdpdjango_argonadmin使用Django开发一个美观的后台管理系统

初始代码 安装依赖 pip install -r requirements.txt生成管理员账户 迁移模型&#xff1a; python manage.py makemigrations python manage.py migrate创建超级用户&#xff1a; python manage.py createsuperuser启动服务 python manage.py runserver浏览器访问&#xf…

es6新增set、map两种数据结构(超级详细-附加代码)

文章目录 一、Set增删改查add()delete()has()clear()遍历 二、Map增删改查sizeset()get()has()delete()clear()遍历 三、WeakSet 和 WeakMapWeakSetWeakMap 参考文献 如果要用一句来描述&#xff0c;我们可以说 Set是一种叫做集合的数据结构&#xff0c;Map是一种叫做字典的数…

wheeltec轮趣ROS教育机器人的网络连接

一、术语解析 宿主机&#xff1a;宿主机是指物理主机&#xff0c;比如用于开发测试的笔记本电脑和台式机电脑。 虚拟机&#xff1a;虚拟机是指安装在宿主机的VMware&#xff0c;推荐在宿主机上安装虚拟机&#xff0c;官方提供虚拟机的镜像以及配套的开发环境。 ROS主机&…

内容创作策略:打造影响力强大的技术博客

CSDN的朋友你们好&#xff0c;我是未来&#xff0c;今天给大家带来专栏【程序员博主教程&#xff08;完全指南&#xff09;】的第6篇文章——“博客内容创作策略”。本文为技术博主提供了一个精简的内容创作策略指南&#xff0c;涵盖了设定目标、分析竞争、关键词研究、内容规划…

Vue中的键盘事件

目 录 1. 概述 2. JavaScript 键盘事件 2.1 键盘事件类型 2.1.1 keydown 事件2.1.2 keypress 事件2.1.3 keyup 事件2.1.4 input 事件 2.2 键盘事件的响应顺序 3. Vue 键盘事件监听与处理 3.1 获取按键的 键码&#xff08;keyCode&#xff09;3.2 监听按键事件 4. Vue 按键…

基于单片机交流电参数测试仪系统设计

**单片机设计介绍&#xff0c;基于单片机交流电参数测试仪系统设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 &emsp&#xff1b;基于单片机交流电参数测试仪系统设计的概要主要涵盖了系统的整体架构、功能实现、硬件组成以及软件…

【Kaggle】练习赛《鲍鱼年龄预测》(下)

前言 上一篇讲解《鲍鱼年龄预测》的数据分析和可视化一些操作&#xff0c;对不同的四个模型产生了Baseline。本文在这个基础上做优化。 【Kaggle】练习赛《鲍鱼年龄预测》(上) 加载库 (略)以参考上篇 加载数据 # 加载所有数据 train pd.read_csv(os.path.join(FILE_PATH,…

嵌入式Linux驱动开发——汇编点灯

嵌入式Linux驱动开发——汇编点灯 本文章开始记录学习嵌入式Linux的过程&#xff0c;使用的开发板是正点原子的阿尔法&#xff0c;以及左老师的书籍和视频。然后这个系列不会介绍基础知识&#xff08;书上都有&#xff09;&#xff0c;主要是记录思考过程以及需要注意的点。 代…

【C++】继承总结

一、前言 我们众所周知的C三大特性分别为&#xff1a;封装、继承、多态。 封装就是将接口实现统一化&#xff0c;隐藏那些不同的地方&#xff0c;在上层函数调用体现的方式一样&#xff0c;如各种容器的迭代器iterator&#xff0c;尽管底层实现的方式不同&#xff0c;但是在使用…

rsync 远程同步 基础介绍

目录 一 Rsync 简介 1&#xff0c;rsync 是什么 2&#xff0c;rsync 中的发起端 同步源 3&#xff0c;同步方式 4&#xff0c;备份的方式 5&#xff0c;常用Rsync命令 6&#xff0c; 配置源的两种表达方法 7&#xff0c;rsync做本地复制时与cp 对比 二&#xff…

递归学习第一个课

一、递归定义 基本定义 函数自己调用自己&#xff08;通俗第一印象&#xff09;大问题可以拆分小问题&#xff08;拆分&#xff0c;边界&#xff09;大问题与小问题的关系&#xff08;递归关系&#xff09; 为什么拆分小问题&#xff1f; 小问题更容易求解大问题与小问题内部…