使用cURL测试Flume HDFS接收器和netcat源并手动添加时间戳

时间:2016-08-19 16:01:57

标签: curl flume

我有以下水槽配置

tier1.sources.source1.type     = netcat 
tier1.sources.source1.bind     = 199.9.0.11
tier1.sources.source1.port     = 9999
tier1.sources.source1.channels = channel1 
tier1.channels.channel1.type   = memory 

tier1.sinks.sink1.type         = hdfs 
tier1.sinks.sink1.channel      = channel1 
tier1.sinks.sink1.hdfs.path  = /flume/events/%y-%m-%d/%H%M/%S 
tier1.sinks.sink1.hdfs.filePrefix = events- 

如何使用cURL 手动指定时间戳来测试?

我尝试了以下不同的变体:

curl -H 'timestamp : 1471620532' --data 'test' telnet://199.9.0.11:9999

我尝试的所有内容都会在Flume日志中出现错误:

  

Flume事件标题中的预期时间戳,但它为空

所有这些解决方案都让你设置hdfs.useLocalTimeStamp = true和/或使用拦截器。

1 个答案:

答案 0 :(得分:1)

如果来源不一定是netcat,那么我建议使用HTTP Source

在那里你可以指定任何标题,除了它可以与netcat源非常相似地使用。

对于示例配置,您可以尝试

a1.sources = r1
a1.channels = c1
a1.sources.r1.type = http
a1.sources.r1.port = 5140
a1.sources.r1.channels = c1

a1.channels = c1
a1.channels.c1.type = memory
a1.channels.c1.capacity = 10000
a1.channels.c1.transactionCapacity = 10000
a1.channels.c1.byteCapacityBufferPercentage = 20
a1.channels.c1.byteCapacity = 800000

a1.channels = c1
a1.sinks = k1
a1.sinks.k1.type = logger
a1.sinks.k1.channel = c1