Hadoop之Map-Reduce
2015-08-09 16:13
274 查看
连续发3篇hadoop的文章,还真的有点累,但是在发表过程中又对其原理又有了比较清晰的了解了.感觉还是不错的。
Hadoop的第二大框架Map-Reduce,即分布式处理框架.总的来说它是对HDFS的具体实现。
术语:
1:Map-Reduce原理:*
由字面的意思就可以猜测到,此框架至少分2步,即mapper和reducer。
mapping阶段:定义一个数据处理函数mapper,该阶段MapReduce获取获取输入数据并将数据装入mapper。
Map-reduce的思想是”分而治之”
Reducing阶段:定义一个数据处理函数reducer,处理来自mapper的所有输出,并给出最终结果。
当然,除了这两个阶段,MapReduce还包括data splitting(数据分割),shuffing(洗牌),partioning(分组),conbining(合并)。
2:MapReduce的体系结构
描述:客户端提交任务(Job)给主节点JobTracker后,Job进入JobTracker中的候选队列,由JobTracker进行调度Job任务并拆分为Map任务和Reduce任务。集群先执行Map任务,由多个TaskTracker并发运行,当每个TaskTracker执行自己分配的任务过程中,向JobTracker提交更新信息,当所有的TaskTracker完成任务后,紧接着集群执行Reduce任务。
3:Map-Reduce工作机制的剖析
文字描述:在Map端,每个TaskTracker节点从DataNode中接收到需要的数据块后信息,执行Map任务,Map任务完成后,得到一个中间结果存到本地磁盘中,形式为键值对,通过给定规则将中间结果信息进行洗牌阶段(shuffing)得到的信息传入Reduce端,执行完Reduce任务后得到最终结果存放到HDFS文件系统中去。
4:性能调优:
究竟需要多少个reducer
输入:大文件优于小文件
减少网络传输:压缩map的输出
优化每个节点能运行的任务数mapred.tasktracker.map.tasks.maximum和mapred.tasktracker.reduces.tasks.maximum(缺省值均为2)
5.MapReduce的容错机制
Hadoop执行MapReduce程序任务难免会出现故障问题,MapReduce框架提供了两种容错机制。
(1)重复执行:MapReduce程序任务出现错误后,重复执行,4次后还是失败,则放弃该任务。
(2)推测执行:当Map端有物理节点TaskTracker出现异常情况,将会启动一个新的TaskTracker节点执行同样的Map任务,新旧同时运行相同任务,谁先完成就放弃掉另一个,这就保证了Map端任务的正常完成,就可以进入到Reduce端任务的处理。
Hadoop的第二大框架Map-Reduce,即分布式处理框架.总的来说它是对HDFS的具体实现。
术语:
PayLoad - 应用程序实现映射和减少功能,形成工作的核心。 Mapper - 映射器的输入键/值对映射到一组中间键/值对。 NamedNode - 节点管理Hadoop分布式文件系统(HDFS)。 DataNode - 节点数据呈现在任何处理发生之前。 MasterNode - 节点所在JobTracker运行并接受来自客户端作业请求。 SlaveNode - 节点所在Map和Reduce程序运行。 JobTracker - 调度作业并跟踪作业分配给任务跟踪器。 Task Tracker - 跟踪任务和报告状态的JobTracker。 Job -程序在整个数据集映射器和减速的执行。 Task - 一个映射程序的执行或对数据的一个片段的减速器。 Task Attempt - 一种尝试的特定实例在SlaveNode执行任务。
1:Map-Reduce原理:*
把大文件分成很多个块,每一个块分别放在不同的节点上的 做一个map函数,可以被jobtracker分配到各个节点上运行 对分在机子上的数据进行map mapper对原始数据进行抽取,在本地数据进行抽取 因此把比较大的工作进行分解成小工作,处理完之后再将结果融合。
由字面的意思就可以猜测到,此框架至少分2步,即mapper和reducer。
mapping阶段:定义一个数据处理函数mapper,该阶段MapReduce获取获取输入数据并将数据装入mapper。
Map-reduce的思想是”分而治之”
Mapper负责"分",即把复杂的任务分解成为若干个"简单的任务"执行。 "简单任务"有几个含义:1数据或计算规模相对于原任务要大大的缩小;2:就近计算,即会被分配到存放了所需数据节点进行计算;3:这些小任务可以并行进行计算,彼此间激活没有依赖关系。
Reducing阶段:定义一个数据处理函数reducer,处理来自mapper的所有输出,并给出最终结果。
Reducer的数码自由mapred-site配置文件的项目mapred.reduce.tasks决定,缺省值为1,用户可以覆盖之
当然,除了这两个阶段,MapReduce还包括data splitting(数据分割),shuffing(洗牌),partioning(分组),conbining(合并)。
2:MapReduce的体系结构
描述:客户端提交任务(Job)给主节点JobTracker后,Job进入JobTracker中的候选队列,由JobTracker进行调度Job任务并拆分为Map任务和Reduce任务。集群先执行Map任务,由多个TaskTracker并发运行,当每个TaskTracker执行自己分配的任务过程中,向JobTracker提交更新信息,当所有的TaskTracker完成任务后,紧接着集群执行Reduce任务。
3:Map-Reduce工作机制的剖析
a:编写好Map-Reduce的程序,在一个client节点里面对程序的提交 提交可以在集群中的任意一个节点进行 b:jobclient收到作业之后,会和jobtracker联系,申请一个作业id,用来加入作业队列 c:通过hdfs文件系统,把作业代码散发出去,到各个节点上去 d:提交作业 e:在jobtracker上初始化一系列操作,例如在它内存中建立数据结构记录情况 f:jobtracker会向namenode询问有关的数据在那些文件上面 g:通过jobtracker和tasktracker每三秒进行的心跳联系,tasktracker可以参与进来,在tasktracker很繁忙的时候不建议提交作业 h:确定哪些tasktracer参与到计算中来 i:tasktracer会从hdfs系统中取出java代码,之后它开始架设java的虚拟机,进行作业的工作 通过图的形式比较清楚:
文字描述:在Map端,每个TaskTracker节点从DataNode中接收到需要的数据块后信息,执行Map任务,Map任务完成后,得到一个中间结果存到本地磁盘中,形式为键值对,通过给定规则将中间结果信息进行洗牌阶段(shuffing)得到的信息传入Reduce端,执行完Reduce任务后得到最终结果存放到HDFS文件系统中去。
4:性能调优:
究竟需要多少个reducer
输入:大文件优于小文件
减少网络传输:压缩map的输出
优化每个节点能运行的任务数mapred.tasktracker.map.tasks.maximum和mapred.tasktracker.reduces.tasks.maximum(缺省值均为2)
5.MapReduce的容错机制
Hadoop执行MapReduce程序任务难免会出现故障问题,MapReduce框架提供了两种容错机制。
(1)重复执行:MapReduce程序任务出现错误后,重复执行,4次后还是失败,则放弃该任务。
(2)推测执行:当Map端有物理节点TaskTracker出现异常情况,将会启动一个新的TaskTracker节点执行同样的Map任务,新旧同时运行相同任务,谁先完成就放弃掉另一个,这就保证了Map端任务的正常完成,就可以进入到Reduce端任务的处理。
相关文章推荐
- 10271 - Chopsticks (DP)
- Nginx安装
- Nginx安装
- 为什么选择Nginx
- 为什么选择Nginx
- RunLoop学习笔记
- Win7 Centos7安装双系统
- crontab的相关设置&linux定时备份数据库
- win7+ii7+tomcat7运行javaWeb开发的程序
- win2008 IIS与tomcat整合
- hadoop之HDFS(分布式文件系统)
- (大数据工程师学习路径)第一步 Linux 基础入门----数据流重定向
- Linux下重要日志文件及查看方式
- linux 输入输出流和文件描述符浅析
- ActionScript 3.0 学习(四) AS3显示对象的几个基本属性,ButtonMode,DropTarget,hitArea以及ScaleX,ScaleY,ScrollRect
- linux 命令之 ipcs、ipcrm
- 有用的专业网站
- 花生壳如何发布tomcat网站到外网?
- Linux之find命令用于统计信息
- 联想G480安装CentOS电缆驱动器