flume环境部署和配置详解及案例大全

ZeroTeam_麒麟 ZeroTeam_麒麟     2023-01-20     157

关键词:

flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力 。

 一、什么是Flume?
  flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用。Flume 初始的发行版本目前被统称为 Flume OG(original generation),属于 cloudera。但随着 FLume 功能的扩展,Flume OG 代码工程臃肿、核心组件设计不合理、核心配置不标准等缺点暴露出来,尤其是在 Flume OG 的最后一个发行版本 0.94.0 中,日志传输不稳定的现象尤为严重,为了解决这些问题,2011 年 10 月 22 号,cloudera 完成了 Flume-728,对 Flume 进行了里程碑式的改动:重构核心组件、核心配置以及代码架构,重构后的版本统称为 Flume NG(next generation);改动的另一原因是将 Flume 纳入 apache 旗下,cloudera Flume 改名为 Apache Flume。
 
flume的特点:
  flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力 。
  flume的数据流由事件(Event)贯穿始终。事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。你可以把Channel看作是一个缓冲区,它将保存事件直到Sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source。
 
flume的可靠性 
  当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。),Store on failure(这也是scribe采用的策略,当数据接收方crash时,将数据写到本地,待恢复后,继续发送),Besteffort(数据发送到接收方后,不会进行确认)。
 
flume的可恢复性:
  还是靠Channel。推荐使用FileChannel,事件持久化在本地文件系统里(性能较差)。 
 
  flume的一些核心概念:
Agent使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。
Client生产数据,运行在一个独立的线程。
Source从Client收集数据,传递给Channel。
Sink从Channel收集数据,运行在一个独立线程。
Channel连接 sources 和 sinks ,这个有点像一个队列。
Events可以是日志记录、 avro 对象等。
 
  Flume以agent为最小的独立运行单位。一个agent就是一个JVM。单agent由Source、Sink和Channel三大组件构成,如下图:

  值得注意的是,Flume提供了大量内置的Source、Channel和Sink类型。不同类型的Source,Channel和Sink可以自由组合。组合方式基于用户设置的配置文件,非常灵活。比如:Channel可以把事件暂存在内存里,也可以持久化到本地硬盘上。Sink可以把日志写入HDFS, HBase,甚至是另外一个Source等等。Flume支持用户建立多级流,也就是说,多个agent可以协同工作,并且支持Fan-in、Fan-out、Contextual Routing、Backup Routes,这也正是NB之处。如下图所示:

  二、flume的官方网站在哪里?
  http://flume.apache.org/

  三、在哪里下载?

  http://www.apache.org/dyn/closer.cgi/flume/1.5.0/apache-flume-1.5.0-bin.tar.gz

  四、如何安装?
    1)将下载的flume包,解压到/home/hadoop目录中,你就已经完成了50%:)简单吧

    2)修改 flume-env.sh 配置文件,主要是JAVA_HOME变量设置

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 root@m1: /home/hadoop/flume-1 .5.0-bin # cp conf/flume-env.sh.template conf/flume-env.sh root@m1: /home/hadoop/flume-1 .5.0-bin # vi conf/flume-env.sh # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # #   http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License.    # If this file is placed at FLUME_CONF_DIR/flume-env.sh, it will be sourced # during Flume startup.    # Enviroment variables can be set here.    JAVA_HOME= /usr/lib/jvm/java-7-oracle    # Give Flume more memory and pre-allocate, enable remote monitoring via JMX #JAVA_OPTS="-Xms100m -Xmx200m -Dcom.sun.management.jmxremote"    # Note that the Flume conf directory is always included in the classpath. #FLUME_CLASSPATH=""

    3)验证是否安装成功

?
1 2 3 4 5 6 7 root@m1: /home/hadoop # /home/hadoop/flume-1.5.0-bin/bin/flume-ng version Flume 1.5.0 Source code repository: https: //git-wip-us .apache.org /repos/asf/flume .git Revision: 8633220df808c4cd0c13d1cf0320454a94f1ea97 Compiled by hshreedharan on Wed May 7 14:49:18 PDT 2014 From source with checksum a01fe726e4380ba0c9f7a7d222db961f root@m1: /home/hadoop #

    出现上面的信息,表示安装成功了
 
 
  五、flume的案例
    1)案例1:Avro
    Avro可以发送一个给定的文件给Flume,Avro 源使用AVRO RPC机制。
      a)创建agent配置文件

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 root@m1: /home/hadoop #vi /home/hadoop/flume-1.5.0-bin/conf/avro.conf    a1.sources = r1 a1.sinks = k1 a1.channels = c1    # Describe/configure the source 查看详情

ansible自动化运维详解ansible的安装部署参数使用清单管理配置文件参数及用户级ansible操作环境构建(代码片段)

...参数使用、清单管理、配置文件参数及用户级ansible操作环境构建一、ansible的安装部署1.1、ansible简介1.2、实验环境1.3、安装部署ansible二、ansible的基本信息和参数使用2.1、ansible的基本信息2.2、ansible的参数使用三、ansible的清单管... 查看详情

自动化运维工具ansible——playbook剧本详解及简易案例(代码片段)

...。简单来说,playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一个适合部署复杂应用程序的基础。Playbook可以定制配置,可以按照指定的操作步骤有序执行,支持同步和异步方式。值得... 查看详情

flume的配置详解

...head+bodyflume安装:================1、解压2、符号链接3、配置环境变量并使其生效4、修改配置文件1)重命名flume-env.ps1.template为flume-env.ps12)重命名flume-env.sh.template为flume-env.sh3)修改flume-env.sh,配置jdk目录,添加exportJAVA_HOME=/soft/jdk5、flume... 查看详情

flume快速入门及常用案例整理(代码片段)

flume快速入门及常用案例整理flume概述1.1flume定义flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,flume基于流式架构,灵活简单Flume最主要的作用就是,实时读取服务器... 查看详情

flume数据采集之常见集群配置案例(代码片段)

...urce结构说明结构图如下:说明如下:即可以把我们的Agent部署在不同的节点上,上面是两个Agent的情况。其中Agentfoo可以部署在日志产生的节点上,比如,可以是我们web服务器例如tomcat或者nginx的节点上,foo的source 查看详情

flume的配置详解

Flume:=====================Flume是一种分布式的、可靠的、可用的服务,可以有效地收集、聚合和移动大量的日志数据。它有一个基于流数据的简单而灵活的体系结构。它具有健壮性和容错能力,具有可调的可靠性机制和许多故障转... 查看详情

rabbitmq部署及配置详解(集群部署)

RabbitMQ集群是一个或多个节点,每个节点共享用户、虚拟主机、队列、交换、绑定、运行时参数和其他分布式状态。一、RabbitMQ集群可以通过多种方式形成:通过在配置文件中列出群集节点以声明方式以声明方式使用基于D... 查看详情

flume环境搭建_五种案例

 Flume环境搭建_五种案例http://flume.apache.org/FlumeUserGuide.htmlAsimpleexampleHere,wegiveanexampleconfigurationfile,describingasingle-nodeFlumedeployment.Thisconfigurationletsausergenerateeventsandsubs 查看详情

rabbitmq部署及配置详解(单机)

一、RabbitMQ核心概念1.生产者和消费者Producer:消息的生产者,用于发布消息;Consumer:消息的消费者,用于从队列中获取消息.消费者只需关注队列即可,不需要关注交换机和路由键。消费者可以通过basicConsume(订阅模式可... 查看详情

springboot2整合nacos组件,环境搭建和入门案例详解(代码片段)

摘自:https://www.cnblogs.com/cicada-smile/p/12190192.html 本文源码:GitHub·点这里 || GitEE·点这里一、Nacos基础简介1、概念简介Nacos是构建以“服务”为中心的现代应用架构,如微服务范式、云原生范式等服务基... 查看详情

openstackpike版基本环境部署续案例架构

续案例架构(1)环境准备工作:按照以下规划配置各主机IP地址及主机名称#controller10.0.0.11      controller#compute110.0.0.31      compute1#block110.0.0.41   &nb 查看详情

unity开发hololens2—环境配置和官方案例发布并部署到设备上

...使用的Unity2018.4.26f1+Hololens2+VS2019设备其实大部分的环境配置的问题和发布官方已经给出了详细的说明,首先是安装工具,然后是.初始化项目并部署第一个应用程序,最后是使用VisualStudio部署到设备上。尽管࿰... 查看详情

flume原理及代码实现

...时数据收集工具,hadoop的生态圈之一,主要用来在分布式环境下各服务器节点做数据收集,然后汇总到统一的数据存储平台,flume支持多种部署 查看详情

flume安装部署

...me-1.5.0-bin文件中cp-riapache-flume-1.5.0-src/*apache-flume-1.5.0-bin2.3环境变量设置vim/root/.bash_profileJDK环境变量:Flume环境变量:source/root/.bash_profile2.4配置文件设置2.4.1flume-env.sh修改flume-env.sh配置文件,主要是JAVA_HOME变量设置1)对flume-env.sh进行... 查看详情

ha高可用+hive+hbase+sqoop+kafka+flume+spark安装部署(代码片段)

...部署Hbase安装部署sqoop安装部署解压安装包修改配置文件环境变量 sqoop-env.sh拷贝JDBC驱动测试Sqoop是否能够成功连接数据库kafka安装部署解压安装包 环境变量配置文件创建logs文件夹zookeeper.propertiesserver.properties​启动集群验证关闭... 查看详情

flume-1.8.0_部署与常用案例(代码片段)

 该文章是基于Hadoop2.7.6_01_部署进行的 Flume官方文档:FlumeUserGuide常见问题:记flume部署过程中遇到的问题以及解决方法(持续更新) 1.前言      在一个完整的大数据处理系统中,除了hdfs+mapreduce+h... 查看详情

flume的安装及使用(代码片段)

...1、上传至虚拟机,并解压2、重命名目录,并配置环境变量3、查看flume版本4、测试flume5、flume的使用Flume的安装1、上传至虚拟机,并解压tar-zxvfapache-flume-1.9.0-bin.tar.gz-C/usr/local/soft/在环境变量中增加如下命令& 查看详情