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

Flume安装部署教程

nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd

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源消耗由外部源(如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.下载

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

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

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部署。 此配置允许用户生成事件,然后将其记录到控制台。

  此配置定义了名为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,在里面添加如下:

  然后再执行下面的命令:

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

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

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

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

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

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

6.后记

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


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 如何优化2060显卡设置以提升《Apex英雄》游戏体验
    《Apex英雄》作为一款热门的战术竞技游戏,吸引了大量玩家。本文将探讨如何通过优化GeForce RTX 2060显卡设置,确保在《Apex英雄》中获得最佳性能和流畅的游戏体验。 ... [详细]
author-avatar
白人冰娟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有