在 hadoop 中实时处理非常大的数据集

Processing very large dataset in real time in hadoop

我正在尝试了解如何构建大数据解决方案。我有 400TB 数据的历史数据,每小时插入 1GB 数据。

由于数据是机密的,我正在描述示例场景,数据包含银行分行中所有活动的信息。每小时,当新数据插入(无更新)到 hdfs 时,我需要查找关闭的贷款数量、创建的贷款数量、过期的帐户数量等(要执行大约 1000 次分析)。分析涉及处理全部 400TB 的数据。

我计划使用 hadoop + spark。但有人建议我使用 HBase。通读所有文档,我无法找到明显的优势。

获取将增长到 600TB 的数据的最佳方式是什么
1. MR 用于分析,impala/hive 用于查询
2. 用于分析和查询的 Spark
3. HBase + MR用于分析和查询

提前致谢

关于HBase:

HBase 是一个建立在 HDFS 之上的数据库。 HBase 使用 HDFS 来存储数据。 基本上,HBase 将允许您更新记录、进行版本控制和删除单个记录。 HDFS 不支持文件更新,所以 HBase 引入了一些你可以考虑的 "virtual" 操作,并在你向它请求数据时合并来自多个源(原始文件、删除标记)的数据。此外,作为键值存储的 HBase 正在创建索引以支持按键选择。

您的问题:

在这种情况下选择技术时,您应该了解您将如何处理数据: Impala 上的单一查询(使用 Avro 模式)可能比 MapReduce 快得多(更不用说 Spark) .当涉及缓存时,Spark 在批处理作业中会更快。

您可能熟悉 Lambda 架构,如果不熟悉,请了解一下。对于我现在可以告诉你的,你提到的第三个选项(仅限 HBase 和 MR)不会很好。我没有尝试 Impala + HBase,所以我不能说任何关于性能的事情,但是 HDFS(普通文件)+ Spark + Impala(使用 Avro)对我有用:Spark was doing reports for预定义查询(之后,数据存储在对象文件中——人类无法读取,但速度非常快),Impala 用于自定义查询。

希望至少能有所帮助。