用户可以配置和向框架提交 MapReduce 任务(简言之,作业)。一个 MapReduce 作业包括 Map 任务,shuffle过程,排序过程和一套 Reduce 任务。然后框架会管理作业的分配和执行,收集输出和向用户传递作业结果。
MapReduce 是单个 jobstracker 和多个 tasktracker 的组合。一般 jobstracker 和 HDFS 中的 namenode 在同一个节点,也可配置为单独节点;tasktracker 和 datanode 必须是同一个节点。jobstracker 是整个 MapReduce 系统的主控节点。
jobstracker 节点-Master 节点:
1、负责调度构成一个作业的全部任务,将之分配到不同的从属节点上。
2、通过心跳机制监控从属节点运行状况。一旦有意外,会立刻将任务转移。
tasktracker 节点-Slave 节点:
1、负责执行主控节点分配的任务。
2、tasktracker 和 datanode 是同一个节点,以实现移动运算达到高效性。
MapReduce 任务的构成要素:
1、配置作业 --------------------------------------------------------------------------用户
2、输入分割和派遣 -------------------------------------------------------------------Hadoop 框架
3、接受分割的输入后,每个 Map 任务的启动 ---------------------------------------Hadoop 框架
4、Map 函数,对于每个键值对被调用一次 ------------------------------------------用户
5、shuffle,分割和排序 Map 的的输出并得到快 ------------------------------------Hadoop 框架
6、排序,将shuffle的块进行组合和排序 ---------------------------------------------Hadoop 框架
7、接受排序快后,每个 Reduce 任务的启动 -----------------------------------------Hadoop 框架
8、Reduce 函数,对于每一个关键字和对象的所有数据值被调用一次 ----------------用户
9、收集输出结果,在输出目录存储输出结果,输出结果分为 N 个部分,N是 Reduce 任务的号码-------------------------------Hadoop 框架
用户负责处理作业初始化,指定输入位置,指定输入和确保输入格式和位置是正确无误的。
框架负责在集群中 TaskTracker 节点上派遣作业,执行 map 过程,shuffle过程,排序过程和 Reduce 过程,把输出写入输出目录,最后通知用户作业完成状态。
当前MapReduce 框架存在的问题:
1. JobTracker 是 MR 框架的 BOSS,只有一个,存在单点故障。
2. 全部作业首先经过 JobTracker 处理,其完成了太多的工作造成过多的资源消耗。
3. TaskTracker 上,如果两个消耗大内存的作业被调度到一起,很容易出现 OOM(物理内存不足,也没有可回收的内存)。
4. TaskTracker 上,把资源强制划分为 map 作业槽和 reduce 作业槽。当系统中只有 map 作业或者只有 reduce 作业时,会造成资源的浪费。
5. 部分源代码臃肿不清晰,增加 bug 修复和版本维护的难度。
6. 现在的 MapReduc 框架在有任何重要的或者不重要的变化时都会强制进行系统级别的升级更新。分布式集群的全部节点必须同时做出更新。这些更新会让开发者为了验证他们之前的应用程序是不是适用新的版本而浪费大量时间。
分享到:
相关推荐
基于MapReduce实现决策树算法的知识点 基于MapReduce实现决策树算法是一种使用MapReduce框架来实现决策树算法的方法。在这个方法中,主要使用Mapper和Reducer来实现决策树算法的计算。下面是基于MapReduce实现决策...
实验项目“MapReduce 编程”旨在让学生深入理解并熟练运用MapReduce编程模型,这是大数据处理领域中的核心技术之一。实验内容涵盖了从启动全分布模式的Hadoop集群到编写、运行和分析MapReduce应用程序的全过程。 ...
MapReduce是一种分布式计算模型,由Google在2004年提出,主要用于处理和生成大规模数据集。这个模型将复杂的计算任务分解成两个主要阶段:Map(映射)和Reduce(化简),使得在大规模分布式环境下处理大数据变得可能...
【标题】Hadoop MapReduce 实现 WordCount MapReduce 是 Apache Hadoop 的核心组件之一,它为大数据处理提供了一个分布式计算框架。WordCount 是 MapReduce 框架中经典的入门示例,它统计文本文件中每个单词出现的...
### 大数据实验四-MapReduce编程实践 #### 一、实验内容与目的 ##### 实验内容概述 本次实验的主要内容是使用MapReduce框架来实现WordCount词频统计功能,即统计HDFS(Hadoop Distributed File System)系统中多个...
MapReduce之数据清洗ETL详解 MapReduce是一种基于Hadoop的分布式计算框架,广泛应用于大数据处理领域。数据清洗(Data Cleaning)是数据处理过程中非常重要的一步,旨在清洁和转换原始数据,使其更加可靠和有用。...
单词计数是最简单也是最能体现 MapReduce 思想的程序之一,可以称为 MapReduce 版“Hello World”。单词计数的主要功能是统计一系列文本文件中每个单词出现的次数。本节通过单词计数实例来阐述采用 MapReduce 解决...
基于MapReduce的Apriori算法代码 基于MapReduce的Apriori算法代码是一个使用Hadoop MapReduce框架实现的关联规则挖掘算法,称为Apriori算法。Apriori算法是一种经典的关联规则挖掘算法,用于发现事务数据库中频繁...
【大数据Hadoop MapReduce词频统计】 大数据处理是现代信息技术领域的一个重要概念,它涉及到海量数据的存储、管理和分析。Hadoop是Apache软件基金会开发的一个开源框架,专门用于处理和存储大规模数据集。Hadoop的...
(2)打开网站localhost:8088和localhost:50070,查看MapReduce任务启动情况 (3)写wordcount代码并把代码生成jar包 (4)运行命令 (1):把linus下的文件放到hdfs上 (2):运行MapReduce (5):查看运行结果 ...
MapReduce是一种分布式计算模型,由Google在2004年提出,主要用于处理和生成大规模数据集。它将复杂的并行计算任务分解成两个主要阶段:Map(映射)和Reduce(化简)。在这个"MapReduce项目 数据清洗"中,我们将探讨...
一个自己写的Hadoop MapReduce实例源码,网上看到不少网友在学习MapReduce编程,但是除了wordcount范例外实例比较少,故上传自己的一个。包含完整实例源码,编译配置文件,测试数据,可执行jar文件,执行脚本及操作...
在大数据处理领域,MapReduce是一种广泛使用的分布式计算框架,由Google提出并被Hadoop采纳为标准组件。本案例主要探讨如何使用MapReduce来求取数据集的行平均值,这在数据分析、数据挖掘以及日志分析等场景中非常...
### MapReduce基础知识详解 #### 一、MapReduce概述 **MapReduce** 是一种编程模型,最初由Google提出并在Hadoop中实现,用于处理大规模数据集的分布式计算问题。该模型的核心思想是将复杂的大型计算任务分解成较...
【MapReduce初级编程实践】是大数据处理中的一项基础任务,主要应用于大规模数据集的并行计算。在这个实验中,我们关注的是如何利用MapReduce来实现文件的合并与去重操作。MapReduce是一种分布式计算模型,由Google...
赠送jar包:hadoop-mapreduce-client-jobclient-2.6.5.jar; 赠送原API文档:hadoop-mapreduce-client-jobclient-2.6.5-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-jobclient-2.6.5-sources.jar; 赠送...
MapReduce 编程模型简介 MapReduce 是一种编程模型,由 Jeffrey Dean 和 Sanjay Ghemawat 于 2004 年提出,用于处理大规模数据集的分布式计算。该模型将计算任务分解成两个主要阶段:Map 和 Reduce。Map 阶段将...
【标题】"基于javaweb + mapreduce的小型电影推荐系统"揭示了这个项目的核心技术栈,即Java Web和MapReduce。在这个系统中,Java Web技术用于构建前端用户界面和后端服务器逻辑,而MapReduce则被用作大数据处理框架...