非kerberos环境下,flume采集日志到kafka

本文介绍如何使用Flume将本地文件的日志数据实时读取并发送至Kafka主题,通过配置Flume的agent、source、channel、sink等组件实现数据的高效传输。详细展示了kafkaflume.conf配置文件的参数设定,包括Kafka的broker地址、主题名、序列化方式及压缩类型等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

kafkaflume.conf

agent.sources = s1
agent.channels = c1
agent.sinks = k1

agent.sources.s1.type=exec
agent.sources.s1.command=tail -F /usr/local/src/flume/testflume2.log
agent.sources.s1.channels=c1
agent.channels.c1.type=memory
agent.channels.c1.capacity=10000
agent.channels.c1.transactionCapacity=100

#设置Kafka接收器
#
agent.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
##设置Kafka的broker地址和端口号
agent.sinks.k1.kafka.bootstrap.servers = master:9092,node01:9092,node02:9092
##设置Kafka的Topic
agent.sinks.k1.kafka.topic = mydemo5
##设置序列化方式
#
#
agent.sinks.k1.kafka.flumeBatchSize = 20
agent.sinks.k1.kafka.producer.acks = 1
agent.sinks.k1.kafka.producer.linger.ms = 1
agent.sinks.ki.kafka.producer.compression.type = snappy

agent.sinks.k1.channel=c1

创建一个topic

kafka-topics --create --zookeeper master:2181/kafka --replication-factor 2 --partitions 3 --topic mydemo5

启动flume作为消息生产者写道kafka上

flume-ng agent -c conf -f kafkaflume.conf -n agent -Dflume.root.logger=INFO,console

消费kafka的数据

kafka-console-consumer --bootstrap-server master:9092 --topic mydemo5 --from-beginning

读取一个文件的内容写入追加到新的文件

#!/bin/bash

while read line
do
    echo $line
    sleep 0.01
    echo -e $line >> /usr/local/src/flume/testflume2.log
done < /etc/sudo-ldap.conf
### 使用FlumeKafka采集数据并写入HDFS的配置教程 #### 1. Flume简介与适用场景 Flume 是 Cloudera 提供的一个高可用、高可靠、分布式的大规模日志采集、聚合和传输系统[^1]。它能够通过自定义的数据发送方收集数据,并将这些数据传递给多种接收端,比如 HDFS 或 Kafka。 当需要将 Kafka 中的数据转存到 HDFS 时,可以通过 Flume 实现这一目标。这种方式相较于手动编写程序更加高效且易于维护。 --- #### 2. 安装与环境准备 在开始配置之前,需确保以下环境已经准备好: - **Flume 已正确安装**:下载 Flume 并解压至指定路径[^1]。 - **Hadoop 和 Java 环境配置正常**:确认 `/etc/profile.d/my_env.sh` 文件中已正确设置 `JAVA_HOME` 和 `HADOOP_HOME` 变量[^3]。 - **Kafka 集群运行状态良好**:确保 Kafka 的 broker 地址和服务正常工作。 - **依赖库加载完成**:将 Hadoop 相关 jar 包复制到 Flume 安装目录下的 lib 子目录中。 --- #### 3. 配置文件详解 以下是完整的 Flume 配置示例,用于从 Kafka 消费数据并将之写入 HDFS。 ##### 3.1 配置 Kafka Source ```properties agent.sources.kafka-source.type = org.apache.flume.source.kafka.KafkaSource agent.sources.kafka-source.zookeeperConnect = kafka_server1:2181,kafka_server2:2181,kafka_server3:2181 agent.sources.kafka-source.topic = your_topic agent.sources.kafka-source.groupId = flume-group agent.sources.kafka-source.channels = memory-channel ``` 说明: - `zookeeperConnect`: 替换为实际的 Zookeeper 连接字符串[^2]。 - `topic`: 替换为目标 Kafka 主题名称。 - `groupId`: 设置 FlumeKafka 中的消费者组 ID。 ##### 3.2 配置 Memory Channel ```properties agent.channels.memory-channel.type = memory agent.channels.memory-channel.capacity = 10000 agent.channels.memory-channel.transactionCapacity = 1000 ``` Memory Channel 是一种简单的内存队列机制,适合低延迟需求的应用场景。 ##### 3.3 配置 HDFS Sink ```properties agent.sinks.hdfs-sink.type = hdfs agent.sinks.hdfs-sink.hdfs.path = hdfs://namenode:8020/flume/kafka-data 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.hdfs.batchSize = 1000 agent.sinks.hdfs-sink.hdfs.fileType = DataStream agent.sinks.hdfs-sink.channel = memory-channel ``` 说明: - `hdfs.path`: 替换为 HDFS 上的目标存储路径。 - `rollInterval`, `rollSize`, `rollCount`: 控制文件滚动策略,分别基于时间间隔、大小限制和记录数限制[^2]。 --- #### 4. 启动 Flume Agent 保存以上配置内容到一个名为 `flume-conf.properties` 的文件中,然后启动 Flume Agent: ```bash $FLUME_HOME/bin/flume-ng agent --conf $FLUME_CONF_DIR \ --name agent_name --conf-file /path/to/flume-conf.properties -Dflume.root.logger=INFO,console ``` 其中: - `$FLUME_HOME`: Flume 安装根目录。 - `$FLUME_CONF_DIR`: Flume 配置文件所在目录。 --- #### 5. Kerberos 认证(可选) 如果 Kafka 集群启用了 Kerberos,则需要额外配置认证信息[^4]。具体步骤包括: - 创建 Keytab 文件并与 Flume 用户关联。 - 修改 Flume 配置文件以支持 JAAS 登录模块。 示例 JAAS 配置片段: ```java Client { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true keyTab="/path/to/flume.keytab" principal="flume@YOUR_REALM.COM"; }; ``` 将此内容保存为 `jaas.conf` 文件,并通过 `-Djava.security.auth.login.config=/path/to/jaas.conf` 参数传入 JVM。 --- ### 示例代码总结 完整流程涉及以下几个核心组件的协同工作: 1. Kafka Source 收集数据; 2. Memory Channel 缓冲数据; 3. HDFS Sink 将数据持久化到 HDFS。 最终效果是实现从 Kafka 到 HDFS 的无缝数据流转。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值