Hadoop之Map-Reduce
来源:互联网 发布:挪威的森林知乎 编辑:程序博客网 时间:2024/06/05 22:32
连续发3篇hadoop的文章,还真的有点累,但是在发表过程中又对其原理又有了比较清晰的了解了.感觉还是不错的。
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分配到各个节点上运行对分在机子上的数据进行mapmapper对原始数据进行抽取,在本地数据进行抽取因此把比较大的工作进行分解成小工作,处理完之后再将结果融合。
由字面的意思就可以猜测到,此框架至少分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端任务的处理。
- Hadoop之Map-Reduce
- hadoop 学习之Map/Reduce
- Hadoop之map/reduce介绍
- Hadoop源码之Map/Reduce应用过程
- hadoop学习笔记之Map-Reduce
- Hadoop 笔记之Map && Reduce数量确定
- 【Hadoop学习】之Map-Reduce(一)
- hadoop学习之:Map、Reduce详解
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce教程
- hadoop map/reduce setup
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce Implementation
- #include <algorithm> 常用函数
- kdfjgndfkg
- android获取webservice接口的数据
- maven学习(nexus的安装)
- 就是得还不够
- Hadoop之Map-Reduce
- 查看那个进程占用了80端口
- java中使用字符串或者动态创建对象的三种方法(Class,Constructor,Proxy)
- 读书笔记-C++PrimerPlus-8.2.6 对象、继承和引用10.2.5 修改实现
- java多线程零碎知识点
- UVa 10361 Automatic Poetry
- STL之map操作的几点疑惑
- git学习之旅(四)——回退版本
- 线段树之区间更新