`
touchmm
  • 浏览: 1037862 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

MAP/REDUCE:Google和Nutch实现异同及其他

阅读更多

/*版权声明:可以任意转载,转载时请务必标明文章原始出处和作者信息 .*/

张俊林
timestamp:2006年11月26日

设计要素

nutch包含以下几个部分:

  1. 辅助类

    Log:记载运行信息;

    Time:记载时间信息;

  1. 协议类

    目的:各种进程之间的通信协议

    1. ClientM/R系统通信协议:完成客户端和M/R系统的通信;
    2. JobTask系统通信协议:由于一个任务要分布完成,所以需要任务和子任务之间<wbr></wbr>的通信协议;
    3. MapTaskReduceTask通信协议:由于MAPREDUCE是一个任务的顺序执行过程,所以需要两者之间的通信协议来对两个步<wbr></wbr>骤进行协调,主要是文件输入输出协调;
    4. 进程通信协议:子进程和父进程通信协议;

  1. 任务管理

3.1任务定义与管理(JOB):运行,状态管理,JOBGOOGLEMASTER是一个概念么?好像不一样;JOB应当等价于MapReduceSpecification类,那么nutchmaster在哪里呢?

3.2map管理;(运行,状态管理)

3.3Reduce管理;(运行,状态管理)

3.4mapReduce协调管理;

3.5.任务文件切割以及记录读写等管理;(文件由记录组成<wbr></wbr>,切割时候注意边界);输入输出文件读写等管理;

关系定义:

    1. 一个M/R系统同时并行处理若干个JOB,每个JOB需要记载其运行状态等;
    2. 每个JOB对应一个大型输入文件,通过文件切割,建立若干个TASK分布在不同机器上处理切割过的文件片段,达到并行处理的目的;
    3. 每个TASK可以分为顺序执行的两部分:MAP/REDUCEMAP阶段分布在M个机器执行,负责把输入文件的《KEY,VALUE>转换为《key1,value1>形式,不负责数据整理,只负责数据形式转换;REDUCE阶段分布在K个机器执行,负责对MAP阶段的输出结果进行排序和统计等整理,形成《key1,list(value1)>输出形式;


    NutchGOOGLE的区别与联系:

    1. 大体上Nntch是按照GOOGLE的论文做的,但是有几点区别,总体感觉Nntch在完整性和复杂性方面还不如GOOGLE的系统;
    2. GOOGLE更像一个软件框架,客户在这个框架下写自己的程序,而nutch更像一个固定功能的系统,当然之所以nutchmapperreducer类基本只起到一个接口的作用,也是为了体现框架的意图<wbr></wbr>,由用户继承并定义新类来使用框架完成自己的任务,但是nutch jobclientjobsubmission使得它更像一个静态的功能而非框架;
    3. GOOGLE的实现版本框架,其中的变化点在于
      1. 用户自定义mapper;
      2. 用户自定义reducer;
      3. 用户可以对输入文件格式解析进行自定义;
      4. 用户通过一个类来设定系统参数并将map/reduce类和输入文件绑定起来;
      5. 用户自定义partition类,该类主要由reducer调用,功能是通过HASH(KEY)使得同一个KEY的能够映射到一台机器上,这样方便统计处理;

    其中的不变点,也就是框架本身提供的功能:

    a.系统运行流程:首先将输入文件切割,然后分布到不同机器执行map运算,运算结果通知master,master通知reducer去累计结果输出;这个基本上是固定的;

    b.系统通信协议:master通过周期性的ping workers来判断是否该进程还有效;map运算结果要传送给master; master通知reducer输入数据所在位置;reducer通过RPC调用来获得输入数据等;

    c.容错处理:自动发现硬件错误并提供补偿措施,主要的补偿措施是如果<wbr></wbr>发现某个任务失效,则将任务调配到另外一台机器重新计算;

    d.master记载控制信息并承担控制工作:比如记录任务分配信息;每个子任务(map/reduce)状态信息;轮询子任务获得状态信息;负责通信工作<wbr></wbr>(类似于设计模式中的“中介者”模式);发现错误的话进行调整工作<wbr></wbr>(放置到一台好的机器重新运行);

    1. GOOGLE的方案有一些优化工作,比如计数器的实现,backup(就是往往最后完成的几个子任务拖整个任务的后腿,GOOGLE的策略是:当发现一个任务接近完成时候,启动几个后备子任务<wbr></wbr>,哪个先完成算哪个,可以有效提高速度),partition函数;master checkpoint为了恢复master的工作等;这些工作nutch还没有实现;
    2. GOOGLE方案的一些类:

    Counter:累计计数器;

    MapReduceSpecification:参数设定等;方法见论文;

    MapReduceInput:输入文件参数设定以及mapper绑定;

    MapReduceOutput:输出文件参数设定以及reducer 类绑定;

    Mapper:抽象类,用户继承进行自定义;Emit()函数

    Reducer: 抽象类,用户继承进行自定义;Emit()函数

    MapReduceResult:存放结果的类;

    MapReduce(MapReduceSpecificatio<wbr></wbr>n, MapReduceResult)方法,是启动整个MAPREDUCE的控制流程函数;

    分享到:
    评论

    相关推荐

      nutch配置与安装

      ### Nutch配置与安装知识点详解 ...通过以上步骤,用户可以在Windows平台上顺利安装并配置Nutch,实现对局域网内资源的有效抓取。这对于需要定期收集特定网站数据的场景非常有用,例如网站监控、内容分析等。

      Nutch2.3.1 环境搭建

      Nutch2.3.1是Apache Nutch的一个稳定版本,它是一个开源的网络爬虫框架,主要用于抓取、解析和索引互联网上的网页内容。在本文中,我们将深入探讨如何搭建Nutch2.3.1的运行环境,以便进行网页抓取和分析。 **一、...

      nutch入门经典翻译1:Introduction to Nutch, Part 1: Crawling

      《Nutch入门经典翻译1:Introduction to Nutch, Part 1: Crawling》一文深入介绍了Nutch这一开源网络爬虫框架的基本概念、体系结构及其关键组件,为初学者提供了全面的理解视角。以下是对该文章核心知识点的详细解读...

      LoremIpsumSearch:包含与 lucene 和 solr 一起使用的搜索算法

      包含与 lucene 和 solr 一起使用的搜索算法 bbox 查询: 完全删除 solr 索引: curl -H "Content-Type: text/xml" --data-binary ' : ' curl -d ' ' curl -d '' export CLASSPATH="&lt;lucene&gt;/lucene/replicator/...

      apache-nutch-1.6-bin.tar.gz最新版

      nutch不用安装,是个应用程序,下载后为nutch-1.6.tar.gz,双击桌面上的cygwin快捷方式;执行以下命令: $ cd D:/Downloads/Soft $ tar zxvf nutch-1.0.tar.gz 在e盘下面出现nutch-0.9文件夹说明解压成功了.然后环境...

      apache-nutch-1.7-src.tar.gz

      5. **过滤(Filtering)**:Nutch提供了对索引内容进行预处理的功能,如去除停用词、词干化等,这些在`src/java/org/apache/nutch/indexer/tfidf`和`src/java/org/apache/nutch/analysis/lang`等目录中实现。...

      nutch2.3.1安装文档教程

      ### Nutch 2.3.1 安装与配置指南 #### 一、配置 ant 环境 在安装 Nutch 之前,首先需要确保环境中已经安装了 Apache Ant 工具,因为 Nutch 的构建过程依赖于 Ant。以下是具体步骤: 1. **下载 ant**: - 访问 ...

      Nutch中文教程nutcher.zip

      nutch社区目前缺少教程和文档,而且教程对应版本号较为落后。nutcher致力于为nutch提供一个较新的中文教程和文档,供开发者学习。 github地址: https://github.com/CrawlScript/nutcher 目录: ...

      nutch的安装方法,好用

      Nutch是一款开源的网络爬虫项目,基于Hadoop实现,可以抓取整个互联网,并且能够根据网页内容进行索引和检索。本文将详细介绍如何在Windows环境下安装配置Nutch,使初学者能够轻松上手。 #### 二、准备工作 在安装...

      nutch2.2.1安装步骤.docx

      Nutch 2.2.1 是一个稳定版本,它依赖于其他几个组件来完成其功能,包括 Apache Ant、Apache Tomcat、Java 开发工具包(JDK)以及 Apache Solr。下面我们将详细探讨如何在 Linux 系统上安装这些组件以及配置 Nutch。 ...

      apache-nutch-2.2.1(Eclipse直接运行版)001

      apache-nutch-2.2.1(Eclipse直接运行版)今天刚做的,发现有很多坑,分享给大家实验,JDK1.7 Win10。我分享的两个压缩卷一起下载才可以用,资源限制太小了 002地址:...

      Nutch 安装与配置文档

      在实际使用中,根据具体需求可能还需要对Nutch的其他配置文件进行调整,如`conf/nutch-default.xml`和`conf/nutch-site.xml`,以便优化抓取策略和索引设置。同时,了解Nutch的抓取流程和原理,对于进行更高级的网络...

      Nutch使用入门

      Nutch 是一个开源的网络爬虫项目,主要设计用于抓取和索引互联网上的网页,以便进行全文搜索。本文档将引导你入门Nutch的基本使用,包括环境配置、部署、爬取网页以及搜索功能的实现。 **环境要求:** 1. **JDK 1.5...

      搭建nutch开发环境步骤

      1. 操作系统:Nutch可以在Linux、Mac OS X或Windows上运行,但推荐使用Linux环境,因为大部分Nutch用户和开发者都在这个平台上工作。 2. Java环境:Nutch依赖Java,因此需要安装JDK 8或更高版本,并确保`JAVA_HOME`...

      nutch安装在windows下配置

      ### Nutch 在 Windows 下的安装与配置 #### 一、背景与目的 随着网络的不断发展,搜索引擎成为人们获取信息的重要工具。Nutch 是一个开源的网络爬虫项目,旨在为用户提供一套完整的信息检索解决方案。虽然原本有...

      nutch:一个 Nutch 的克隆,试图让它工作并跟踪所需的步骤

      Apache Nutch 自述文件 有关 Nutch 的最新信息,请访问我们的网站: 和我们的维基,在: 要开始使用 Nutch,请阅读教程: 贡献 要提供补丁,请按照以下说明操作(请注意,安装不是必需的,但建议安装)。 0. ...

      Nutch在Tomcat下的部署.doc

      Nutch 是一个开源的网络爬虫项目,用于抓取互联网上的网页并建立索引,而Tomcat是一款流行的Java应用服务器,常用来部署Web应用程序。在本文中,我们将深入探讨如何在Tomcat环境下部署Nutch以及解决相关问题。 首先...

      AnyFo – Nutch 冰破银针

      【AnyFo – Nutch 冰破银针】是关于如何在Windows环境下搭建并使用Apache Nutch搜索引擎的一个指南。Apache Nutch是一个开源的网络爬虫项目,用于抓取互联网上的网页并建立索引,以便进行搜索。 **环境搭建** 1. *...

    Global site tag (gtag.js) - Google Analytics