flume日志写入到hdfs按时间分割

exec-hdfs-agent.conf:

exec-hdfs-agent.sources = exec-source
exec-hdfs-agent.sinks = hdfs-sink
exec-hdfs-agent.channels = memory-channel

# Describe/configure the source
exec-hdfs-agent.sources.exec-source.type = exec
exec-hdfs-agent.sources.exec-source.command = tail -F ~/logs/access.log
exec-hdfs-agent.sources.exec-source.shell = /bin/bash -c

# Describe the sink
exec-hdfs-agent.sinks.hdfs-sink.type = hdfs
exec-hdfs-agent.sinks.hdfs-sink.hdfs.path = hdfs://hadoop000:8020/data/flume/events/%y-%m-%d/%H%M/%S
exec-hdfs-agent.sinks.hdfs-sink.hdfs.fileType=DataStream
exec-hdfs-agent.sinks.hdfs-sink.hdfs.writeFormat=Text
exec-hdfs-agent.sinks.hdfs-sink.hdfs.batchSize=100
exec-hdfs-agent.sinks.hdfs-sink.hdfs.filePrefix = events-
exec-hdfs-agent.sinks.hdfs-sink.hdfs.round = true
exec-hdfs-agent.sinks.hdfs-sink.hdfs.roundValue = 1
exec-hdfs-agent.sinks.hdfs-sink.hdfs.roundUnit = minute
exec-hdfs-agent.sinks.hdfs-sink.hdfs.useLocalTimeStamp = true

# Use a channel which buffers events in memory
exec-hdfs-agent.channels.memory-channel.type = memory

# Bind the source and sink to the channel
exec-hdfs-agent.sources.exec-source.channels = memory-channel
exec-hdfs-agent.sinks.hdfs-sink.channel = memory-channel

命令解释:
文件夹按/%y-%m-%d/%H%M/%S进行分割。
按一分钟进行四舍五入。

运行结果:

[hadoop@hadoop000 logs]$ hadoop fs -ls /data/flume/events/21-02-08
Found 4 items
drwxr-xr-x   - hadoop supergroup          0 2021-02-08 14:22 /data/flume/events/21-02-08/1422
drwxr-xr-x   - hadoop supergroup          0 2021-02-08 14:23 /data/flume/events/21-02-08/1423
drwxr-xr-x   - hadoop supergroup          0 2021-02-08 14:24 /data/flume/events/21-02-08/1424
drwxr-xr-x   - hadoop supergroup          0 2021-02-08 14:25 /data/flume/events/21-02-08/1425
[hadoop@hadoop000 logs]$ hadoop fs -ls /data/flume/events/21-02-08/1425/00
Found 7 items
-rw-r--r--   1 hadoop supergroup        300 2021-02-08 14:25 /data/flume/events/21-02-08/1425/00/events-.1612765500050
-rw-r--r--   1 hadoop supergroup        300 2021-02-08 14:25 /data/flume/events/21-02-08/1425/00/events-.1612765500051
-rw-r--r--   1 hadoop supergroup        300 2021-02-08 14:25 /data/flume/events/21-02-08/1425/00/events-.1612765500052
-rw-r--r--   1 hadoop supergroup        300 2021-02-08 14:25 /data/flume/events/21-02-08/1425/00/events-.1612765500053
-rw-r--r--   1 hadoop supergroup        300 2021-02-08 14:25 /data/flume/events/21-02-08/1425/00/events-.1612765500054
-rw-r--r--   1 hadoop supergroup        300 2021-02-08 14:25 /data/flume/events/21-02-08/1425/00/events-.1612765500055
-rw-r--r--   1 hadoop supergroup        270 2021-02-08 14:25 /data/flume/events/21-02-08/1425/00/events-.1612765500056
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Flume读取RabbitMQ并将数据写入HDFS,可以按照以下步骤进行: 1. 安装Flume和RabbitMQ。 2. 配置RabbitMQ,创建一个Exchange和一个Queue,将Exchange和Queue绑定在一起。 3. 在Flume的配置文件中,配置RabbitMQ Source和HDFS Sink。 示例配置文件如下: ``` agent.sources = rabbitmqSource agent.channels = memoryChannel agent.sinks = hdfsSink # 配置RabbitMQ Source agent.sources.rabbitmqSource.type = com.cloudera.flume.source.rabbitmq.RabbitMQSource agent.sources.rabbitmqSource.uri = amqp://<username>:<password>@<rabbitmq-host>:<rabbitmq-port>/ agent.sources.rabbitmqSource.exchange = <exchange-name> agent.sources.rabbitmqSource.queue = <queue-name> agent.sources.rabbitmqSource.batchSize = 100 # 配置Memory Channel agent.channels.memoryChannel.type = memory agent.channels.memoryChannel.capacity = 1000 # 配置HDFS Sink agent.sinks.hdfsSink.type = hdfs agent.sinks.hdfsSink.hdfs.path = hdfs://<namenode>:<port>/<path> agent.sinks.hdfsSink.hdfs.fileType = DataStream agent.sinks.hdfsSink.hdfs.writeFormat = Text agent.sinks.hdfsSink.hdfs.rollInterval = 300 agent.sinks.hdfsSink.hdfs.rollSize = 0 agent.sinks.hdfsSink.hdfs.rollCount = 100 agent.sinks.hdfsSink.channel = memoryChannel ``` 其中,<username>、<password>、<rabbitmq-host>、<rabbitmq-port>、<exchange-name>、<queue-name>、<namenode>、<port>和<path>需要替换为实际的值。 4. 启动Flume Agent,使用以下命令启动: ``` $FLUME_HOME/bin/flume-ng agent --conf $FLUME_HOME/conf --conf-file $FLUME_HOME/conf/flume.conf --name agent -Dflume.root.logger=INFO,console ``` 其中,$FLUME_HOME是Flume的安装目录。 5. Flume将开始从RabbitMQ读取数据并将其写入HDFS。 注意:在实际生产环境中,需要根据实际需求对Flume的配置进行优化和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值