我使用Kafka进行消息队列/处理 . 我的问题是性能/最佳实践 . 我会做自己的性能测试,但也许有人已经有了成果/经验 .
数据是Kafka(0.10)主题中的原始数据,我想将其结构化为ES和HDFS .
现在我看到两种可能性:
-
Logstash(Kafka输入插件,grok过滤器(解析),ES / webhdfs输出插件)
-
Kafka Streams(解析),Kafka Connect(ES sink,HDFS sink)
没有任何测试,我会说第二种选择更好/更清洁,更可靠?
1 回答
Logstash将数据导入Elasticsearch的“最佳实践” . 但是,WebHDFS不具备作为Kafka Connect插件一部分的Java API的原始性能 .
Grok可以在Kafka Streams过程中完成,因此您可以在任一位置完成解析 .
如果您使用Elastic订阅,那么他们想要销售Logstash . Confluent想要出售Kafka Streams Kafka Connect .
Avro似乎是数据传输的最佳媒介,Schema Registry是一种流行的方式 . IIUC,Logstash与Schema Registry或Avro不兼容,并且更喜欢JSON .
在Hadoop环境中,我将提供Apache Nifi或Streamsets的中间选项 .
最后,它实际上取决于您的优先级,以及您(以及您的团队)对这些工具的支持程度 .