我试图了解如何构建大数据解决方案。我有400TB数据的历史数据,每小时插入1GB数据。
由于数据是 secret 的,因此我在描述示例场景,数据包含银行分支机构中所有 Activity 的信息。每隔一小时,当将新数据插入(不更新)到hdfs中时,我需要查找已结清多少贷款,创建的贷款,帐户已过期等(要执行约1000次分析)。分析涉及处理整个400TB数据。
我原计划是使用hadoop + spark。但有人建议我使用HBase。阅读所有文档,我找不到明显的优势。
处理将增长到600TB数据的最佳方法是什么
1. MR用于分析,Impala / Hive用于查询
2. Spark进行分析和查询
3. HBase + MR用于分析和查询
提前致谢
最佳答案
关于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用于自定义查询。
希望它至少可以有所帮助。
关于hadoop - 在hadoop中实时处理非常大的数据集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29074124/