(二十一)大数据实战——Flume数据采集之复制和多路复用案例实战

前言

本节内容我们完成Flume数据采集的一个多路复用案例,使用三台服务器,一台服务器负责采集本地日志数据,通过使用Replicating ChannelSelector选择器,将采集到的数据分发到另外俩台服务器,一台服务器将数据存储到hdfs,另外一台服务器将数据存储在本机,使用Avro的方式完成flume之间采集数据的传输。整体架构如下:

正文

①在hadoop101服务器的/opt/module/apache-flume-1.9.0/job目录下创建job-file-flume-avro.conf配置文件,用于监控hive日志并传输到avro sink

  • job-file-flume-avro.conf配置文件

    Name the components on this agent

    a1.sources = r1
    a1.sinks = k1 k2
    a1.channels = c1 c2

    将数据流复制给所有 channel

    a1.sources.r1.selector.type = replicating

    Describe/configure the source

    a1.sources.r1.type = exec
    a1.sources.r1.command = tail -F /tmp/hadoop/hive.log
    a1.sources.r1.shell = /bin/bash -c

    Describe the sink

    sink 端的 avro 是一个数据发送者

    a1.sinks.k1.type = avro
    a1.sinks.k1.hostname = hadoop102
    a1.sinks.k1.port = 4141
    a1.sinks.k2.type = avro
    a1.sinks.k2.hostname = hadoop103
    a1.sinks.k2.port = 4142

    Describe the channel

    a1.channels.c1.type = memory
    a1.channels.c1.capacity = 1000
    a1.channels.c1.transactionCapacity = 100
    a1.channels.c2.type = memory
    a1.channels.c2.capacity = 1000
    a1.channels.c2.transactionCapacity = 100

    Bind the source and sink to the channel

    a1.sources.r1.channels = c1 c2
    a1.sinks.k1.channel = c1
    a1.sinks.k2.channel = c2

②在hadoop102服务器的/opt/module/apache-flume-1.9.0/job目录下创建job-avro-flume-hdfs.conf配置文件,将监控数据传输到hadoop的hdfs系统

  • job-avro-flume-hdfs.conf配置文件

    Name the components on this agent

    a2.sources = r1
    a2.sinks = k1
    a2.channels = c1

    Describe/configure the source

    source 端的 avro 是一个数据接收服务

    a2.sources.r1.type = avro
    a2.sources.r1.bind = hadoop102
    a2.sources.r1.port = 4141

    Describe the sink

    a2.sinks.k1.type = hdfs
    a2.sinks.k1.hdfs.path = hdfs://hadoop101:8020/flume2/%Y%m%d/%H
    #上传文件的前缀
    a2.sinks.k1.hdfs.filePrefix = flume2-
    #是否按照时间滚动文件夹
    a2.sinks.k1.hdfs.round = true
    #多少时间单位创建一个新的文件夹
    a2.sinks.k1.hdfs.roundValue = 1
    #重新定义时间单位
    a2.sinks.k1.hdfs.roundUnit = hour
    #是否使用本地时间戳
    a2.sinks.k1.hdfs.useLocalTimeStamp = true
    #积攒多少个 Event 才 flush 到 HDFS 一次
    a2.sinks.k1.hdfs.batchSize = 100
    #设置文件类型,可支持压缩
    a2.sinks.k1.hdfs.fileType = DataStream
    #多久生成一个新的文件
    a2.sinks.k1.hdfs.rollInterval = 30
    #设置每个文件的滚动大小大概是 128M
    a2.sinks.k1.hdfs.rollSize = 134217700
    #文件的滚动与 Event 数量无关
    a2.sinks.k1.hdfs.rollCount = 0

    Describe the channel

    a2.channels.c1.type = memory
    a2.channels.c1.capacity = 1000
    a2.channels.c1.transactionCapacity = 100

    Bind the source and sink to the channel

    a2.sources.r1.channels = c1
    a2.sinks.k1.channel = c1

③在hadoop103服务器的/opt/module/apache-flume-1.9.0/job目录下创建job-avro-flume-dir.conf配置文件,将监控数据传输到/opt/module/apache-flume-1.9.0/flume3目录下

  • job-avro-flume-dir.conf配置文件

    Name the components on this agent

    a3.sources = r1
    a3.sinks = k1
    a3.channels = c2

    Describe/configure the source

    a3.sources.r1.type = avro
    a3.sources.r1.bind = hadoop103
    a3.sources.r1.port = 4142

    Describe the sink

    a3.sinks.k1.type = file_roll
    a3.sinks.k1.sink.directory = /opt/module/apache-flume-1.9.0/flume3

    Describe the channel

    a3.channels.c2.type = memory
    a3.channels.c2.capacity = 1000
    a3.channels.c2.transactionCapacity = 100

    Bind the source and sink to the channel

    a3.sources.r1.channels = c2
    a3.sinks.k1.channel = c2

  • 创建数据存储目录/opt/module/apache-flume-1.9.0/flume3

④启动hadoop集群

⑤启动hadoop102上的flume任务job-avro-flume-hdfs.conf

  • 命令:

    bin/flume-ng agent -c conf/ -n a2 -f job/job-avro-flume-hdfs.conf -Dflume.root.logger=INFO,console

⑥启动hadoop103上的flume任务job-avro-flume-dir.conf

  • 命令:

    bin/flume-ng agent -c conf/ -n a3 -f job/job-avro-flume-dir.conf -Dflume.root.logger=INFO,console

⑦启动hadoop101上的flume任务job-file-flume-avro.conf

  • 命令:

    bin/flume-ng agent -c conf/ -n a1 -f job/job-file-flume-avro.conf -Dflume.root.logger=INFO,console

⑧启动hive

⑨查看监控结果

  • 查看hdfs
  • 查看存储目录/opt/module/apache-flume-1.9.0/flume3下的文件

结语

至此,关于Flume数据采集之复制和多路复用案例实战到这里就结束了,我们下期见。。。。。。

相关推荐
2601_9630162613 分钟前
统一消息与事件调用:如何用微信接口把微信自动化做成稳健中台?
大数据·运维·人工智能·微信·自动化
ljs64827395136 分钟前
VMware 中部署 HDFS 集群环境(Hadoop 3.4.3)完整指南
大数据·hadoop·hdfs
雪碧聊技术9 小时前
Badge 应用场景与落地实践指南
大数据·人工智能
望江东浪10 小时前
我的 Claude Code 效率工具全套配置分享
大数据·elasticsearch·搜索引擎
chaoyuanl11 小时前
现有游乐设施 XR 数字化升级改造方案
大数据·科技·3d·xr·娱乐
LL3344556711 小时前
创业自动化平台怎么选
大数据·人工智能
珠海西格电力12 小时前
云边端协同架构:零碳园区管理系统的技术底座
大数据·运维·人工智能·算法·架构·能源
cc57250265313 小时前
大数据专业是不是热门专业
大数据
汇策研习社13 小时前
StdDev标准差指标深度解析:量化市场波动的核心工具
大数据·经验分享·金融·区块链·fastbull
大大大大晴天14 小时前
Hudi技术内幕: Concurrency Control原理与实践
大数据