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

Flume之安装与入门案例分析

Flume入门1.Flume安装部署1.1安装地址Flume官网地址:http:flume.apache.org文档查看地址:http:flume
Flume入门

1. Flume 安装部署


1.1 安装地址


  1. Flume 官网地址:http://flume.apache.org/
  2. 文档查看地址:http://flume.apache.org/FlumeUserGuide.html
  3. 下载地址:http://archive.apache.org/dist/flume/

1.2 安装部署


  1. 解压 apache-flume-1.9.0-bin.tar.gz/opt/module/目录下,并修改名称

    tar -zxf /opt/software/apacheflume-1.9.0-bin.tar.gz -C /opt/module/
    mv /opt/module/apache-flume-1.9.0-bin /opt/module/flume-1.9.0

  2. lib 文件夹下的 guava-11.0.2.jar 删除以兼容 Hadoop 3.1.3

    rm /opt/module/flume-1.9.0/lib/guava11.0.2.jar


2. Flume 入门案例


2.1 监控端口数据官方案例


2.1.1. 案例需求


使用 Flume 监听一个端口,收集该端口数据,并打印到控制台


2.1.2. 需求分析

在这里插入图片描述

2.1.3. 实现步骤


  1. 安装 netcat 工具

    sudo yum install -y nc

  2. 判断 44444 端口是否被占用

    sudo netstat -nlp | grep 44444

  3. 创建 Flume Agent 配置文件 flume-netcat-logger.conf,并添加如下内容,参考http://flume.apache.org/FlumeUserGuide.html#a-simple-example

    # Name the components on this agent
    # a1:表示agent的名称
    # r1:表示a1的source名称
    a1.sources = r1
    # k1:表示a1的sink名称
    a1.sinks = k1
    # c1:表示a1的channel名称
    a1.channels = c1# Describe/configure the source
    # a1的输入源类型为netcat端口类型
    a1.sources.r1.type = netcat
    # a1的监听主机号
    a1.sources.r1.bind = localhost
    # a1的监听端口号
    a1.sources.r1.port = 44444# Describe the sink
    # a1的输出目的地是控制台logger类型
    a1.sinks.k1.type = logger# Use a channel which buffers events in memory
    # a1的channel类型为memory
    a1.channels.c1.type = memory
    # a1的channel总容量为1000个event
    a1.channels.c1.capacity = 1000
    # a1的channel传输是收集到100个event以后再去提交事务
    a1.channels.c1.transactionCapacity = 100# Bind the source and sink to the channel
    # 将r1与c1连接起来
    a1.sources.r1.channels = c1
    # 将c1与k1连接起来
    a1.sinks.k1.channel = c1

  4. 先开启 flume 监听端口

    // 第一种写法
    [codecat@hadoop102 flume-1.9.0]$ flume-ng agent --conf conf/ --name a1 --conf-file jobs/flume-netcat-logger.conf -Dflume.root.logger=INFO,console// 第二种写法
    [codecat@hadoop102 flume-1.9.0]$ flume-ng agent -c conf/ -n a1 -f jobs/flume-netcat-logger.conf -Dflume.root.logger=INFO,console

    • --conf/-c:表示配置文件存储在 conf/目录
    • --name/-n:表示agent 的名称
    • --conf-file/-f:flume 本次启动读取的配置文件路径
    • -Dflume.root.logger=INFO,console :-D 表示 flume 运行时动态修改 flume.root.logger参数属性值,并将控制台日志打印级别设置为 INFO 级别
      在这里插入图片描述
  5. 使用 netcat 工具向本机的 44444 端口发送内容
    在这里插入图片描述

  6. Flume 监听页面观察接收数据情况
    在这里插入图片描述


2.2 实时监控单个追加文件


2.2.1 案例需求


实时监控 Hive 日志,并上传到 HDFS 中


2.2.2 需求分析

在这里插入图片描述

2.2.3 实现步骤


  1. Flume 要想将数据输出到 HDFS,须持有 Hadoop 相关 jar 包,将下列包拷贝到/opt/module/flume-1.9.0/lib

    commons-configuration2-2.1.1.jar
    commons-io-2.5.jar
    hadoop-auth-3.1.3.jar
    hadoop-common-3.1.3.jar
    hadoop-hdfs-3.1.3.jar
    htrace-core4-4.1.0-incubating.jar

  2. 创建 flume-file-hdfs.conf 文件并添加如下内容,参考http://flume.apache.org/FlumeUserGuide.html#exec-source

    # Name the components on this agent
    a2.sources = r2
    a2.sinks = k2
    a2.channels = c2# Describe/configure the source
    a2.sources.r2.type = exec
    a2.sources.r2.command = tail -F /opt/module/hive-3.1.2/logs/hive.log# Describe the sink
    a2.sinks.k2.type = hdfs
    a2.sinks.k2.hdfs.path = hdfs://hadoop102:8020/flume/%Y%m%d/%H
    #上传文件的前缀
    a2.sinks.k2.hdfs.filePrefix = logs-
    #是否按照时间滚动文件夹
    a2.sinks.k2.hdfs.round = true
    #多少时间单位创建一个新的文件夹
    a2.sinks.k2.hdfs.roundValue = 1
    #重新定义时间单位
    a2.sinks.k2.hdfs.roundUnit = hour
    #是否使用本地时间戳
    a2.sinks.k2.hdfs.useLocalTimeStamp = true
    #积攒多少个 Event 才 flush 到 HDFS 一次
    a2.sinks.k2.hdfs.batchSize = 100
    #设置文件类型,可支持压缩
    a2.sinks.k2.hdfs.fileType = DataStream
    #多久生成一个新的文件
    a2.sinks.k2.hdfs.rollInterval = 60
    #设置每个文件的滚动大小
    a2.sinks.k2.hdfs.rollSize = 134217700
    #文件的滚动与 Event 数量无关
    a2.sinks.k2.hdfs.rollCount = 0# Use a channel which buffers events in memory
    a2.channels.c2.type = memory
    a2.channels.c2.capacity = 1000
    a2.channels.c2.transactionCapacity = 100# Bind the source and sink to the channel
    a2.sources.r2.channels = c2
    a2.sinks.k2.channel = c2

  3. 运行 Flume

    [codecat@hadoop102 flume-1.9.0]$ flume-ng agent -c conf/ -n a2 -f jobs/flume-file-hdfs.conf

  4. 开启 Hive
    在这里插入图片描述

  5. HDFS 上查看文件
    在这里插入图片描述


2.3 实时监控目录下多个新文件


2.3.1 案例需求


使用 Flume 监听整个目录的文件(不包含临时文件),并上传至 HDFS


2.3.2 需求分析

在这里插入图片描述

2.3.3 实现步骤


  1. 创建配置文件 flume-dir-hdfs.conf并添加如下内容,参考:http://flume.apache.org/FlumeUserGuide.html#spooling-directory-source

    a3.sources = r3
    a3.sinks = k3
    a3.channels = c3# Describe/configure the source
    a3.sources.r3.type = spooldir
    a3.sources.r3.spoolDir = /opt/module/flume-1.9.0/upload
    a3.sources.r3.fileSuffix = .COMPLETED
    a3.sources.r3.fileHeader = true
    #忽略所有以.tmp 结尾的文件,不上传
    a3.sources.r3.ignorePattern = ([^ ]*\.tmp)# Describe the sink
    a3.sinks.k3.type = hdfs
    a3.sinks.k3.hdfs.path = hdfs://hadoop102:8020/flume/upload/%Y%m%d/%H
    #上传文件的前缀
    a3.sinks.k3.hdfs.filePrefix = upload-
    #是否按照时间滚动文件夹
    a3.sinks.k3.hdfs.round = true
    #多少时间单位创建一个新的文件夹
    a3.sinks.k3.hdfs.roundValue = 1
    #重新定义时间单位
    a3.sinks.k3.hdfs.roundUnit = hour
    #是否使用本地时间戳
    a3.sinks.k3.hdfs.useLocalTimeStamp = true
    #积攒多少个 Event 才 flush 到 HDFS 一次
    a3.sinks.k3.hdfs.batchSize = 100
    #设置文件类型,可支持压缩
    a3.sinks.k3.hdfs.fileType = DataStream
    #多久生成一个新的文件
    a3.sinks.k3.hdfs.rollInterval = 60
    #设置每个文件的滚动大小大概是 128M
    a3.sinks.k3.hdfs.rollSize = 134217700
    #文件的滚动与 Event 数量无关
    a3.sinks.k3.hdfs.rollCount = 0# Use a channel which buffers events in memory
    a3.channels.c3.type = memory
    a3.channels.c3.capacity = 1000
    a3.channels.c3.transactionCapacity = 100# Bind the source and sink to the channel
    a3.sources.r3.channels = c3
    a3.sinks.k3.channel = c3

  2. 启动 Flume

    [codecat@hadoop102 flume-1.9.0]$ flume-ng agent -c conf/ -n a3 -f jobs/flume-dir-hdfs.conf

  3. upload 文件夹中添加文件

    • /opt/module/flume-1.9.0目录下创建 upload 文件夹

      [codecat@hadoop102 flume-1.9.0]$ mkdir upload

    • upload 文件夹中添加文件

      [codecat@hadoop102 upload]$ touch 1.txt
      [codecat@hadoop102 upload]$ touch 1.tmp
      [codecat@hadoop102 upload]$ touch 1.log

  4. 查看 HDFS 上的数据
    在这里插入图片描述

  5. 再次查询 upload 文件夹
    在这里插入图片描述


2.4 实时监控目录下的多个追加文件

Exec source 适用于监控一个实时追加的文件,但不能保证数据不丢失;Spooldir Source 能够保证数据不丢失,且能够实现断点续传,但延迟较高,不能实时监控;而 Taildir Source 既能够实现断点续传,又可以保证数据不丢失,还能够进行实时监控

2.4.1 案例需求


使用 Flume 监听整个目录的实时追加文件,并上传至 HDFS


2.4.2 需求分析

在这里插入图片描述

2.4.3 实现步骤


  1. 创建配置文件 flume-taildir-hdfs.conf 并添加如下内容,参考:http://flume.apache.org/FlumeUserGuide.html#taildir-source

    a3.sources = r3
    a3.sinks = k3
    a3.channels = c3# Describe/configure the source
    a3.sources.r3.type = TAILDIR
    a3.sources.r3.positionFile = /opt/module/flume-1.9.0/tail_dir.json
    a3.sources.r3.filegroups = f1
    a3.sources.r3.filegroups.f1 = /opt/module/flume-1.9.0/files/file.*# Describe the sink
    a3.sinks.k3.type = hdfs
    a3.sinks.k3.hdfs.path = hdfs://hadoop102:8020/flume/upload/%Y%m%d/%H
    #上传文件的前缀
    a3.sinks.k3.hdfs.filePrefix = upload-
    #是否按照时间滚动文件夹
    a3.sinks.k3.hdfs.round = true
    #多少时间单位创建一个新的文件夹
    a3.sinks.k3.hdfs.roundValue = 1
    #重新定义时间单位
    a3.sinks.k3.hdfs.roundUnit = hour
    #是否使用本地时间戳
    a3.sinks.k3.hdfs.useLocalTimeStamp = true
    #积攒多少个 Event 才 flush 到 HDFS 一次
    a3.sinks.k3.hdfs.batchSize = 100
    #设置文件类型,可支持压缩
    a3.sinks.k3.hdfs.fileType = DataStream
    #多久生成一个新的文件
    a3.sinks.k3.hdfs.rollInterval = 60
    #设置每个文件的滚动大小大概是 128M
    a3.sinks.k3.hdfs.rollSize = 134217700
    #文件的滚动与 Event 数量无关
    a3.sinks.k3.hdfs.rollCount = 0# Use a channel which buffers events in memory
    a3.channels.c3.type = memory
    a3.channels.c3.capacity = 1000
    a3.channels.c3.transactionCapacity = 100# Bind the source and sink to the channel
    a3.sources.r3.channels = c3
    a3.sinks.k3.channel = c3

  2. 启动 Flume

    [codecat@hadoop102 flume-1.9.0]$ flume-ng agent -c conf/ -n a3 -f jobs/flume-taildir-hdfs.conf

  3. files 文件夹中追加内容

    • /opt/module/flume-1.9.0 目录下创建 files文件夹

      [codecat@hadoop102 flume-1.9.0]$ mkdir files

    • files 文件夹中添加文件
      在这里插入图片描述
  4. 查看 HDFS 上的数据
    在这里插入图片描述

    在这里插入图片描述


推荐阅读
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 本文介绍了解决github无法访问和克隆项目到本地的问题。作者建议通过修改配置文件中的用户名和密码来解决访问失败的问题,并提供了详细步骤。同时,还提醒读者注意输入的用户名和密码是否正确。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
author-avatar
shadow
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有