首页 > 解决方案 > 将数据导入 S3 for Elasticsearch 和 RabbitMQ 的最佳方法是什么?

问题描述

在我的公司,我们开发了一些游戏,其中一些游戏的事件被发送到 Elasticsearch 和其他的 RabbitMQ。我们有一个本地 CLI,它从两者中获取数据,将消息编译成压缩 (Gzip) JSON 文件,然后另一个 CLI 将它们转换为 SQL 语句并将它们扔到本地 SQL Server 中。我们现在想扩大规模,但目前的设置很痛苦,而且离实时分析还差得很远。

我最近用 Python 构建了一个应用程序,我打算将它发布到 AWS 中的 docker 容器中。该脚本从 Elasticsearch 抓取数据,编译成小型压缩 JSONS 并发布到 S3 存储桶。从那里数据被摄取到雪花中进行分析。到目前为止,我能够很快地获取数据,并且看起来很有希望作为替代方案。

我计划用 RabbitMQ 做一些类似的事情,但我想找到一个更好的替代方案,它可以让这个摄取过程无缝地发生,并帮助我避免在 python 代码中实现各种异常调用。

  1. 我进行了一些研究,发现可能有一种方法可以将 RabbitMQ 链接到 Amazon Kinesis Firehose。我的问题是:如何将流从 RabbitMQ 发送到 Kinesis?

  2. 对于 Elasticsearch,实现这一目标的最佳方法是什么?我已经阅读了有关 S3 的 logstash 插件(https://www.elastic.co/guide/en/logstash/current/plugins-outputs-s3.html)和有关 kinesis 的 logstash 插件(https://www. elastic.co/guide/en/logstash/current/plugins-inputs-kinesis.html)。哪种方法最适合实时摄取?

标签: pythonelasticsearchrabbitmqsnowflake-cloud-data-platformamazon-kinesis-firehose

解决方案


我的回答将非常有神论,需要在现实世界中进行调整测试并适应您的用例。对于近乎实时的行为,我会使用logstash

您可以通过输出到 RabbitMQ 并使用其他管道来侦听队列并执行其他任务来创建更多可扩展的架构。

  • 从logstash ES -> Rabbit MQ
  • 从logstash RabbitMQ -> SQL
  • 从logstash RabbitMQ -> Kinesis
  • 从logstash RabbitMQ -> AWS
  • ETC....

推荐阅读