【问题标题】:Processing very large dataset in real time in hadoop在hadoop中实时处理非常大的数据集
【发布时间】:2015-03-16 10:07:03
【问题描述】:

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

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

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

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

提前致谢

【问题讨论】:

  • Spark是分布式计算框架,HBase是no-sql数据库。对我来说,选择其中一个似乎是荒谬的。
  • @DanielDarabos 是的,我明白.. 我试图弄清楚使用 HBase 而不是 HDFS 的优势是什么。当需要对整个数据集执行操作时,HBase 是否良好
  • 我认为 HBase 的优势在于支持更新。既然你没有更新,那么支持 HBase 的论据是什么?

标签: hadoop apache-spark hbase


【解决方案1】:

关于 HBase:

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

您的问题:

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

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

希望它至少有一点帮助。

【讨论】:

  • 谢谢@szefuf。经过大量阅读后,我还计划使用 spark + impala + hbase(用于用户信息检索,因为我预计有 1 亿用户存在)。我很想了解有关 objectFiles 的更多信息?
  • ObjectFiles 类似于 RAM 中的分页。它没有序列化为人类可读的形式,但它允许非常快速地从硬盘中检索 RDD。当 RDD 被缓存时也使用这种机制,但是 RAM 内存不足以容纳整个 RDD(然后部分存储在硬盘上 - 你可以在 Spark UI 中看到它)。我用它来存储两个多月的中间报告——多亏了这个如果有人想检索和汇总历史数据,它可以在几秒钟内完成。只需使用 RDD.saveAsObjectFile("") 将其保存并读取为 sc.objectFile(""):RDD。
猜你喜欢
  • 1970-01-01
  • 2011-06-15
  • 2013-01-11
  • 1970-01-01
  • 1970-01-01
  • 2014-10-13
  • 2011-09-26
  • 2016-05-14
  • 1970-01-01
相关资源
最近更新 更多