Flume不写入HDFS,除非被杀死

 lailin2025 发布于 2023-02-09 19:11

我按照链接设置了TwitterSource和HDFS接收器.

用于启动代理的命令:

bin/flume-ng agent -n TwitterAgent -c conf -f conf/flume-conf.properties -Dflume.root.logger=DEBUG,console

我成功地做到了这一点,但现在有一个问题.在停止水槽剂之前,输出不会被写入.一旦我杀死了我的水槽代理,就会写入HDFS.

我这里有两个问题:

1)如何阻止水槽代理 - 除了做CTRL + C之外还有什么方法.

2)我可以随时随地将水槽代理写入HDFS,而不必杀死代理.

注意:在终止进程后,写入的文件的扩展名为.tmp.这是预期的吗?

编辑:

TwitterAgent.sinks.HDFS.hdfs.rollSize = 0
TwitterAgent.sinks.HDFS.hdfs.rollCount = 10000
TwitterAgent.sinks.HDFS.hdfs.rollInterval = 600

Donald Miner.. 8

写了多少数据?我打赌它不写,因为你没有收集足够的东西来触发使用默认配置参数刷新HDFS.有许多方法可以配置HDFS接收器,以便以可预测的方式进行刷新.您可以设置它以便在许多事件(hdfs.rollCount),间隔(hdfs.rollInterval)或大小(hdfs.rollSize)上刷新.发生的事情是当你杀死代理时,它会清理当前正在做的事情并冲洗......所以基本上你是通过杀死它来强迫它.

你也可以尝试降低hdfs.batchSize.

请记住,Hadoop喜欢更大的文件.一般来说,你应该尽量避免使用大量的小文件.所以在这里经常滚动时要小心.


像你一样在前台运行它,ctrl + c或kill是阻止它的唯一真正方法.在生产中,您应该使用具有启动/停止/重启的init脚本.

1 个回答
  • 写了多少数据?我打赌它不写,因为你没有收集足够的东西来触发使用默认配置参数刷新HDFS.有许多方法可以配置HDFS接收器,以便以可预测的方式进行刷新.您可以设置它以便在许多事件(hdfs.rollCount),间隔(hdfs.rollInterval)或大小(hdfs.rollSize)上刷新.发生的事情是当你杀死代理时,它会清理当前正在做的事情并冲洗......所以基本上你是通过杀死它来强迫它.

    你也可以尝试降低hdfs.batchSize.

    请记住,Hadoop喜欢更大的文件.一般来说,你应该尽量避免使用大量的小文件.所以在这里经常滚动时要小心.


    像你一样在前台运行它,ctrl + c或kill是阻止它的唯一真正方法.在生产中,您应该使用具有启动/停止/重启的init脚本.

    2023-02-09 19:13 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有