用于处理小消息文件的技术堆栈

问题描述 投票:-1回答:1

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

这是我想到的建议数据流: -

消息文件(.txt) - >解码 - >存储在DB - > Web App中

有人能告诉我你对以下问题的回答吗?

  1. 我可以使用任何流媒体工具/技术来实时处理消息文件吗?
  2. 是否可以使用像Cloudera这样的大数据堆栈来实时处理这些文件?由于每个文件的大小为1KB,它是否会影响HDFS中Name节点的存储和性能?我指的是Small File Big Data问题
  3. 如果我不能使用大数据,我能想到实现这个ETA的替代处理策略吗?
apache-spark hdfs bigdata cloudera real-time-data
1个回答
0
投票

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

预期的总负载是多少? 10个科目x 800个消息x每小时1kb的文本不需要任何特定的东西,你可以使用简单的东西,如Spring Boot app或Go app。你在谈论BigData堆栈,我假设你会有很多主题。

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

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

  1. 您可以不将这些文件存储在HDFS中,并将已经解码的数据放入HBase(或其他数据库,无论您想要什么)。 HBase本身会处理文件和区域。
  2. 如果要将这些未解码的文件存储为某种原始数据主集,可以将文件放在一些临时存储中,将几个文件压缩成大文件,然后将大文件写入HDFS。使用Kafka,Spark Streaming或其他类似框架可以做很多选择。

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

© www.soinside.com 2019 - 2024. All rights reserved.