在云中使用 MapReduce 和负载平衡
2010-08-26 00:00:00 来源:WEB开发网以 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 算法时负载平衡不够明显,但在进行大文件处理以及硬件资源利用至关重要的时候它是非常必要的。一个显著的作用是可以在资源紧张的情况下增加硬件利用率,提高性能。
- ››使用脚本恢复WinXP系统的用户登录密码
- ››使用phpMyadmin创建数据库及独立数据库帐号
- ››使用Zend Framework框架中的Zend_Mail模块发送邮件...
- ››使用cout标准输出如何控制小数点后位数
- ››使用nofollow标签做SEO的技巧
- ››使用 WebSphere Message Broker 的 WebSphere Tra...
- ››使用SQL Server事件探查器做应用程序的性能分析
- ››使用SQL Server事件探查器分析死锁原因
- ››使用纯文本文件打造WCF服务
- ››使用 Dojo 开发定制 Business Space 小部件,第 4...
- ››使用 ADDRESS 与 INDIRECT函数查询信息
- ››使用 COLUMN函数编制单元信息
更多精彩
赞助商链接