根据这里的Flume文件flume源使用外部源(如web服务器)传递给它的事件。外部源以目标flume源识别的格式向flume发送事件。例如,avro flume源可用于接收来自avro客户端或流中其他flume代理(从avro接收器发送事件)的avro事件。为什么flume源需要识别或理解消息的格式?它所做的只是将消息转发到其中一个通道。
n3h0vuf21#
据我所知,flume将传输数据封装在由报头和有效负载(传输数据)组成的事件包中。根据文件:flume事件被定义为具有字节负载和可选字符串属性集的数据流单元。就在你的文件引用之前。指定的格式是事件包的格式,而不是数据的格式。假设你有一个代理人:
plain_to_avro_translator.sources = plain-source avro-source plain_to_avro_translator.sinks = avro-sink local-file-sink plain_to_avro_translator.channels = mem-channel1 mem-channel2 plain_to_avro_translator.sources.plain-source.channels = mem-channel1 plain_to_avro_translator.sources.plain-source.type = exec plain_to_avro_translator.sources.plain-source.restart = true plain_to_avro_translator.sources.plain-source.restartThrottle = 40000 plain_to_avro_translator.sources.plain-source.command = cat /home/user/data.log plain_to_avro_translator.sinks.avro-sink.channel = mem-channel1 plain_to_avro_translator.sinks.avro-sink.type = thrift plain_to_avro_translator.sinks.avro-sink.hostname = 192.168.200.43 plain_to_avro_translator.sinks.avro-sink.port = 6000 plain_to_avro_translator.channels.mem-channel1.type = memory plain_to_avro_translator.channels.mem-channel1.capacity = 100 plain_to_avro_translator.channels.mem-channel1.transactionCapacity = 100 plain_to_avro_translator.sources.avro-source.channels = mem-channel2 plain_to_avro_translator.sources.avro-source.type = thrift plain_to_avro_translator.sources.avro-source.bind = 0.0.0.0 plain_to_avro_translator.sources.avro-source.port = 6000 plain_to_avro_translator.channels.mem-channel2.type = memory plain_to_avro_translator.channels.mem-channel2.capacity = 100 plain_to_avro_translator.channels.mem-channel2.transactionCapacity = 100 plain_to_avro_translator.sinks.local-file-sink.channel = mem-channel2 plain_to_avro_translator.sinks.local-file-sink.type = file_roll plain_to_avro_translator.sinks.local-file-sink.sink.directory = /home/user/flume_output
这不会有任何问题,也不依赖于data.log格式(您可以编写任何需要的内容和格式)。如果您尝试将avro sink type设置为avro而不是thrift,您将从avro source获得错误,因为它需要thrift格式事件。接收器和源需要知道如何解析事件包。希望我能做好。如果我错了,请任何人纠正我。
1条答案
按热度按时间n3h0vuf21#
据我所知,flume将传输数据封装在由报头和有效负载(传输数据)组成的事件包中。根据文件:
flume事件被定义为具有字节负载和可选字符串属性集的数据流单元。
就在你的文件引用之前。
指定的格式是事件包的格式,而不是数据的格式。
假设你有一个代理人:
这不会有任何问题,也不依赖于data.log格式(您可以编写任何需要的内容和格式)。如果您尝试将avro sink type设置为avro而不是thrift,您将从avro source获得错误,因为它需要thrift格式事件。
接收器和源需要知道如何解析事件包。
希望我能做好。如果我错了,请任何人纠正我。