Flume集成logback将日志写入HDFS

本文介绍了如何配置Flume,使用Kafka作为Channel,并结合Spring Boot和logback,实现日志直接写入Flume,最终将日志数据存储到HDFS。通过Maven添加Flume依赖,更新logback配置文件,然后进行测试验证,确保Flume能正确接收并传输日志。
摘要由CSDN通过智能技术生成

Flume 配置文件(Kafka代替Flume Channel)

  • flume-test-conf.properties
# 组件命名
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# source
a1.sources.r1.type=avro
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port=44444

#指定hdfs sink
a1.sinks.k1.type = hdfs
#hdfs目录,带有时间信息
a1.sinks.k1.hdfs.path = /flume/tailout/%Y-%m-%d/%H/
#生成的hdfs文件名的前缀
a1.sinks.k1.hdfs.filePrefix = events-
#指定滚动时间,默认是30秒,设置为0表示禁用该策略
a1.sinks.k1.hdfs.rollInterval = 3600
#指定滚动大小,设置为0表示禁用该策略
a1.sinks.k1.hdfs.rollSize = 200000000
#指定滚动条数
a1.sinks.k1.hdfs.rollCount = 0
a1.sinks.k1.hdfs.batchSize = 100
a1.sinks.k1.hdfs.useLocalTimeStamp = true

#副本策略
a1.sinks.k1.hdfs.minBlockReplicas=1
#生成的文件类型,默认是Sequencefile,可用DataStream,则为普通文本
a1.sinks.k1.hdfs.fileType = DataStream

# 指定Kafka替换Channel
a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel
a1.channels.c1.kafka.bootstrap.servers = kafka:9092
a1.channels.c1.kafka.topic = flume_channel_test
a1.channels.c1.kafka.consumer.group.id = flume-consumer-against_cheating_01
a1.channels.c1.kafka.consumer.timeout.ms = 70000
a1.channels.c1.kafka.consumer.request.timeout.ms = 80000
a1.channels.c1.kafka.consumer.fetch.max.wait.ms=7000
a1.channels.c1.kafka.consumer.offset.flush.interval.ms = 50000
a1.channels.c1.kafka.consumer.session.timeout.ms = 70000
a1.channels.c1.kafka.consumer.heartbeat.interval.ms = 60000
a1.channels.c1.kafka.consumer.enable.auto.commit = false
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# 组件绑定
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

Spring Boot + logback集成Flume

Flume作为一个采集工具,它除了可以自行监控日志文件,也可以配合logback实现日志直接打印到Flume中。

  • Maven新增Flume依赖
		<dependency>
            <groupId>com.teambytes.logback</groupId>
            <artifactId>logback-flume-appender_2.10</artifactId>
            <version>0.0.9</version>
        </dependency>
  • logback配置
    springboot项目中resources文件夹下新增logback-spring.xml配置文件,内容如下
<?xml version="1.0" encoding="UTF-8"?>

<configuration>

    <appender name="consoleAppender"
              class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyy MMM dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%L- %msg%n
            </pattern>
        &
好的,我可以为您提供一些关于使用Flume从Kafka采集数据写入HDFS代理的步骤: 1. 安装Flume和Kafka: 您需要在您的机器上安装Flume和Kafka。安装过程可以参考官方文档或者网上教程。 2. 配置Flume agent: 您需要配置Flume agent来从Kafka读取数据并写入HDFS代理。以下是一个简单的示例Flume配置文件: ``` agent.sources = kafka-source agent.channels = hdfs-channel agent.sinks = hdfs-sink agent.sources.kafka-source.type = org.apache.flume.source.kafka.KafkaSource agent.sources.kafka-source.kafka.bootstrap.servers = localhost:9092 agent.sources.kafka-source.kafka.topics = my-topic agent.sources.kafka-source.batchSize = 1000 agent.sources.kafka-source.batchDurationMillis = 1000 agent.channels.hdfs-channel.type = memory agent.channels.hdfs-channel.capacity = 10000 agent.channels.hdfs-channel.transactionCapacity = 1000 agent.sinks.hdfs-sink.type = hdfs agent.sinks.hdfs-sink.hdfs.path = /path/to/hdfs agent.sinks.hdfs-sink.hdfs.filePrefix = events- agent.sinks.hdfs-sink.hdfs.fileSuffix = .log agent.sinks.hdfs-sink.hdfs.rollInterval = 3600 agent.sinks.hdfs-sink.hdfs.rollSize = 0 agent.sinks.hdfs-sink.hdfs.rollCount = 10000 agent.sinks.hdfs-sink.channel = hdfs-channel ``` 这个配置文件定义了一个名为kafka-source的source,它从名为my-topic的Kafka主题中读取数据。数据被写入一个内存通道(memory channel),并由名为hdfs-sink的sink写入HDFS代理。 3. 运行Flume agent: 在您的机器上运行Flume agent,使用以下命令: ``` $ bin/flume-ng agent -n agent -c conf -f /path/to/flume.conf ``` 其中,/path/to/flume.conf是您的Flume配置文件的路径。 以上是使用Flume从Kafka采集数据写入HDFS代理的基本步骤,您可以根据您的需求进行修改和调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

问题不太大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值