【发布时间】:2017-08-18 16:30:28
【问题描述】:
我想使用 kafka connect 和 spark 流插入到 elasticsearch 中,然后使用 kibana 可视化用于 BI 用例,请你帮我看看我不知道从哪里开始有没有使用这些技术的项目可以帮助我理解实现的逻辑会很有帮助
【问题讨论】:
标签: apache-spark elasticsearch apache-kafka logstash spark-streaming
我想使用 kafka connect 和 spark 流插入到 elasticsearch 中,然后使用 kibana 可视化用于 BI 用例,请你帮我看看我不知道从哪里开始有没有使用这些技术的项目可以帮助我理解实现的逻辑会很有帮助
【问题讨论】:
标签: apache-spark elasticsearch apache-kafka logstash spark-streaming
您尝试构建的是某种大数据管道。有很多方法可以做到这一点。一种可能的架构是:Logstash->Kafka->Spark->Elasticsearch。
可能的情况
基本上 Logstash 将日志转发到 Kafka,由 Spark Streaming 使用。该场景是通过 Logstash 从服务器收集新生成的日志,将日志发送到 Kafka,然后由 Spark 流式处理近乎实时地处理并将它们存储在 Elasticsearch 中,以便在 Kibana 上进一步可视化。
Logstash
Logstash 是一个开源的服务器端数据处理管道,可同时从多个来源获取数据,对其进行转换,然后将其发送到多个输出端。那里有很多 input plugins 用于 logstash。例如,您可以使用文件输入插件从文件中获取日志。此外,logstash 有很多 output plugins。但需要注意的是kafka output plugin。
卡夫卡
Apache Kafka 是一个分布式发布-订阅消息系统,旨在取代传统的消息代理。 Kafka 可用于多种用途:消息传递、实时网站活动跟踪、监控分布式应用程序的操作指标、来自众多服务器的日志聚合、记录和排序数据库中状态更改的事件源、分布式系统同步的提交日志数据和从故障系统中恢复数据。在我的用例中,kafka 用于日志聚合。
Spark 流式传输
这个guide 应该会引导您实施流式传输作业的第一部分。这意味着使用 spark 以流式方式从 Kafka 实时获取数据。对于第二部分(将接收到的数据发送到 Elasticsearch),您可以使用Elasticsearch support for Apache Spark。
还有一个使用 spark 流将 spark 与 Elasticsearch 链接的好例子:https://github.com/pochi/spark-streaming-kafka-sample/blob/master/src/main/scala/pochi/spark/streaming/Elastic.scala。但是由于技术的变化,您可能需要更新一些东西。
Elasticsearch - Kibana
最后一步很简单。您需要配置 Elasticsearch 和 Kibana 以相互通信。然后通过在 Kibana 上配置索引模式来加载数据,并进行可视化。有关这方面的更多信息,请参阅documentation online
【讨论】: