WEB开发网
开发学院服务器云计算 在云中使用 MapReduce 和负载平衡 阅读

在云中使用 MapReduce 和负载平衡

 2010-08-26 00:00:00 来源:WEB开发网   
核心提示: 以 WordCount 问题为例,即计算大文件集中的每个单词的匹配次数,在云中使用 MapReduce 和负载平衡(4),Mapper 和 Reducer 函数如代码清单 1 所示, 清单 1. 解决 WordCount 问题的 Map 和 Reducemapper(filename,file-

以 WordCount 问题为例。即计算大文件集中的每个单词的匹配次数。Mapper 和 Reducer 函数如代码清单 1 所示。

清单 1. 解决 WordCount 问题的 Map 和 Reduce

mapper (filename, file-contents): 
 for each word in file-contents: 
  emit (word, 1) 
 
reducer (word, values): 
 sum = 0 
 for each value in values: 
  sum = sum + value 
 emit (word, sum) 

Map 函数发出每个单词附有一个相关的出现次数计数。Reduce 函数对发出的特定单词计数求和。这个基本的功能如果构建在集群之上,就可以很容易转变为高速并行处理系统。

对之前完成的大量数据执行计算,这些数据通常在分布式环境中。Hadoop 的独特之处在于它简单的编程模式 — 使用户可以快速编写和测试分布式系统 — 以及它的高效、自动分配数据和跨计算机处理,进而能够利用 CPU 内核的底层并行度。

让我们理清思路。前文已经讨论过,Hadoop 集群中有以下节点:

NameNode(云主节点)。

DataNodes(从属节点)。

集群中的节点已经预先加载了本地输入文件。启动 MapReduce 进程时,NameNode 将使用 JobTracker 进程分配任务,它必须由 DataNodes 通过 TaskTracker 进程完成。每个 DataNode 中将运行几个 Map 进程,中间结果会提供给合器进程,生成一台计算机上文件的单词计数(在 WordCount 的问题中)。值被打乱发送到 Reduce 进程,然后生成目标问题的最终输出。

如何使用负载平衡

负载平衡有助于在某个节点的负载超出阈值水平时,将负载平均地分散到空闲的节点。虽然在执行 MapReduce 算法时负载平衡不够明显,但在进行大文件处理以及硬件资源利用至关重要的时候它是非常必要的。一个显著的作用是可以在资源紧张的情况下增加硬件利用率,提高性能。

上一页  1 2 3 4 5  下一页

Tags:云中 使用 MapReduce

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接