Hadoop是否适合这种技术?

时间:2012-06-28 02:40:34

标签: hadoop mapreduce

如果我有数百万条数据记录,那么每天都会不断更新和添加数据,我需要梳理所有数据以查找与特定逻辑匹配的记录,然后将该匹配的子集插入到单独的数据库我会使用Hadoop和MapReduce来完成这样的任务,还是我还缺少一些其他技术?我寻找标准RDMS以外的其他东西的主要原因是因为所有基础数​​据来自多个来源而且结构不统一。

4 个答案:

答案 0 :(得分:2)

Map-Reduce专为可以并行化的算法而设计,可以计算和聚合本地结果。一个典型的例子是计算文档中的单词。您可以将其拆分为多个部分,在这些部分中,您可以计算一个节点上的某些单词,另一个节点上的某些单词等,然后将总计相加(显然这是一个简单的示例,但说明了问题的类型)。

Hadoop专为处理大型数据文件(如日志文件)而设计。默认的块大小为64MB,因此拥有数百万个小记录并不适合Hadoop。

要处理具有非均匀结构化数据的问题,您可以考虑使用NoSQL数据库,该数据库旨在处理许多列为空的数据(例如MongoDB)。

答案 1 :(得分:1)

Hadoop / MR专为批处理而设计,不适用于实时处理。因此,必须考虑其他一些替代方案,例如Twitter StormHStreaming

另外,请查看Hama数据real time processing。请注意,哈马的实时处理仍然很粗糙,必须做很多改进/工作。

答案 2 :(得分:1)

我会推荐Storm或Flume。在其中任何一个中,您可以分析每个记录,并决定如何处理它。

答案 3 :(得分:0)

如果您的数据量不是很大,并且数百万条记录不是这样的声音,我建议尝试从RDMBS中获取最多,即使您的架构未正确规范化。 我认为即使是结构K1,K2,K3,Blob也会更有用t 在NoSQL中,KeyValue存储是为了支持各种风格的无模式数据而构建的,但它们的查询能力有限。
只有我认为有用的情况是MongoDB / CoachDB能够索引无模式数据。您将能够通过某个属性值获取记录。
关于Hadoop MapReduce - 我认为除非您想要处理大量CPU用于处理或拥有大量数据或需要分布式排序功能,否则它无用。