• Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析


    章节内容

    上一节我们完成了内容:

    • Flume 启动测试
    • Flume Conf编写
    • Flume 测试发送和接收数据

    背景介绍

    这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。
    之前已经在 VM 虚拟机上搭建过一次,但是没留下笔记,这次趁着前几天薅羊毛的3台机器,赶紧尝试在公网上搭建体验一下。

    • 2C4G 编号 h121
    • 2C4G 编号 h122
    • 2C2G 编号 h123

    在这里插入图片描述

    文档推荐

    除了官方文档以外,这里有一个写的很好的中文文档:
    https://flume.liyifeng.org/

    环境准备

    要将数据写入到 HDFS 中,我们需要一些支持库来完成。
    (这些支持库基本都在Hadoop的支持库中,没有的话,大家可以到Maven仓库搜索下载补充一下)

    cd $HADOOP_HOME/share/hadoop/httpfs/tomcat/webapps/webhdfs/WEB-INF/lib
    
    • commons-configuration-1.6.jar
    • commons-io-2.4.jar
    • hadoop-auth-2.9.0.jar
    • hadoop-common-2.9.0.jar
    • hadoop-hdfs-2.9.0.jar
    • htrace-core4-4.1.0-incubating.jar

    你需要把这些Jar包都拷贝到 $FLUME_HOME/lib 文件夹下:

    cd $FLUME_HOME/lib
    ls
    

    在这里插入图片描述

    配置文件

    cd 
    vim flume-exec-hdfs.conf
    

    编写如下的内容:

    # 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 /tmp/root/hive.log
    # Use a channel which buffers events in memory
    a2.channels.c2.type = memory
    a2.channels.c2.capacity = 10000
    a2.channels.c2.transactionCapacity = 500
    
    # Describe the sink
    a2.sinks.k2.type = hdfs
    # 这里注意修改为服务器的IP!!!
    # 注意是 HDFS 的,别写错了,具体看 Hadoop 的 core-site.xml fs.defaultFS
    a2.sinks.k2.hdfs.path = hdfs://h121.wzk.icu:9000/flume/%Y%m%d/%H%M
    # 上传文件的前缀
    a2.sinks.k2.hdfs.filePrefix = logs-
    # 是否使用本地时间戳
    a2.sinks.k2.hdfs.useLocalTimeStamp = true
    # 积攒500个Event才flush到HDFS一次
    a2.sinks.k2.hdfs.batchSize = 500
    # 设置文件类型,支持压缩。DataStream没启用压缩
    a2.sinks.k2.hdfs.fileType = DataStream
    
    # 1分钟滚动一次
    a2.sinks.k2.hdfs.rollInterval = 60
    # 128M滚动一次
    a2.sinks.k2.hdfs.rollSize = 134217700
    # 文件的滚动与Event数量无关
    a2.sinks.k2.hdfs.rollCount = 0
    
    # 最小冗余数
    a2.sinks.k2.hdfs.minBlockReplicas = 1
    # Bind the source and sink to the channel
    a2.sources.r2.channels = c2
    a2.sinks.k2.channel = c2
    

    在这里插入图片描述

    启动Agent

    $FLUME_HOME/bin/flume-ng agent --name a2 \
    --conf-file flume-exec-hdfs.conf \
    -Dflume.root.logger=INFO,console
    

    在这里插入图片描述
    如果你启动一切顺利的话,你可以看到如下的内容:
    在这里插入图片描述

    测试效果

    启动集群

    start-dfs.sh
    start-yarn.sh
    

    启动Hive

    hive -e "show databases;"
    

    在这里插入图片描述

    查看日志

    可以看到 Flume 上有了输出
    在这里插入图片描述

    查看HDFS

    观察HDFS,发现数据已经写入了:
    在这里插入图片描述

  • 相关阅读:
    Docker基础-cgroup
    微服务--Gatway:网关
    LeetCode1005. K 次取反后最大化的数组和
    深度学习中的正则化——L1、L2 和 Dropout
    软件工程 第一次随堂练习
    [附源码]java毕业设计学校缴费系统
    基于Spring Boot应用Java的Stream流API
    android的camera学习(2)——底层驱动分析
    ZMQ/ZeroMQ的三种消息模式
    模型融合之Stacking and Blending
  • 原文地址:https://blog.csdn.net/w776341482/article/details/140286984