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

时间:2019-03-26 13:48:08

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

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

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

消息文件(.txt)->解码->存储在数据库中-> Web应用程序

有人可以让我知道您对以下问题的回答吗?

  1. 我可以使用任何流媒体工具/技术实时处理消息文件吗?
  2. 是否可以使用Cloudera这样的大数据堆栈来实时处理这些文件?由于每个文件的大小为1KB,这会不会影响HDFS中“名称”节点的存储和性能?我指的是小文件大数据问题
  3. 如果我不能使用大数据,是否可以想到一种替代处理策略来实现此ETA?

1 个答案:

答案 0 :(得分:0)

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

预期的总负载是什么? 10个主题x 800条消息x每小时1kb的文本不需要任何特定的内容,您可以使用Spring Boot应用程序或Go应用程序之类的简单方法。您在谈论BigData堆栈,我想您会遇到很多话题。

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

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

  1. 您不能仅将此文件存储在HDFS中,而不必将其解码 HBase(或其他任何数据库)中的数据。 HBase会处理 文件和区域本身。

  2. 如果要将此未解码文件存储为某种原始数据 主机集可以将文件放在一些临时存储中,紧凑 将多个文件合并成一个大文件,然后将大文件写入HDFS。有一个 Kafka,Spark Streaming或其他工具可以做很多选择 相似的框架。

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