Hadoop实战之四~hadoop作业调度详解(2)
这篇文章将接着上一篇wordcount的例子,抽象出最简单的过程,一探MapReduce的运算过程中,其系统调度到底是如何运作的。
情况一:数据和运算分开的情况
wordcount这个例子的是hadoop的helloworld程序,作用就是统计每个单词出现的次数而已。其过程是:
现在我用文字再来描述下这个过程。
1 Client提交一个作业,将Mapreduce程序和数据到HDFS中
2 发起作业,Hadoop根据各机器空闲情况,调度一台(或者N台taskTracker机器,进行Map运算)
3 taskTacker机器将程序和数据拷贝到自己机器上。
4 taskTacker机器启动jvm,进行Map运算
5 taskTacker机器运算完成,将数据存储在本机上,并通知JobTacker节点。
6 JobTacker等待所有机器完成,调度一台空闲的机器,进行Reduce运算,并告知数据存储所在机器。
7 进行Reduce运算的TaskTacker将数据通过RPC拷贝到自己机器上,同时将程序从HDFS中拷贝到自己机器中。
8 启动JVM,加载程序,进行Reduce运算。
9 运算完成,reduce运算的机器将数据存储在HDFS中,并通知JobTacker。
10 JobTacker发现任务完成,通知客户端,你的事干完了。
11 客户端通过访问HDFS,拿到最终运算数据。
为什么Map中间数据会存储本机上而不是HDFS上呢,原因是因为中间的运算可能会失败,如果失败了也没有必要存储在HDFS上,JobTacker会选择另外一台机器完成任务即可。只有最终数据才是有价值的。
情况二:数据和节点在一起的情况
真实的情况当然不是情况一,原因是因为: 移动运算比移动数据更经济. 在Hadoop中,往往同一台机器既是DataNode,也是TaskTraker。Hadoop在调度过程中,会优先调度数据所在的机器进行运算,这样数据就不会在机器之间Copy来Copy去,网络带宽就不会成为运算的瓶颈了。这个例子的示意图如下:
这张图结合上面的描述,我相信大家应该很容易就看懂了。那既然Hadoop的实际过程是情况二,我为什么要先描述情况一呢?原因有两点:
1 情况一更容易理解。
2 情况一更容易实现。
如何根据Hadoop的调度原理,写自己的的集群调度框架,这是我最近在思索和践行的一个事情,有兴趣的同学其实也可以自己写一个,大家多多交流~
Hadoop实战之四~hadoop作业调度详解(2)的更多相关文章
- Hadoop 新 MapReduce 框架 Yarn 详解
Hadoop 新 MapReduce 框架 Yarn 详解: http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/ Ap ...
- Hadoop 发行版本 Hortonworks 安装详解(一) 准备工作
一.前言 目前Hadoop发行版非常多,所有这些发行版均是基于Apache Hadoop衍生出来的,之所以有这么多的版本,完全是由Apache Hadoop的开源协议决定的:任何人可以对其进行修改,并 ...
- Hadoop 发行版本 Hortonworks 安装详解(二) 安装Ambari
一.通过yum安装ambari-server 由于上一步我们搭建了本地源,实际上yum是通过本地源安装的ambari-server,虽然也可以直接通过官方源在线安装,不过体积巨大比较费时. 这里我选择 ...
- Hadoop生态圈-Hbase的Region详解
Hadoop生态圈-Hbase的Region详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- [转]Hadoop集群_WordCount运行详解--MapReduce编程模型
Hadoop集群_WordCount运行详解--MapReduce编程模型 下面这篇文章写得非常好,有利于初学mapreduce的入门 http://www.nosqldb.cn/1369099810 ...
- Hadoop深入学习:MapTask详解
转自:http://flyingdutchman.iteye.com/blog/1878775#bc2337280 Hadoop深入学习:MapTask详解 博客分类: Hadoop MapTask执 ...
- hadoop基础----hadoop实战(七)-----hadoop管理工具---使用Cloudera Manager安装Hadoop---Cloudera Manager和CDH5.8离线安装
hadoop基础----hadoop实战(六)-----hadoop管理工具---Cloudera Manager---CDH介绍 简介 我们在上篇文章中已经了解了CDH,为了后续的学习,我们本章就来 ...
- Java NIO 的前生今世 之四 NIO Selector 详解
Selector Selector 允许一个单一的线程来操作多个 Channel. 如果我们的应用程序中使用了多个 Channel, 那么使用 Selector 很方便的实现这样的目的, 但是因为在一 ...
- Linq实战 之 DataSet操作详解
Linq实战 之 DataSet操作详解 一:linq to Ado.Net 1. linq为什么要扩展ado.net,原因在于给既有代码增加福利.FCL中在ado.net上扩展了一些方法. 简单一 ...
随机推荐
- iOS开发其他相关
1.iOS开发行情 1.1 iOS系统各个版本的占比查询 2.Xcode的使用 开发软件下载 Xcode Help(官方) 2.1 Xcode面板 Xcode面板 2.2 Xcode版本新功能 Xco ...
- “全栈2019”Java第十八章:一元运算符
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Establishing SSL connection without server's identity verification is not recommended.
完全描述:Establishing SSL connection without server's identity verification is not recommended. Accordin ...
- TCP的成块数据流
TCP使用滑动窗口协议的另一种方式来实现流量控制.该协议允许发送方在停止并等待确认之前可以连续发送多个分组.由于发送方不必每发送一个分组就停下来等确认,因此该协议可以加速数据的传输. 一.滑动窗口  ...
- POJ2279 Mr Young's Picture Permutations
POJ2279 Mr Young's Picture Permutations 描述: 有N个学生合影,站成左对齐的k排,每行分别有N1,N2…NK个人,第一排站最后,第k排站之前.学生身高依次是1… ...
- [原创]SpringBoot上传图片踩的坑
最近项目里面有个需求,要上传图片到阿里云的OSS服务.所以需要写个上传图片的接口给前端. 这个简单的接口本来就给分配了1个工时,感觉也蛮简单的.但编码过程中遇到了好几个问题,现在一一记录下来,避免再次 ...
- idea使用时,部分jdk的jar包(tool.jar com.sun.javadoc) 无法引入-gradle处理方案
gradle 增加配置 def jdkHome = System.getenv("JAVA_HOME") dependencies { compile files("$j ...
- 06-oracle 通用函数
--nvl(数字|列名,默认值) 数字或列的值为null显示为0,不为null时显示原值 --nvl2(comm,comm,0)如果comm不为null则显示comm,为null则显示0 --null ...
- RocketMQ 安装
RocketMQ 安装 1.进入目录 cd /usr 2.下载 wget http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.3.0/rocke ...
- Django 配置访问静态文件
1.settings.py 首先在 settings 文件中,引用 os 模块: import os 定义根目录: BASE_DIR = os.path.dirname(os.path.dirna ...