MAP/REDUCE:Google和Nutch实现异同及其他
/*版权声明:可以任意转载,转载时请务必标明文章原始出处和作者信息 .*/
张俊林
timestamp:2006年11月26日
设计要素
nutch包含以下几个部分:
Log:记载运行信息;
Time:记载时间信息;
目的:各种进程之间的通信协议
3.1任务定义与管理(JOB):运行,状态管理,JOB和GOOGLE的MASTER是一个概念么?好像不一样;JOB应当等价于MapReduceSpecification类,那么nutch的master在哪里呢?
3.2map管理;(运行,状态管理)
3.3Reduce管理;(运行,状态管理)
3.4map和Reduce协调管理;
3.5.任务文件切割以及记录读写等管理;(文件由记录组成,切割时候注意边界);输入输出文件读写等管理;
关系定义:
- 一个M/R系统同时并行处理若干个JOB,每个JOB需要记载其运行状态等;
- 每个JOB对应一个大型输入文件,通过文件切割,建立若干个TASK分布在不同机器上处理切割过的文件片段,达到并行处理的目的;
- 每个TASK可以分为顺序执行的两部分:MAP/REDUCE,MAP阶段分布在M个机器执行,负责把输入文件的《KEY,VALUE>转换为《key1,value1>形式,不负责数据整理,只负责数据形式转换;REDUCE阶段分布在K个机器执行,负责对MAP阶段的输出结果进行排序和统计等整理,形成《key1,list(value1)>输出形式;
Nutch和GOOGLE的区别与联系:
其中的不变点,也就是框架本身提供的功能:
a.系统运行流程:首先将输入文件切割,然后分布到不同机器执行map运算,运算结果通知master,master通知reducer去累计结果输出;这个基本上是固定的;
b.系统通信协议:master通过周期性的ping workers来判断是否该进程还有效;map运算结果要传送给master; master通知reducer输入数据所在位置;reducer通过RPC调用来获得输入数据等;
c.容错处理:自动发现硬件错误并提供补偿措施,主要的补偿措施是如果发现某个任务失效,则将任务调配到另外一台机器重新计算;
d.master记载控制信息并承担控制工作:比如记录任务分配信息;每个子任务(map/reduce)状态信息;轮询子任务获得状态信息;负责通信工作(类似于设计模式中的“中介者”模式);发现错误的话进行调整工作(放置到一台好的机器重新运行);
Counter:累计计数器;
MapReduceSpecification:参数设定等;方法见论文;
MapReduceInput:输入文件参数设定以及mapper绑定;
MapReduceOutput:输出文件参数设定以及reducer 类绑定;
Mapper:抽象类,用户继承进行自定义;Emit()函数
Reducer: 抽象类,用户继承进行自定义;Emit()函数
MapReduceResult:存放结果的类;
MapReduce(MapReduceSpecification, MapReduceResult)方法,是启动整个MAPREDUCE的控制流程函数;
总结
以上是生活随笔为你收集整理的MAP/REDUCE:Google和Nutch实现异同及其他的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 自然语言处理领域的两种创新观念
- 下一篇: 百度的索引真的比雅虎多么?