MapReduce是否需要与HDFS一起使用

时间:2015-01-20 10:17:13

标签: java hadoop mapreduce hdfs

我希望使用Hadoop MapReduce为数据处理提供更好的性能。那么,我是否需要将它与Hadoop DFS一起使用?或者MapReduce可以与其他类型的数据一起使用?请指示我......

2 个答案:

答案 0 :(得分:3)

Hadoop是一个框架,其中包括用于计算的Map Reduce编程模型和用于存储的HDFS。

HDFS代表hadoop分布式文件系统,其灵感来自Google文件系统。整个Hadoop项目的灵感来自Google发布的研究论文。

research.google.com/archive/mapreduce-osdi04.pdf

http://research.google.com/archive/mapreduce.html

使用Map Reduce编程模型数据将在整个集群的不同节点中以并行方式计算,这将减少处理时间。

您需要使用HDFS或HBASE将数据存储在群集中以获得高性能。如果你想选择普通的文件系统,那么就没有太大的区别了。一旦数据进入分布式系统,它将自动划分到不同的块并默认复制3次以避免容错。所有这些都不适用于普通文件系统

希望这有帮助!

答案 1 :(得分:2)

首先,你的想法是错误的。 Hadoop MapReduce的性能与HDFS的性能没有直接关系。由于其架构,它被认为是缓慢的:

  1. 它使用Java处理数据。每个单独的mapper和reducer都是一个单独的JVM实例,需要调用,这需要一些时间
  2. 它将中间数据放在HDD上多次。至少,映射器写入结果(一个),reducers读取并合并它们,将结果集写入磁盘(两个),reducer结果写回文件系统,通常是HDFS(三个)。您可以在此处找到有关此流程的更多详细信息:http://0x0fff.com/hadoop-mapreduce-comprehensive-description/
  3. 其次,Hadoop是开放框架,它支持许多不同的文件系统。您可以从FTP,S3,本地文件系统(例如NFS共享),MapR-FS,IBM GPFS,RedHat的GlusterFS等读取数据。因此您可以自由选择您喜欢的数据。 MapReduce的主要思想是指定能够与文件系统一起使用的InputFormat和OutputFormat

    目前,Spark被认为是Hadoop MapReduce的更快替代品,因为它将大量计算放入内存中。但它的使用真的取决于你的情况