IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Flume详解(一) -> 正文阅读

[大数据]Flume详解(一)

一、Flume介绍
Flume Apache Flume是一个分布式,高可用可靠的服务,能够高效的收集并聚合大量日志数据,它基于流式数据流的结构,能够将数据写入多种数据接收方。

二、几个重要概念
1.Event
事件是Flume数据传输的基本数据单位,它携带着数据信息。
2.Agent
Flume包含一个或者多个Agent,可以把Agent当做一个独立的进程,它的主要作用就是从客户端接收数据,并将数据传给下一个目标节点。
3.Source
Source是Agent中的一员,它主要用来从数据发生方接收数据,并将数据发送到一个或者多个Channel。
4.Channel
也是Agent中的一员,我们可以把Channel看作是一处缓存,它用来暂存Source发送过来的数据,等着这些数据被Sink消费。
5.Sink
也是Agent中的一员,Source和Sink中间由Channel作为桥梁,Sink将Channel中的数据传递到我们所需的目的地,目的地可以是Kafka、HBASE、HDFS等等。

三、Flume的插件
1.Interceptors
Flume自己的拦截器,在Source向Channel进行发送中,拦截器用来进行数据的校验或者也可以对数据进行更改。
2.Channels Selectors
可以在Source发送数据前对使用哪个Channel进行选择;管道又分为两种,一是默认的即每一个管道都传递相同的事件数据。二是根据事件自带的信息来进行管道选择。
3.Sink
用来激活Sinks群中的某个Sink,可以进行负载均衡控制。

四、Flume组件的配置
1. Source
Source有很多类型,这里只说较常见常用的五种
(1). AVro Source
指Flume通过Avro方式在两台机器之间进行数据传输,即监听和收集指定的端口的日志,同时需要提供给Source被监听的主机IP。以下为Avro Source配置的示例,红框内的配置项为必填。

在这里插入图片描述

a1.sources = r1
a1.channels = c1
a1.sources.r1.type = avro
a1.sources.r1.channels = c1
a1.sources.r1.bind = 0.0.0.0
a1.sources.r1.port = 4141

(2). Exec Source
该种类型就是通过命令操作来进行数据的读取,比如常用的就是用tail -f shell命令来读取日志文件,以下为Exec Source配置的示例。

在这里插入图片描述

a1.sources = r1
a1.channels = c1
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /var/log/secure
a1.sources.r1.channels = c1

(3). Spooling-directory Source
如果说上面的Exec Source类型是读取日志文件的形式,那么则可以说Spooling-directory Source类型与它类似,即是读取文件夹的形式,准确的说应该是读取指定文件夹下的日志文件。该Source会对指定文件夹进行监视,在文件夹下产生新文件时对其进行读取,同时当一个文件被完全读完之后,Source会对该文件进行删除或记标记(重命名)。以下为Spooling-directory Source配置的示例。

在这里插入图片描述

a1.channels = ch-1
a1.sources = src-1
a1.sources.src-1.type = spooldir
a1.sources.src-1.channels = ch-1
a1.sources.src-1.spoolDir = /var/log/flume
a1.sources.src-1.fileHeader = true

(4). Syslog Source
Syslog Source可以通过Syslog协议读取系统日志,在指定ip地址和端口后可以采集数据源为Syslogudp和 Syslogtcp两种的日志信息。以下为Syslog Source配置的示例。

在这里插入图片描述

a1.sources = r1
a1.channels = c1
a1.sources.r1.type = syslogtcp
a1.sources.r1.port = 5140
a1.sources.r1.host = localhost
a1.sources.r1.channels = c1

(5). Kafka Source
Kafka Source就是一个Apache Kafka消费者,它从Kafka的topic中读取消息。 如果运行了多个Kafka Source,则可以把它们配置到同一个消费者组,以便每个source都读取一组唯一的topic分区。以下为Kafka Source配置的示例。

在这里插入图片描述

tier1.sources.source1.type = org.apache.flume.source.kafka.KafkaSource
tier1.sources.source1.channels = channel1
tier1.sources.source1.batchSize = 5000
tier1.sources.source1.batchDurationMillis = 2000
tier1.sources.source1.kafka.bootstrap.servers = localhost:9092
tier1.sources.source1.kafka.topics = test1, test2
tier1.sources.source1.kafka.consumer.group.id = custom.g.id

2.Channel
Flume的Channel中最主要也最常见的类型就是Memory channel,不过也有很多其他类型的Channel,比如Kafka channel将Event缓存在Kafka,JDBC channel将Event持久化等等。在Memory channel中可以设置管道的缓存容量以及数据的阈值等参数。以下为Memory Source配置的示例。

在这里插入图片描述

a1.channels = c1
a1.channels.c1.type = memory
a1.channels.c1.capacity = 10000
a1.channels.c1.transactionCapacity = 10000
a1.channels.c1.byteCapacityBufferPercentage = 20
a1.channels.c1.byteCapacity = 800000

3.Sink
Sink也有多种类型,我们在这里也只说五种
(1). Avro Sink
Avro Sink的特点是可以将接收到的日志数据发送到指定端口,可提供给下一节点的Agent或者组件应用, 这种方式在使用时也需要指定ip和端口。以下为Avro Sink配置的示例。

在这里插入图片描述

a1.channels = c1
a1.sinks = k1
a1.sinks.k1.type = avro
a1.sinks.k1.channel = c1
a1.sinks.k1.hostname = 10.10.10.10
a1.sinks.k1.port = 4545

(2). Logger Sink
Logger Sink用于记录INFO级别日志的汇聚点,即将收集到的日志写到Flume的Log中,该种Sink简单常用, 一般用于调试。以下为Logger Sink配置的示例。

在这里插入图片描述

a1.channels = c1
a1.sinks = k1
a1.sinks.k1.type = logger
a1.sinks.k1.channel = c1

(3). File_roll Sink
File_roll Sink可以将一定时间内收集到的日志写到一个指定的文件中,用户指定一个文件夹和一个周期 ,再启动Flume后会有一个文件写入该文件夹,此周期内收集到的日志将全被写入该文件。以此,在一周期后会有新的文件写入。以下为File_roll Sink配置的示例。

在这里插入图片描述

a1.channels = c1
a1.sinks = k1
a1.sinks.k1.type = file_roll
a1.sinks.k1.channel = c1
a1.sinks.k1.sink.directory = /var/log/flume

(4). Kafka Sink
Kafka Sink可以把数据发送到Kafka,也就是将Flume 与Kafka 集成。Flume1.8不再支持Kafka 0.9.x(不包括0.9.x)以前的版本。以下为Kafka Sink配置的示例。

在这里插入图片描述

a1.sinks.k1.channel = c1
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.kafka.topic = mytopic
a1.sinks.k1.kafka.bootstrap.servers = localhost:9092
a1.sinks.k1.kafka.flumeBatchSize = 20
a1.sinks.k1.kafka.producer.acks = 1
a1.sinks.k1.kafka.producer.linger.ms = 1
a1.sinks.k1.kafka.producer.compression.type = snappy

(5). HDFS Sink
HDFS Sink会将Event写入HDFS,可以根据写入的时间、文件大小或Event数量定期滚动文件(关闭当前文件并创 建新文件)。它还可以根据Event自带的时间戳或系统时间等属性对数据进行分区。使用HDFS Sink需要安装hadoop环境, 以便Flume可以使用Hadoop的客户端与HDFS集群进行通信。以下为HDFS Sink配置的示例。

在这里插入图片描述

a1.channels = c1
a1.sinks = k1
a1.sinks.k1.type = hdfs
a1.sinks.k1.channel = c1
a1.sinks.k1.hdfs.path = /flume/events/%y-%m-%d/%H%M/%S
a1.sinks.k1.hdfs.filePrefix = events-
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 10
a1.sinks.k1.hdfs.roundUnit = minute

以上就是从Flume的介绍到组件配置的全部讲解,下一节介绍Flume的安装部署。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章           查看所有文章
加:2021-07-07 21:17:05  更:2021-07-07 21:17:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 0:28:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码