flume学习05---Exec Source
来源:互联网 发布:淘宝进货在哪里进 编辑:程序博客网 时间:2024/06/05 19:22
Exec Source
Exec Source在启动时运行给定的Unix命令,并期望进程在标准输出上产生连续的数据(除非属性logStdErr设置为true,否则stderr将被丢弃)。 如果进程由于任何原因退出,source也会退出,并且不会生成更多数据。 这意味着诸如cat [named pipe]
或tail -F [file]
之类的配置将产生期望的结果,其中日期可能不会 - 前两个命令产生数据流,其中后者产生单个事件并退出。
必需属性以粗体显示。
type必须是exec
command是unix命令
警告:
ExecSource和其他异步Source的问题是,source不能保证如果没有把event放到客户端知道的channel中。在这种情况下,数据将丢失。
例如,最常见的要求之一是tail -F [file]
类的用例,其中应用程序写入磁盘上的日志文件,Flume tail这个文件,将每行作为event发送。虽然这是可能的,但有一个明显的问题;如果channel填满并且Flume不能发送事件会发生什么? Flume没有办法向应用程序写入日志文件,它需要保留日志或由于某种原因事件尚未发送。如果这没有作用,您只需要知道这一点:您的应用程序不能保证在使用单向异步接口(如ExecSource)时接收到数据!
作为此警告的延伸,并且完全清楚,在使用此源时对事件传递绝对保证为零。为了获得更高的可靠性保证,请考虑Spooling Directory Source或direct integration with Flume via the SDK.。
注意:
你可以使用ExecSource从Flume 0.9x(flume og)模拟TailSource。 只需使用unix命令tail -F / full / path / to / your / file
。 参数-F在这种情况下比-f更好,因为它也将跟随文件旋转。
Example for agent named a1:
a1.sources = r1a1.channels = c1a1.sources.r1.type = execa1.sources.r1.command = tail -F /var/log/securea1.sources.r1.channels = c1
“shell”配置用于通过命令shell(例如Bash或Powershell)调用“command”。 “command”作为参数传递给shell以便执行。 这允许command使用shell中的特性,例如 wildcards, back ticks, pipes, loops, conditionals 等。在没有shell配置的情况下,command将被直接调用。 shell的通用值:'/ bin / sh -c','/ bin / ksh -c','cmd / c','powershell -Command'
等。
a1.sources.tailsource-1.type = execa1.sources.tailsource-1.shell = /bin/bash -ca1.sources.tailsource-1.command = for i in /path/*.txt; do cat $i; done
二、实现
2.1、配置文件
[root@master apache-flume-1.6.0-bin]# cat testconf/f1.propreties a1.sources = r1a1.sinks = k1a1.channels = c1# Describe/configure the source//使用exec source type属性为execa1.sources.r1.type=exec//执行的命令是tail -f /opt/abc.loga1.sources.r1.command=tail -f /opt/abc.log# Describe the sinka1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink a1.sinks.k1.topic = testflume a1.sinks.k1.brokerList = master:9092,slave1:9092,slave2:9092 a1.sinks.k1.requiredAcks = 1 a1.sinks.k1.batchSize = 20 # Use a channel which buffers events in memorya1.channels.c1.type = memorya1.channels.c1.capacity = 1000000a1.channels.c1.transactionCapacity = 10000# Bind the source and sink to the channela1.sources.r1.channels = c1a1.sinks.k1.channel = c1
2.2、在kafka启动一个消费者
./bin/kafka-console-consumer.sh--zookeeper master:3384,slave1:3384,slave2:3384--from-beginning -topic testflume
2.3、启动flume
flume-ng
bin/flume-ng agent --conf /opt/apache-flume-1.6.0-bin/conf/ --conf-file ./testconf/f1.properties --name a1 -Dflume.root.logger=INFO,console-Dorg.apache.flume.log.printconfig=true -Dorg.apache.flume.log.rawdata=true
2.4、向/opt/abc.log
中写数据,
for k in {1..10}doecho "现在插入的是第"$k"个数" >> /opt/abc.logdone
2.5、kafka消费者监听的
消费的数据正确
- flume学习05---Exec Source
- flume学习05---Avro Source
- flume学习05---Thrift Source
- flume学习05---Taildir Source
- flume学习05---Kafka Source
- flume学习05---Spooling Directory Source
- Flume学习02 — Source
- Flume学习笔记 --- Flume内置source,channel, sink介绍
- flume学习(八):自定义source
- flume学习(七):自定义source
- Flume Source
- Flume Source
- flume使用之exec source收集各端数据汇总到另外一台服务器
- Flume NG 学习笔记(四)Source配置
- flume学习(十一):如何使用Spooling Directory Source
- flume学习(十一):如何使用Spooling Directory Source
- flume学习(十一):如何使用Spooling Directory Source
- Flume 源码学习(一)Source介绍
- android中canvas.drawArc的弧度问题
- aws linux php7 to php5.6
- 密码学与网络安全笔记整理-数据完整性技术
- java编程思想学习笔记(2)--一切皆对象
- Problem R-18 Prime Number
- flume学习05---Exec Source
- 《ACM程序设计》-Problem-Z-比较英文缩写是否相同
- Storage Access Framework
- 一个2年安卓开发者的一些忠告
- Q91:真实地模拟透明材质(Realistic Transparency)(2)——Triangle Meshes
- PHP编程学习第一周
- 3、scrapy——xpath语法
- 算法导论 练习题 3.2-7
- jquery select change下拉框选项变化判断选中值