【问题标题】:Tech Stack for Processing small Message Files处理小消息文件的技术栈
【发布时间】:2019-08-16 22:20:02
【问题描述】:

我们正在一个项目中解码以文本文件形式传输给我们的实时消息文件。该文件是一个非结构化文本,但我们有一个规范来解码它。有不同的主题,每个主题每小时至少收到 800 个消息文件,平均文件大小为 1 KB。要求是在所有文件到达时实时解码所有文件,并将解码后的数据以结构化形式存储在数据库中,这些数据必须被拉到前端应用程序中。收到文件后,出现在前端的 ETA 不到一分钟。

这是我正在考虑的建议数据流:-

Message Files(.txt) --> 解码 --> 存储在 DB --> Web App

有人可以告诉我您对以下问题的回答吗?

  1. 我可以使用任何流媒体工具/技术来实时处理消息文件吗?
  2. 是否可以使用像 Cloudera 这样的 Big Data Stack 来实时处理这些文件?由于每个文件的大小为1KB,在HDFS中会不会影响Name node的存储和性能?我指的是小文件大数据问题
  3. 如果我不能使用大数据,有没有我能想到的替代处理策略来实现这个 ETA?

【问题讨论】:

  • 您好@AngiSen 我对您的项目有一些疑问:1)您希望在收到每个文件后应用什么样的流程?在开始处理之前拥有完整的文件内容是先决条件还是可以按行完成?您的环境已经在使用哪些数据库/存储系统?
  • 您好 Alex,1) 我想使用规范解码每个文件并从中生成属性我无法逐行读取它们,因为它们是非结构化文本并且必须处理文件作为一个整体。此外,在某些情况下,我必须拼接多个文件(页面)以使它们成为一个文件并将其发送以进行进一步解码。 2)我现在没有任何数据库,但是一旦我解码每个文件,我会得到一个结构化的模式来将它存储在一些数据库中,比如 SQL Server 或 Hive。
  • OK @Angi,如果我理解得很好,你有 2 种文件类型 FT1: big filesFT2: chunks of text 你想要的第二个在应用某种处理后转换为 FT1。对吗?
  • 是的。即使将它们拼接在一起,我的文件大小也没有超过 1 MB。我想对这两个文件应用相同类型的解码处理。唯一的问题是对于某些文件,我必须阅读它们并确定它是否还有其他页面,然后等到收到文件的所有页面来缝合它们。对于某些人来说,这是直接的,因为它们只是一页文件。

标签: apache-spark hdfs bigdata cloudera real-time-data


【解决方案1】:

你的任务有一些未知的选项。

预计的总负载是多少? 10 个主题 x 800 条消息 x 1kb 的文本每小时不需要任何特定的东西,您可以使用简单的东西,例如 Spring Boot 应用程序或 Go 应用程序。你说的是大数据堆栈,我假设你会有很多主题。

像 Cloudera 这样的大数据堆栈至少有两个用于大规模流处理的好工具:Kafka 和 Spark Streaming。 Kafka 是一个消息代理,可以通过支持复制、高可用性等来处理真正的高负载。 Spark Streaming 是一个允许您动态处理数据的框架。特别是如果您有一些复杂的处理逻辑。

关于小文件,这真的取决于你的情况。为什么以及如何存储它们?

  1. 您可以不将此文件存储在 HDFS 中并将已解码的文件 HBase 中的数据(或其他数据库,无论你想要什么)。 HBase 将处理 文件和区域本身。

  2. 如果您想将此未解码的文件存储为某种原始数据 master set 你可以把一个文件放在一些临时存储中,紧凑 将几个文件放入一个大文件并将大文件写入 HDFS。有一个 使用 Kafka、Spark Streaming 或其他方法可以有很多选择 类似的框架。

此外,还有许多不同的流式传输框架,例如 Apache Storm、Apache Flink、Apache Beam 或 Kafka Streams。他们每个人都有自己的优点和缺点。

【讨论】:

  • 感谢 Serge 的回复。我所有的文件都必须并行解码,不应该作为流传递。我无法将它们合并为一个大文件,因为每个文件都是原子解码的。此外,我可能会收到需要拼接在一起的不同文件中的部分文件。当文件进入我们的环境时,所有这些事情都应该实时发生。我不确定 Kafka 或其他流媒体工具是否支持这一点,因为这是一个完整的文件传递。我可以使用 Python 实现对大量文件的实时解码吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-11
  • 1970-01-01
相关资源
最近更新 更多