MapReduce 是否需要与 HDFS 一起使用

Does MapReduce need to be use with HDFS

我想使用 Hadoop MapReduce 提高数据处理性能。那么,我需要将它与 Hadoop DFS 一起使用吗?或者 MapReduce 可以与其他类型的分布式数据一起使用?请给我指路....

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

  1. 它使用 Java 处理数据。每个单独的mapper和reducer都是一个单独的JVM实例,需要调用,需要一定的时间
  2. 它多次将中间数据放在硬盘上。至少,mappers 写入它们的结果(一个),reducers 读取并合并它们,将结果集写入磁盘(两个),reducer 结果写回到你的文件系统,通常是 HDFS(三个)。您可以在此处找到有关该过程的更多详细信息:http://0x0fff.com/hadoop-mapreduce-comprehensive-description/.

其次,Hadoop 是一个开放的框架,它支持许多不同的文件系统。您可以从 FTP、S3、本地文件系统(例如 NFS 共享)、MapR-FS、IBM GPFS、RedHat 的 GlusterFS 等读取数据。因此您可以自由选择您喜欢的。 MapReduce 的主要思想是指定能够与您的文件系统一起工作的 InputFormat 和 OutputFormat

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

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 次以避免容错。所有这些对于普通文件系统都是不可能的

希望对您有所帮助!