我们正在一个项目中解码实时消息文件,这些消息以文本文件的形式传输给我们。该文件是非结构化文本,但我们有一个规范可以对其进行解码。有不同的主题,每个主题每小时接收至少800个消息文件,平均文件大小为1 KB。要求是对所有文件到达时进行实时解码,并将解码后的数据以结构化形式存储在数据库中,该数据库必须拉到前端应用程序。收到文件后,出现在前端的ETA不到一分钟。
这是我正在考虑的建议数据流:-
消息文件(.txt)->解码->存储在数据库中-> Web应用程序
有人可以让我知道您对以下问题的回答吗?
答案 0 :(得分:0)
您的任务有一些未知的选项。
预期的总负载是什么? 10个主题x 800条消息x每小时1kb的文本不需要任何特定的内容,您可以使用Spring Boot应用程序或Go应用程序之类的简单方法。您在谈论BigData堆栈,我想您会遇到很多话题。
像Cloudera这样的大数据堆栈至少有两个用于大规模流处理的好工具:Kafka和Spark流。 Kafka是一个消息代理,可以通过复制,高可用性等支持来真正处理高负载。 Spark Streaming是一个框架,可让您即时处理数据。尤其是如果您有一些复杂的处理逻辑。
关于小文件,这实际上取决于您的情况。为什么以及如何需要存储它们?
您不能仅将此文件存储在HDFS中,而不必将其解码 HBase(或其他任何数据库)中的数据。 HBase会处理 文件和区域本身。
如果要将此未解码文件存储为某种原始数据 主机集可以将文件放在一些临时存储中,紧凑 将多个文件合并成一个大文件,然后将大文件写入HDFS。有一个 Kafka,Spark Streaming或其他工具可以做很多选择 相似的框架。
此外,还有许多不同的流框架,例如Apache Storm,Apache Flink,Apache Beam或Kafka Streams。他们每个人都有自己的优点和缺点。