热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Flume入门及疑惑

背景Flume日志采集框架,使用默认的组件简单运行了一下。本文介绍sink使用file_roll的配置及疑惑。windows下命令语法下载压缩文件后解压到本地&

背景

Flume 日志采集框架,使用默认的组件简单运行了一下。
本文介绍 sink 使用 file_roll 的配置及疑惑。

windows 下命令语法

下载压缩文件后解压到本地,跟其他 Apache 项目一样,是一个二进制文件包,运行文件位于 bin 目录中,启动 agent 的语法如下:

flume-ng.cmd agent [OPTION]

OPTION 基础选项:

  1. --conf 配置文件所在的目录
  2. --config-file agent 启动的配置文件
  3. --name 需要启动的 agent 名称

配置一个 sink 为 file_role 的 demo

agent1.sinks.loggerSink.type = file_roll
agent1.sinks.loggerSink.sink.directory = E:/file_roll
agent1.sinks.loggerSink.sink.rollInterval = 0

这个配置项目,跟我理解的不太一样:

  1. directory 属性之前多了一个 sink 前缀,我理解的 directory 和 type 一样是同一等级的属性,初看以为配置写错了呢。
  2. directory 指定的是文件目录,且必须创建,如果不存在,flume 不会自行创建,程序后台报异常,但是控制台不会输出异常。

技术运用思考


  1. 是否支持集群部署呢?多 Agnet 和多路复用流。
  2. sinkgroup 跟单个 sink 的区别是什么?

为什么会有转发的需求呢?

官方有一个转发 flow 的配置案例:

To setup a multi-tier flow, you need to have an avro/thrift sink of first hop pointing to avro/thrift source of the next hop. This will result in the first Flume agent forwarding events to the next Flume agent. For example, if you are periodically sending files (1 file per event) using avro client to a local Flume agent, then this local agent can forward it to another agent that has the mounted for storage.

周期性的发送 webserver 的日志给本地 Flume Agent,然后再由它转发给下一个能够存储的 Agent。
在这里插入图片描述
为什么要多一层转发,而不是直接配置 sink 输出为下一跳的 HDFS 的输出呢?

我想到一种可能是网络不通时,可以通过这个配置,当做转发跳板,完成不连通网段的日志转发。

selector 的 optional 配置生效步骤

一个 source 可以转发 Event 到多个 Channel 中,Flume 提供了 selector 配置转发路由,根据官方文档,总结必须转发的 Channel 和可选转发的 Channel 以及默认转发的 Channel 生效的顺序。

第一个知识点, selector.type 有两个选项,replicatingmultiplexing ,默认是 replicating

第二个知识点,按官方示例对某个 source 的 selector 配置了必须、可选、默认的 Channel :

# channel selector configuration
agent_foo.sources.avro-AppSrv-source1.selector.type = multiplexing
agent_foo.sources.avro-AppSrv-source1.selector.header = State
agent_foo.sources.avro-AppSrv-source1.selector.mapping.CA = mem-channel-1
agent_foo.sources.avro-AppSrv-source1.selector.mapping.AZ = file-channel-2
agent_foo.sources.avro-AppSrv-source1.selector.mapping.NY = mem-channel-1 file-channel-2
agent_foo.sources.avro-AppSrv-source1.selector.optional.CA = mem-channel-1 file-channel-2
agent_foo.sources.avro-AppSrv-source1.selector.mapping.AZ = file-channel-2
agent_foo.sources.avro-AppSrv-source1.selector.default = mem-channel-1

转发 Event 的流程中,匹配 CA 的事件:

  1. 先尝试转发必须映射Channel mem-channel-1 中。
  2. 如果第一步转发失败,则重试继续写入 mem-channel-1
  3. mem-channel-1 写入成功后,再尝试写入可选的 Channel file-channel-2,如果写入失败,则不会重试。
  4. optional 如果直接配置在全局事件上,此时没有匹配的 Event 会进入 default ,同时也会进入 optional 的 Channel 。

SSL 参数配置


The SSL system properties can either be passed on the command line or by setting the JAVA_OPTS environment variable in conf/flume-env.sh. (Although, using the command line is inadvisable because the commands including the passwords will be saved to the command history.)

参数设置的方式有两种,一种是 Java 的环境变量,另一种是 Flume 的环境参数,官方不建议通过命令行的方式设置 Java 环境变量,因为命令会记入操作系统的 history 文件中,包含的 SSL 的敏感信息会暴露。

但问题时,SSL 参数配置中有明文,通过配置文件也还是有暴露的风险啊。

知识点 ,SSL 配置生效的优先级,从高到低:

  1. 组件级别的参数配置。
  2. Java 系统环境变量。
  3. Flume 的环境变量。

推荐阅读
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • 电脑公司win7剪切板位置及使用方法
    本文介绍了电脑公司win7剪切板的位置和使用方法。剪切板一般位于c:\windows\system32目录,程序名为clipbrd.exe。通过在搜索栏中输入cmd打开命令提示符窗口,并输入clip /?即可调用剪贴板查看器。赶紧来试试看吧!更多精彩文章请关注本站。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
  • 修复安装win10失败并提示“磁盘布局不受UEFI固件支持”的方法
    本文介绍了修复安装win10失败并提示“磁盘布局不受UEFI固件支持”的方法。首先解释了UEFI的概念和作用,然后提供了两种解决方法。第一种方法是在bios界面中将Boot Mode设置为Legacy Support,Boot Priority设置为Legacy First,并关闭UEFI。第二种方法是使用U盘启动盘进入PE系统,运行磁盘分区工具DiskGenius,将硬盘的分区表设置为gpt格式,并留出288MB的内存。最后,通过运行界面输入命令cmd来完成设置。 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 本文介绍了在Windows系统下安装Python、setuptools、pip和virtualenv的步骤,以及安装过程中需要注意的事项。详细介绍了Python2.7.4和Python3.3.2的安装路径,以及如何使用easy_install安装setuptools。同时提醒用户在安装完setuptools后,需要继续安装pip,并注意不要将Python的目录添加到系统的环境变量中。最后,还介绍了通过下载ez_setup.py来安装setuptools的方法。 ... [详细]
  • 本文介绍了如何在Azure应用服务实例上获取.NetCore 3.0+的支持。作者分享了自己在将代码升级为使用.NET Core 3.0时遇到的问题,并提供了解决方法。文章还介绍了在部署过程中使用Kudu构建的方法,并指出了可能出现的错误。此外,还介绍了开发者应用服务计划和免费产品应用服务计划在不同地区的运行情况。最后,文章指出了当前的.NET SDK不支持目标为.NET Core 3.0的问题,并提供了解决方案。 ... [详细]
  • .NetCoreWebApi生成Swagger接口文档的使用方法
    本文介绍了使用.NetCoreWebApi生成Swagger接口文档的方法,并详细说明了Swagger的定义和功能。通过使用Swagger,可以实现接口和服务的可视化,方便测试人员进行接口测试。同时,还提供了Github链接和具体的步骤,包括创建WebApi工程、引入swagger的包、配置XML文档文件和跨域处理。通过本文,读者可以了解到如何使用Swagger生成接口文档,并加深对Swagger的理解。 ... [详细]
  • asp中如何嵌入python的简单介绍
    本文目录一览:1、如何在IIS中执行Python脚本 ... [详细]
author-avatar
右心1477
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有