一、什么是Flume

Flume 是Cloudera提供的一个高可用,高可靠的,分布式的海量日志采集、聚合和传输的系统。

Flume最主要的作用就是:实时读取服务器本地磁盘的数据,将数据写入HDFS。

二、Flume 组成架构

Agent

  Agent 是一个 JVM 进程,它以事件的形式将数据从源头送至目的地。(Flume是一个Java进程)

  Agent 主要由三个部分组成:Source,Channel,Sink

Source(★

Source 是负责接收数据到 Flume Agent 的组件。

Source 的组件可以处理各种类型、各种格式的日志数据。

包括:

  • avro
  • thrift
  • exec
  • jms
  • spooling directory
  • netcat
  • sequence generator
  • syslog
  • http
  • legacy
 
 

Channel(★

Channel 是位于 Source 和 Sink 之间的缓冲区。因此,Channel 允许 Source 和 Sink 运作在不同的速率上。

Channel 是线程安全的,可以同时处理几个 Source 的写入操作和几个 Sink 的读取操作。

Flume 自带两种 Channel:Memory ChannelFile Channel

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

Sink(★

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

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

Event

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

三、Flume 安装部署

1、将flume的安装包上传到任一节点并解压

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

2、文件目录如下

总用量 256
drwxr-xr-x 2 root root 4096 5月 19 16:24 bin
-rw-r--r-- 1 root root 89032 10月 17 2022 CHANGELOG
drwxr-xr-x 2 root root 4096 5月 19 16:25 conf
-rw-r--r-- 1 root root 5681 1月 21 2022 DEVNOTES
-rw-r--r-- 1 root root 2873 1月 21 2022 doap_Flume.rdf
drwxr-xr-x 5 root root 4096 10月 17 2022 docs
drwxr-xr-x 2 root root 12288 5月 19 16:24 lib
-rw-r--r-- 1 root root 108909 10月 17 2022 LICENSE
-rw-r--r-- 1 root root 8832 10月 17 2022 NOTICE
-rw-r--r-- 1 root root 2483 1月 21 2022 README.md
-rw-r--r-- 1 root root 1590 10月 10 2022 RELEASE-NOTES
drwxr-xr-x 2 root root 4096 5月 19 16:24 tools

3、在flume-env.sh中配置JAVA_HOME

# conf目录下,默认是有这四个文件
总用量 16
-rw-r--r-- 1 root root 1661 1月 21 2022 flume-conf.properties.template
-rw-r--r-- 1 root root 1455 1月 21 2022 flume-env.ps1.template
-rw-r--r-- 1 root root 1568 1月 21 2022 flume-env.sh.template
-rw-r--r-- 1 root root 2399 10月 8 2022 log4j2.xml # flume-env.sh需要复制flume-env.sh.template
cp -a flume-env.sh.template flume-env.sh
vim flume-env.sh

4、某个配置文件flume-xxx.properties的介绍

# flume配置的例子
# Name the components on this agent
# source:起一个别名
# properties文件它是java的配置文件,=左边就是键,=右边是值;键的开头都是以a1(就是flume的名字--agent的名字就是a1);a1随便起
a1.sources = r1
# sink:起一个别名
a1.sinks = k1
# channels;:起一个别名
a1.channels = c1
 
# Describe/configure the source
# a1(agent的名字).sources(来源).r1(来源的名字);配置多个来源
# type:不能随便写(文档上说明)
a1.sources.r1.type = netcat
# bind:netcat的一个属性(绑定)
a1.sources.r1.bind = localhost
# port:netcat的一个属性;(端口)
a1.sources.r1.port = 44444
 
# Describe the sink
# 描述一个sink: logger日志(打印到控制台上)
a1.sinks.k1.type = logger
 
# Use a channel which buffers events in memory
# 描述一下channel:内存
a1.channels.c1.type = memory
# capacity:容量
a1.channels.c1.capacity = 1000
# transactionCapacity:事务的容量
a1.channels.c1.transactionCapacity = 100
 
# Bind the source and sink to the channel
# 绑定;source和channel绑定
a1.sources.r1.channels = c1
# sink和channel绑定
a1.sinks.k1.channel = c1

附:默认properties文件

— 要养成终生学习的习惯 —

Flume - [01] 概述的更多相关文章

  1. 1.1-1.5 flume架构概述及安装使用

    一.flume架构概述 1.flume简介 Flume是一种分布式,可靠且可用的服务,用于有效地收集,聚合和移动大量日志数据.它具有基于流数据流的简单灵活的架构.它具有可靠的可靠性机制和许多故障转移和 ...

  2. Flume 学习笔记之 Flume NG概述及单节点安装

    Flume NG概述: Flume NG是一个分布式,高可用,可靠的系统,它能将不同的海量数据收集,移动并存储到一个数据存储系统中.轻量,配置简单,适用于各种日志收集,并支持 Failover和负载均 ...

  3. kafka详解(01) - 概述

    kafka详解(01) - 概述 定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域. 消息队列 MQ传统应用场景之异步处理 使用消 ...

  4. Zookeeper详解(01) -概述

    Zookeeper详解(01) -概述 概念 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分 ...

  5. Flume的概述和安装部署

    一.Flume概述 Flume是一种分布式.可靠且可用的服务,用于有效的收集.聚合和移动大量日志文件数据.Flume具有基于流数据流的简单灵活的框架,具有可靠的可靠性机制和许多故障转移和恢复机制,具有 ...

  6. 【Flume】概述及组成、入门案例、进阶(事务、拓扑结构)、不同拓扑案例、自定义、数据流监控Ganglia

    一.概述 1.定义 日志采集.聚合.传输的系统,基于流式结构 即:读取本地磁盘数据,写入HDFS或kafka 2.架构 Agent:JVM进程,以事件形式将数据送到目的地. Agent由三部分组成:S ...

  7. 01 - 概述 VTK 6.0 迁移

    摘要 对vtk版本4和5的管道机制重新架架构的主要目的是:迁移数据对象和算法对象中的管道执行逻辑到一个新集合的类中,我们称这个集合类叫executives.分离数据和执行模型的代码后,可以双双简化修改 ...

  8. Redis数据库 01概述| 五大数据类型

    1.NoSQL数据库简介 解决应用服务器的CPU和内存压力:解决数据库服务的IO压力: ----->>> ① session存在缓存数据库(完全在内存里),速度快且数据结构简单: 打 ...

  9. Flume(1)-概述与组成架构

    一. 定义 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统.Flume基于流式架构,灵活简单. 二. 优点 1. 可以和任意集中式存储进程集成. 2. ...

  10. Hive 01 概述、安装配置

    概述 数据仓库:是一个面向主题的.集成的.不可更新的.随时间不变化的数据集合,它用于支持企业或组织的决策分析处理. 数据仓库的结构和建立过程: 数据源 数据存储及管理 ETL Extract 提取 T ...

随机推荐

  1. PM-企业数字化转型,数据治理是关键

      企业数字化转型是大势所趋,通过数据治理.数据平台建设.数据分析与建模,把数据变成服务,使数据能在企业内顺畅流动起来,为企业带来巨大的价值.数据是企业数字化转型的重要基础.   数据能创造价值,但数 ...

  2. Java8使用Stream实现List中对象属性的合并(去重并求和)

    前言 在需求开发中,我们需要对一个List中的对象进行唯一值属性去重,属性求和,对象假设为Pool,有name.value两个属性,其中name表示唯一值,需要value进行求和,并最后保持一份对象. ...

  3. 【MySQL】求和查询,目标值int,但空数据时返回null的问题(Java)

    问题分析 int selectDeviceMonthRepairCount(String deviceType, String month); <select id="selectDe ...

  4. 【SpringMVC】获取请求参数的方式

    SpringMVC获取请求参数的方式 目录 SpringMVC获取请求参数的方式 方式1:ServletAPI 方法2:通过控制器方法的形参获取请求参数 方法3:@RequestParam 方法4:@ ...

  5. JVM简介—3.JVM的执行子系统

    大纲 1.Class文件结构 2.Class文件格式概述 3.Class文件格式详解 4.字节码指令 5.类的生命周期和初始化 6.类加载的全过程 7.类加载器 8.双亲委派模型 9.栈桢详解 11. ...

  6. 禁止所有搜索爬虫访问网站指定目录robots.txt

    禁止所有搜索爬虫访问网站指定目录 用自己私人的服务器来测试吧,99买阿里云 文件放置不让爬取的网站文件夹目录里 robots.txt User-agent: * Disallow: / User-Ag ...

  7. Qt音视频开发21-mpv内核万能属性机制

    一.前言 搞过vlc内核后又顺带搞了搞mpv内核,mpv相比vlc,在文件数量.sdk开发便捷性方面绝对占优势的,单文件(可能是静态编译),不像vlc带了一堆插件,通过各种属性来set和get值,后面 ...

  8. Qt编写可视化大屏电子看板系统18-柱状分组图

    一.前言 柱状分组图是柱状堆积图的衍生或者另外一种展示效果,设置的数据值数据源集合完全一样,只不过就是把柱子给拿下来了放在旁边,然后一个分组多个柱子横向排列,不同分组之间有一定的空隙隔开,默认QCus ...

  9. DVWA靶场搭建及错误解决教程

    前言 DVWA(Damn Vulnerable Web Application)靶场是一个旨在帮助安全人员和开发人员学习和提高网络安全技能的开源项目.它是一个故意存在多种安全漏洞的 PHP/MySQL ...

  10. Solution Set -「NOIP Simu.」20221111

    \(\mathscr{A}\sim\) 遗忘十字路   Cover:「CF 1746D」Paths on the Tree.   Tag:「C.性质/结论」   最原始的思路自然是 DP. 令 \(f ...