【Flume】简介、安装和入门案例(一)

Flume

简介

概述

  1. Flume本身是由Cloudera公司开发的后来贡献给了Apache的一套针对日志数据进行收集(collecting)、汇聚(aggregating)和传输(moving)的机制

  2. Flume本身提供了简单且灵活的结构来完成日志数据的传输

    在这里插入图片描述

  3. Flume有两大版本:

    1. Flume0.X:又称之为Flume-og,依赖于Zookeeper部署,需要提供的格式文件相对复杂,所以现在市面上已经不使用了
    2. Flume1.X:又称之为Flume-ng,不依赖于Zookeeper部署,需要提供的格式文件结构明确且简单,所以是现在流通的版本

基本概念

  1. Event

    1. Flume会将收集到的每一条日志封装成一个Event

    2. Event本质上就是一个json串,即Flume会将收集到的日志封装成json的形式,Event中固定的包含两部分:headers和body

      {"headers":{},"body":""}
      
  2. Agent:Flume流动模型的基本组成结构,至少包含3部分

    1. Source:从数据源采集数据 - collecting
    2. Channel:临时存储数据 - aggregating
    3. Sink:将数据写出到目的地 - moving

流动模型

  1. 单级流动

    在这里插入图片描述

  2. 多级流动:又称之为串联流动

    在这里插入图片描述

  3. 扇入流动:又称之为并联流动、聚集流动

    在这里插入图片描述

  4. 扇出流动:又称之为复用流动

    在这里插入图片描述

  5. 复杂流动:按照需求将多个流动进行组合,那么就是复杂流动

安装和入门案例

安装

  1. Flume本身是由Java开发的,所以需要服务器上安装好JDK1.8及以上版本

  2. 进入软件预安装目录,下载Flume的安装包

    # 进入预安装目录
    cd /opt/presoftware/
    # 下载或者上传Flume
    
  3. 解压

    tar -xvf apache-flume-1.11.0-bin.tar.gz -C /opt/software/
    
  4. 重命名

    cd /opt/software/
    mv apache-flume-1.11.0-bin/ flume-1.11.0
    
  5. 配置环境变量

    # 编辑文件
    vim /etc/profile.d/flumehome.sh
    # 在文件中添加
    export FLUME_HOME=/opt/software/flume-1.11.0
    export PATH=$PATH:$FLUME_HOME/bin
    # 保存退出,生效
    source /etc/profile.d/flumehome.sh
    # 测试
    flume-ng version
    
  6. 如果是官网下载的Flume安装包,那么需要注意连接池的jar包和Hadoop jar包是否冲突

    # 查看Flume的连接池jar包
    ls /opt/software/flume-1.11.0/lib/guava*
    # 如果guava的版本是11.0.2版本,和Hadoop的guava版本不一样
    rm -rf /opt/software/flume-1.11.0/lib/guava-11.0.2.jar
    # 复制Hadoop的jar过来
    cp /opt/software/hadoop-3.2.4/share/hadoop/common/lib/guava-27.0-jre.jar /opt/software/flume-1.11.0/lib/
    

控制台打印

  1. 需要注意的是,从Flume1.10.0版本开始,Flume将log4j 1.x替换为了log4j 2.x,因此导致输出数据的时候,默认是将数据写到flume.log文件中,但是学习过程中,希望数据能够直观展现(打印到控制台上),所以需要修改配置

  2. 编辑文件

    vim /opt/software/flume-1.11.0/conf/log4j2.xml
    

    在文件中添加

     <Loggers><Logger name="org.apache.flume.lifecycle" level="info"/><Logger name="org.jboss" level="WARN"/><Logger name="org.apache.avro.ipc.netty.NettyTransceiver" level="WARN"/><Logger name="org.apache.hadoop" level="INFO"/><Logger name="org.apache.hadoop.hive" level="ERROR"/><Root level="INFO"><AppenderRef ref="Console" /><AppenderRef ref="LogFile" /></Root></Loggers>
    

入门案例

  1. 在Flume中,所有的流动模型,不是通过代码来指定,而是通过格式文件来配置,所以实际过程中,往往会要求格式文件存放在统一的位置上。上课过程中,统一要求将格式文件放到/opt/software/flume-1.11.0/data

    cd /opt/software/flume-1.11.0/
    mkdir data
    cd data
    
  2. 编辑格式文件,文件名和后缀名可以自己定义

    vim basic.propertie
    

    在文件中添加

    # 给Agent起名
    # 给Source起名
    # 如果有多个Source,那么名字之间用空格隔开
    a1.sources = s1
    # 给Channel起名
    a1.channels = c1
    # 给Sink起名
    a1.sinks = k1# 配置Source
    a1.sources.s1.type = netcat
    a1.sources.s1.bind = 0.0.0.0
    a1.sources.s1.port = 8090# 配置Channel
    a1.channels.c1.type = memory
    a1.channels.c1.capacity = 1000
    a1.channels.c1.transactionCapacity = 1000# 配置Sink
    a1.sinks.k1.type = logger# 将Source和Channel绑定
    a1.sources.s1.channels = c1
    # 将Sink和Channel绑定
    a1.sinks.k1.channel = c1
    
  3. 执行

    flume-ng agent --name a1 --conf $FLUME_HOME/conf --conf-file basic.properties -Dflume.root.logger=INFO,console
    
  4. 复制窗口之后,发送TCP请求

    nc hadoop01 8090
    

参数解释

参数解释
--name或者-n指定要运行的agent的名字
--conf或者-cFlume的原生配置
--conf-file或者-f执行的文件
-D指定运行其他的参数
flume.root.logger指定日志的打印级别,级别分为INFOWARNERROR,可以指定打印位置consolelogfile

Source

Exec Source

  1. Exec Source运行指定命令,监听命令结果,将命令结果作为日志进行收集

  2. 案例:监听指定文件,如果文件中新添了数据,那么自动收集这个文件中的数据

    1. 构建空文件

      touch /opt/software/flume-1.11.0/data/a.txt
      
    2. 监听这个文件,如果这个文件中新添了数据,自动收集数据作为日志

      vim execsource.properties
      

      在文件中添加

      a1.sources = s1
      a1.channels = c1
      a1.sinks = k1# 配置Exec Source
      # Source的类型
      a1.sources.s1.type = exec
      # 监听指定的命令
      a1.sources.s1.command = tail -F /opt/software/flume-1.11.0/data/a.txt
      # 指定命令的脚本类型
      a1.sources.s1.shell = /bin/sh -ca1.channels.c1.type = memorya1.sinks.k1.type = loggera1.sources.s1.channels = c1
      a1.sinks.k1.channel = c1
      
    3. 执行命令

      flume-ng agent -n a1 -c $FLUME_HOME/conf -f execsource.properties -Dflume.root.logger=INFO,console
      
    4. 在新窗口中追加数据

      echo "testing" >> /opt/software/flume-1.11.0/data/a.txt
      echo "exec" >> /opt/software/flume-1.11.0/data/a.txt
      

rces.s1.channels = c1
a1.sinks.k1.channel = c1
```

  1. 执行命令

    flume-ng agent -n a1 -c $FLUME_HOME/conf -f execsource.properties -Dflume.root.logger=INFO,console
    
  2. 在新窗口中追加数据

    echo "testing" >> /opt/software/flume-1.11.0/data/a.txt
    echo "exec" >> /opt/software/flume-1.11.0/data/a.txt
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/2080.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML 如何实现一个带间隙的圆环

实际效果&#xff1a; ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/5e634cedded9424d96fbe6d46f34f61a.png#pic_center 代码实现&#xff1a; HTML部分&#xff1a; <svg width"500" height"500" viewBox"0 0 100 100">&…

《精准表达》让你的方案在最短的时间内打动人心 - 三余书屋 3ysw.net

精准表达&#xff1a;让你的方案在最短的时间内打动人心 大家好&#xff0c;今天我们要解读的书名为《精准表达》&#xff0c;其副标题是“让你的方案在最短的时间内打动人心”。在工作中&#xff0c;人们经常需要提交各种方案&#xff0c;例如销售人员向大客户介绍公司产品时…

idea显示maven或者gradle无法从仓库获取到项目中的jar包,jar包所在仓库无法访问解决方法,百试百灵

**idea显示maven或者gradle无法从仓库获取到项目中的jar包&#xff0c;jar包所在仓库无法访问解决方法&#xff0c;百试百灵** 直接上图&#xff0c;大概的故障问题就是&#xff1a;idea导入新的项目&#xff0c;因为项目中很多的jar需要从远程仓库下载&#xff0c;但是远程仓库…

Excel操作-vlookup函数用法大全

目录 常规查找 ​编辑​编辑多条件查找 一维表的多条件查找 二维表的多条件查找 反向查找&#xff08;从右到左&#xff09; ​编辑 匹配多列数据 法一&#xff1a; 法二&#xff1a; 模糊匹配 按指定次数重复 在合并单元格中查找 法一&#xff1a; 法二&#xff1…

Pyside6:Spacer的使用,布局中控件顶格添加

在普通的布局&#xff0c;如水平或纵向布局中&#xff0c;我们的控件都会保持中间状态&#xff0c;如下&#xff1a; 但有许多情况下 &#xff0c;我们需要将控件布局为如下界面&#xff1a; 在前端开发时&#xff0c;我们很容易通过flex来进行布局&#xff0c;修正它的居中或者…

以赛促学、生态共建 | 软通动力子公司鸿湖万联成功举办基于x86架构的OpenHarmony应用生态挑战赛

近日&#xff0c;由开放原子开源基金会、央视网、江苏省工业和信息化厅、无锡市人民政府、江苏软件产业人才发展基金会、苏州工业园区、无锡高新区等共同承办&#xff0c;鸿湖万联参与共建的“基于x86架构的OpenHarmony应用生态挑战赛”决赛路演在无锡圆满落幕。本次挑战赛历时…

倾斜摄影三维模型数据在立体裁剪应用分析

倾斜摄影三维模型数据在立体裁剪应用分析 立体裁剪是一种将三维模型应用于摄影中的技术&#xff0c;可以在摄影过程中将虚拟的三维模型与现实场景进行合成&#xff0c;从而实现逼真的视觉效果。倾斜摄影是一种通过无人机或其他飞行器进行航拍的技术&#xff0c;可以获取到大范围…

python与pycharm如何设置文件夹为源代码根目录

相信大家遇到过下面这种情况 当我们在当前项目下引入了其它项目的代码&#xff0c;这是其它项目的包的导入路径是不用于当前项目的&#xff0c;这样导致项目无法正常起来&#xff0c;但是我们又不可能一个个文件去处理&#xff0c;这时可以用下面的方式解决 pycharm直接设置 …

安全中级-初开始

一、网络基础 重要点&#xff1a;TTL值&#xff08;防环&#xff0c;linux64.Windows128 &#xff09;&#xff0c;IP数据包包头格式字节&#xff08;20&#xff09; 标识标志偏移量起到什么作用&#xff08;数据超过1500会分片&#xff09; wireshack抓包会有一个MSS&#x…

Vivado中的加法器电路结构

先给出结论&#xff0c;Vivado中的加法器是利用SLICE中的LUT和进位链实现的。 目录 一、全加器二、SLICE如何实现加法器三、实例测试1.直接使用加法器2.LUT级别 一、全加器 一位全加器的结构如下&#xff1a; 其中&#xff1a; A、B为输入的两个加数CI为进位CO为本位对高位的…

连接器电镀小课堂系列三 | 打底电镀、基体金属、润滑、电压

【摘要/前言】 电镀会影响连接器系统的寿命和质量&#xff0c;包括耐腐蚀性、导电性、可焊性&#xff0c;当然还有成本。 【小课堂背景】 这是 Samtec质量工程经理 Phil Eckert 和首席工程师 Matt Brown 讨论连接器电镀相关问题的系列第三部分&#xff0c;主题为 “打底电镀、…

C语言 | Leetcode C语言题解之第40题组合总和II

题目&#xff1a; 题解&#xff1a; int** ans; int* ansColumnSizes; int ansSize;int* sequence; int sequenceSize;int** freq; int freqSize;void dfs(int pos, int rest) {if (rest 0) {int* tmp malloc(sizeof(int) * sequenceSize);memcpy(tmp, sequence, sizeof(int…

通义灵码牵手阿里云函数计算 FC ,打造智能编码新体验

通义灵码自成功入职阿里云后&#xff0c;其智能编程助手的角色除了服务于阿里云内部几万开发者&#xff0c;如今进一步服务函数计算 FC 产品开发者。近日&#xff0c;通义灵码正式进驻函数计算 FC WebIDE&#xff0c;让使用函数计算产品的开发者在其熟悉的云端集成开发环境中&a…

ARTS Week 24

Algorithm 本周的算法题为 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; img 输入&#xff1a;list1 [1,2,4], list2 [1,3,4]输出&#xff1a;[1,1,2,3,4,4] 实现代码如下&…

springcloudgateway集成knife4j

上篇我们聊聊springboot是怎么继承knife4j的。springboot3 集成knife4j-CSDN博客 本次我们一起学习springcloudgateway集成knife4j。 环境介绍 java&#xff1a;17 SpringBoot&#xff1a;3.2.0 SpringCloud&#xff1a;2023.0.0 knife4j &#xff1a; 4.4.0 引入maven配置…

近年数一,数二难度如何,听说24是像张宇那样的题?

直接上分数&#xff01; “估分一百零几&#xff0c;平时李林130-140&#xff0c;张八110-125的样子&#xff0c;超越做的分数也是100出头。” 24学长说&#xff1a; “远离李林张八&#xff01;张四没做不评价。” “李林张八暑假前做完当作打基础即可。超越才是真题难度”…

打开新世界大门!淘宝商品关键词搜索电商API接口解密

淘宝商城作为全球最大的电子商务平台之一&#xff0c;为数以亿计的消费者提供了广泛的商品选择和购物体验。然而&#xff0c;对于开发者来说&#xff0c;如何利用淘宝平台的资源进行开发和推广是一个关键的问题。幸运的是&#xff0c;联讯数据淘宝电商API的出现为开发者打开了通…

X-Spider媒体下载工具

软件介绍 X-Spider 是一个功能丰富的推特媒体下载器&#xff0c;它不仅可以帮助用户从推特上下载图片和视频&#xff0c;还提供了一些高级的过滤功能。例如&#xff0c;用户可以通过指定日期范围来筛选需要下载的媒体文件&#xff0c;并且可以跳过已下载的重复文件&#xff0c…

【Linux】文件描述符——万字详解

目录 前言 预备知识 复习C语言的文件接口 写方式打开文件 追加方式打开文件 读方式打开文件 系统的文件接口 open close write read 文件描述符 0 & 1 & 2 理解文件描述符 文件描述符的分配规则 重定向的本质 dup2 理解Linux下一切皆文件 缓冲区…

STM32F4 Hal库中IO外部中断(EXIT)的应用

目录 概述 1 中断和事件 1.1 外部中断/事件控制器 (EXTI) 1.2 EXTI主要特性 1.3 中断和事件的差别 1.3.1 中断产生流程 1.3.2 事件产生流程 1.3.3 STM32F4的事件 2 STM32Cube配置工程 2.1 外部中断/事件介绍 2.2 配置参数 2.3 生成Project 3 STM32F4 Hal库中外部中…