大数据数据采集 Apache-Flume 笔记

1 Flume 安装部署

1.1 官网地址

1.2 安装部署

  1. 将apache-flume-1.10.1-bin.tar.gz上传到linux的/opt/software目录下

  2. 解压apache-flume-1.10.1-bin.tar.gz到/opt/module/目录下

    shell 复制代码
    tar -zxvf /opt/software/apache-flume-1.10.1-bin.tar.gz -C /opt/module/
  3. 修改apache-flume-1.10.1-bin的名称为flume

    shell 复制代码
    mv /opt/module/apache-flume-1.10.1-bin /opt/module/flume
  4. 修改conf下的log4j2.xml确定日志打印的位置,在53行后插入

    xml 复制代码
    <!--53       <AppenderRef ref="LogFile" /> -->
    
    54       <AppenderRef ref="Console" />

2 Flume 入门案例

2.1 监控端口数据官方案例

1)案例需求

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

2)实现步骤

  1. 安装netcat工具

    shell 复制代码
    yum install -y nc
  2. 判断44444端口是否被占用

    shell 复制代码
    netstat -nlp | grep 44444
  3. 在conf文件夹下创建Flume Agent配置文件nc-flume-log.conf。

    shell 复制代码
    vim nc-flume-log.conf
  4. 在nc-flume-log.conf文件中添加如下内容。

    tex 复制代码
    # agent中组件的定义(a1是agent的名字)
    a1.sources = r1
    a1.sinks = k1
    a1.channels = c1
    
    # source组件的说明
    #用来定义source的类型--Netcat TCP Source(读取网络数据)
    a1.sources.r1.type = netcat
    #监听的主机的地址
    a1.sources.r1.bind = 0.0.0.0
    #监听的端口号
    a1.sources.r1.port = 44444
    
    
    #Sink组件的说明
    #用来定义sink组件的类型-LoggerSink(用来将数据输出到控制台)
    a1.sinks.k1.type = logger
    
    # Channel组件的说明
    #定义channel组件的类型(MemoryChannel-将数组存储到内存)
    a1.channels.c1.type = memory
    #channel的容量(event的数量)
    a1.channels.c1.capacity = 1000
    #事务的容量(注意:transactionCapacity <= capacity)
    a1.channels.c1.transactionCapacity = 100
    
    # 用来说明(关联)各组件的关系
    #r1这个source对应的是哪个channel(哪个source组件读取的数据写到哪个channel中)
    a1.sources.r1.channels = c1
    #k1这个sink对应的是哪个channel(哪个sink组件读取的数组来自于哪个channel中)
    a1.sinks.k1.channel = c1
  5. 先开启flume监听端口

    第一种方式:

    shell 复制代码
    flume-ng agent -n $agent_name -c conf -f conf/flume-conf.properties.template  -Dflume.root.logger=INFO,console

    第二种方式:

    shell 复制代码
    flume-ng agent --conf conf --conf-file example.conf --name a1  -Dflume.root.logger=INFO,console

    参数说明:

    ​ --conf/-c:表示配置文件存储在conf/目录

    ​ --name/-n:表示给agent起名为a1

    ​ --conf-file/-f:flume本次启动读取的配置文件是在conf文件夹下的nc-flume-log.conf文件。

    ​ -Dflume.root.logger=INFO,console :-D表示flume运行时动态修改flume.root.logger参数属性值,并将控制台日志打印级别设置为INFO级别。日志级别包括:log、info、warn、error。日志参数已经在配置文件中修改了,不再需要重复输入。

  6. 使用netcat工具向本机的44444端口发送内容

    shell 复制代码
    nc localhost 44444
  7. 在Flume监听页面观察接收数据情况

    tex 复制代码
    Event: { headers:{} body: 31 30                                           10 }
  8. event打印的源码介绍

    LoggerSink的process方法:

    java 复制代码
    if (event != null) {
        if (logger.isInfoEnabled()) {
            logger.info("Event: " + EventHelper.dumpEvent(event, maxBytesToLog));
        }
    }

    dumpEvent方法返回值:buffer是固定长度的字符串,前端是16进制表示的字符的阿斯卡码值。

    java 复制代码
    return "{ headers:" + event.getHeaders() + " body:" + buffer + " }";
相关推荐
西格电力科技24 分钟前
面向工业用户的绿电直连架构适配技术:高可靠与高弹性的双重设计
大数据·服务器·人工智能·架构·能源
beijingliushao2 小时前
105-Spark之Standalone HA环境搭建过程
大数据·spark
五阿哥永琪2 小时前
Git 开发常用命令速查手册
大数据·git·elasticsearch
数字会议深科技2 小时前
深科技 | 高端会议室效率升级指南:无纸化会议系统的演进与价值
大数据·人工智能·会议系统·无纸化·会议系统品牌·综合型系统集成商·会议室
容智信息3 小时前
容智Report Agent智能体驱动财务自动化,从核算迈向价值创造
大数据·运维·人工智能·自然语言处理·自动化·政务
神算大模型APi--天枢6463 小时前
全栈自主可控:国产算力平台重塑大模型后端开发与部署生态
大数据·前端·人工智能·架构·硬件架构
可涵不会debug3 小时前
时序数据库选型指南:Apache IoTDB,大数据时代的时序数据管理利器
apache·时序数据库·iotdb
阿里云云原生4 小时前
AgentScope x RocketMQ:打造企业级高可靠 A2A 智能体通信基座
云原生·apache·rocketmq
每日学点SEO4 小时前
「网站新页面冲进前10名成功率下降69%」:2025 年SEO竞争格局分析
大数据·数据库·人工智能·搜索引擎·chatgpt
写代码的【黑咖啡】5 小时前
大数据建模中的模型
大数据