阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Flume安装部署教程

230次阅读
没有评论

共计 3061 个字符,预计需要花费 8 分钟才能阅读完成。

1. 简介

该文主要是翻译官方的相关文档,源地址点击这里。介绍一下 Flume 的一些基本知识和搭建方法。

Apache Flume 是一种分布式,可靠和可用的系统,用于高效收集,聚合和将许多不同的来源的大量日志数据移动到集中式数据存储。

Apache Flume 的使用不仅限于日志数据聚合。由于数据源是可定制的,因此可以使用 Flume 来传输大量事件数据,包括但不限于网络流量数据,社交媒体生成数据,电子邮件消息以及几乎任何数据源。

目前有两个版本的代码行可用,0.9.x 和 1.x 版本。“Flume 0.9.x 用户指南”提供 0.9.x 跟踪的文档。本文档适用于 1.4.x 踪迹。

鼓励新用户和现有用户使用 1.x 版本,以便利用最新架构中提供的性能改进和配置灵活性。

2. 环境要求

Java 运行时环境 – Java 1.7 或更高版本

内存 -sources, channels 或 sinks 使用,需配置足够的内存

磁盘空间 – 用于 channels 或 sinks 使用的配置的足够的磁盘空间

目录权限 – agent 使用的目录的读 / 写权限

3. 数据流模型

Flume 事件被定义为数据流单元,其包含有效载荷字节和可选的一组字符串属性。Flume 代理是一个(JVM)进程,它管理组件的事件流从外部源传递到下一个目标。

Flume 安装部署教程

Flume 源消耗由外部源(如 Web 服务器)传递给它的事件。外部源用特定的可以被目标 Flume 识别的格式发送给 Flume。例如,一个 Avro Flume 源可以被用于接收来自 Avro 客户端或者是其它流中发送来自 Avro sink 事件的 Flume 代理的 Avro 事件。类似的流可以被定义使用一个 Thrift Flume Source 来接收来自 Thrift Sink 或 Flume Thrift Rpc 客户端,或者使用来自 Flume thrift 协议生成的任何语言编写的 Thrift 客户端的事件。当 Flume 源接收到一个事件时,它将其存储到一个或多个通道中。该通道是一个被动存储,保持事件,直到它被 Flume sink 消耗。文件通道是一个例子 – 它由本地文件系统支持。接收器从通道中删除事件,并将其放入外部存储库(如 HDFS(通过 Flume HDFS sink)),或将其转发到流中下一个 Flume 代理(下一跳)的 Flume 源。给定代理中的源和接收器与通道中分段的事件异步运行。

Flume 允许用户建立多 hop 流,其中事件在到达最终目的地之前穿过多个代理。它还允许为失败的 hops 提供 fan-in 和 fan-out 流,上下文路由和备份路由(故障切换)。

事件在每个代理的频道上进行。然后将事件传递到流中的下一个代理或终端存储库(如 HDFS)。事件只有在存储在下一个代理的通道或终端存储库中之后才从通道中删除。这是 Flume 中单跳消息传递语义如何提供流的端到端可靠性。

Flume 采用 transactional 方式来保证事件的可靠传递。source 和 sink 分别在事务中封装存储 / 检索,由通道提供的事务来放置或提供事件。这确保了事件集可以在流程中从点到点可靠地传递。在多 hop 流程的情况下,来自上一 hop 的汇聚和来自下一跳的源都具有其事务运行,以确保数据被安全地存储在下一跳的信道中。

这些事件是在通道中进行的,它管理从故障中恢复。Flume 支持由本地文件系统支持的持久文件通道。还有一个内存通道,它将事件简单地存储在内存中的队列中,速度更快,但当代理进程死机时仍然保留在内存通道中的任何事件都无法恢复。

4. 下载

点击这里,下载二进制包,解压安装包,目录结构如下:

Flume 安装部署教程

官方文档地址:这里。维基:这里。

5. 配置

Flume 代理配置存储在本地配置文件中。这是一个遵循 Java 属性文件格式的文本文件。可以在同一配置文件中指定一个或多个代理的配置。配置文件包括代理中每个源,宿和通道的属性,以及它们如何连接在一起以形成数据流。

流中的每个组件(源,宿或通道)具有特定类型和实例化的名称,类型和属性集。例如,Avro 源需要一个主机名(或 IP 地址)和一个端口号来接收数据。内存通道可以具有最大队列大小(“容量”),并且 HDFS 接收器需要知道文件系统 URI,创建文件的路径,文件轮换的频率(“hdfs.rollInterval”)等。组件的所有这些属性 需要在托管 Flume 代理的属性文件中设置。

代理需要知道要加载的单个组件以及它们如何连接以构成流。这是通过列出代理中每个源,接收器和通道的名称,然后为每个接收器和源指定连接通道来完成的。例如,代理程序通过称为文件通道的文件通道将来自 Avro 源的 Avro 源的事件流经 HDFS sink hdfs-cluster1。配置文件将包含这些组件的名称和文件通道作为 avroWeb 源和 hdfs-cluster1 sink 的共享通道。

  开启一个代理:代理开启是通过使用一个 shell 脚本称为 flume-ng,其位于 Flume 的 bin 目录下。你需要指定代理的名称,配置目录和配置文件,通过以下命令进行:

$ bin/flume-ng agent –n $agent_name –c conf –f conf/flume-conf.properties.template

在这里,我们给出一个示例配置文件,描述单节点 Flume 部署。此配置允许用户生成事件,然后将其记录到控制台。

Flume 安装部署教程

此配置定义了名为 a1 的单个代理。a1 有一个源,用于监听端口 44444 上的数据,缓冲区内存中的事件数据的通道和将事件数据记录到控制台的接收器。配置文件命名各种组件,然后介绍其类型和配置参数。给定的配置文件可以定义几个命名的代理; 当一个给定的 Flume 进程被启动时,一个标志被传递,告诉它哪个命名的代理显示。

给定这个配置文件,我们可以启动 Flume,如下所示:

$ bin/flume-ng agent –conf conf –conf-file example.conf –name a1 –Dflume.root.logger=INFO,console

我是在 windows 上进行操作的,下面给出 windows 的相关处理方法:

Windows 下,flume 高版本集成了 powershell,基础的 flume 配置文件不变,但是要在控制台输出相关的日志信息,还需要将 conf 文件夹下的 flume-env.ps1.template 重命名为 flume-env.ps1,在里面添加如下:

Flume 安装部署教程

然后再执行下面的命令:

bin> flume-ng.cmd agent -conf ../conf -conf-file ../conf/flume-conf.properties -name a1

使用 flume-ng.cmd help 查看在 windows 下的用法:

Flume 安装部署教程

请注意,在完全部署中,我们通常会再包含一个选项:–conf = <conf-dir>。<conf-dir> 目录将包含 shell 脚本 flume-env.sh 和潜在的 log4j 属性文件。在这个例子中,我们传递一个 Java 选项来强制 Flume 登录到控制台,而没有一个自定义的环境脚本。

从另一个单独的终端,我们可以 telnet 端口 44444 并发送 Flume 一个事件:

Flume 安装部署教程

在之前的 Flume 的终端就可以看见:

Flume 安装部署教程

这样就完成了简单的配置了。

6. 后记

这篇文章主要是讲解一下 flume 的基础知识和搭建,后续可能会更进一步补充相关知识。

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-06/144729.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3061字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中