文档章节

从零开始学习Hadoop--第7章 Hadoop MapReduce的运行机制

brian_2017
 brian_2017
发布于 2017/01/17 09:14
字数 1072
阅读 10
收藏 0

    这一章不会有源代码,主要是分析Hadoop的运行机制。


1.一个Hadoop集群,有5种节点。

1.1NameNode,有且仅有一个,负责管理HDFS文件系统。

1.2DataNode,至少有一个,通常有很多个。具体地说,每台负责做集群计算的的计算机都是一个DataNode

1.3SecondaryNameNode,有且仅有一个,只辅助处理NameNode,不做其他任务。

1.4JobTracker,有且仅有一个,负责Hadoop的作业管理,所有的MapReduce的执行由它处理。

1.5TaskTracker,至少有一个,通常有很多个。具体地说,每台负责做集群计算的的计算机都是一个TaskTracker


2.伪分布式Hadoop集群,这个集群只有一台计算机,这台计算机上5种节点都有,启动Hadoop之后,用”jps”命令可以看到这5个节点进程。


3.分布式Hadoop集群,如果集群内计算机足够多,会有一台机器做NameNode,一台机器做SecondaryNameNode,一台机器做JobTracker。其他机器负责做集群计算,这些机器每台上面各有一个DataNodeTaskNode进程。


4.Hadoop配置好之后,第一个命令是执行”./bin/hadoopnamenode -format”。这个命令会对NameNode进行格式化,然后再关闭NameNode


5.执行完第4步之后,用”./bin/start-all.sh”启动Hadoop集群。


6.前处理

6.1MapReduce代码,编译,将代码打成tar包。

6.2Linux命令终端,运行HDFS的命令,将待处理的数据文件放到HDFS上。这时候,NameNode节点会负责将文件分割成块,分散存储在各个DataNode节点上。

6.3Hadoop集群运行的时候,每隔一定时间,SecondaryNameNode会将NameNode上的数据进行合并处理。


7.在一个Linux终端执行Hadoop命令,如"./bin/hadoopjar hadoop-examples-1.2.1.jar wordcount readme.txtoutput"。在Hadoop运行这个命令的时候,这个Linux终端就是一个”客户端”,它发的这个命令就是在“提交MapReduce作业”。


8.客户端在做什么

8.1客户端向JobTracker节点申请一个作业ID

8.2检查作业的输出目录。如果目录没指定或者已存在,客户端会打印错误信息,然后退出。

8.3根据InputFormat,将输入的数据格式进行分割,也就是分割成若干个InputSplit。如果出错会退出。

8.4Mapreduce程序的jar包,配置文件,InputSplit信息都复制到HDFS的一个目录,这个目录名是作业ID

8.5通知JobTracker执行作业。至此,提交作业完毕。

8.6客户端提交了作业之后,每秒会查询一次作业执行到了什么状态,如果有变化,就在冲端上打印出来,以便大家看到进度。


9.JobTracker在做什么

9.1客户端告诉JobTracker去执行作业。

9.2JobTracker将作业放到一个队列。

9.3作业调度器对作业进行初始化,它取出InputSplit信息,为每个InputSplit创建一个Map任务,根据map.reduce.reduce参数创建若干个Reduce任务。

9.4Hadoop集群启动后,JobTracker从始至终一直接收所有TaskTracker发送过来的心跳。如果某个心跳附带的信息说这个TaskTracker是空闲的,就发一个新任务给这个TaskTracker去做。

9.5JobTracker根据心跳,将作业和各种任务的执行进度计算出来。如果客户端查询,就将这些信息返回给它。

9.6JobTracker根据心跳,处理各种执行失败问题。


10.TaskTracker在做什么

10.1Hadoop集群启动后,TaskTracker定期向JobTracker发送“心跳”。心跳附带的信息会告诉JobTracer,现在TaskTracker的状态是什么,是否可以运行新任务,是否在忙碌状态。

10.2如果TaskTracker可以运行新任务,那么,JobTracer会在心跳的返回值里给TaskTracker分配一个新任务。

10.3TaskTracker接到新任务,将这个任务所在的作业的jar文件以及所有需要处理的数据文件从JobTrackerHDFS复制到本地磁盘上。

10.4TaskTracker创建一个TasckRunner实例运行这个任务。每隔一段是时间,将任务执行的进度通过心跳发送给JobTracker

10.5任务运行的时候,处理各种失败问题。

© 著作权归作者所有

brian_2017
粉丝 3
博文 61
码字总数 145216
作品 0
私信 提问
【电子书】Hadoop实战手册 (样章第一章)

Hadoop实战手册 [美] Jonathan R. Owens,Jon Lentz,Brian Femiano 著; 傅杰,赵磊,卢学裕 译 内容简介   这是一本Hadoop实用手册,主要针对实际问题给出相应的解决方案。《Hadoop实战手...

dwf07223
2018/06/28
0
0
大数据经典学习路线(及供参考)之 一

1.Linux基础和分布式集群技术 学完此阶段可掌握的核心能力: 熟练使用Linux,熟练安装Linux上的软件,了解熟悉负载均衡、高可靠等集群相关概念,搭建互联网高并发、高可靠的服务架构; 学完此...

柯西带你学编程
2018/05/22
0
0
Apache Hadoop 入门教程第三章

免密码 ssh 设置 现在确认能否不输入口令就用 ssh 登录 localhost: $ ssh localhost 1 如果不输入口令就无法用 ssh 登陆 localhost,执行下面的命令: $ ssh-keygen -t rsa -P '' -f ~/.ssh/...

哈斗篷
2018/05/10
0
0
阿里云 E-MapReduce产品优势及使用场景

E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 产品优势: 与自建集...

凹凹凸曼
2018/09/12
0
0
什么是hadoop大数据?我又为什么要写这篇文章?

点击链接 https://my.oschina.net/ijj/blog 关注我的博客。学习更多hadoop知识。 这些天,有很多人咨询我大数据相关的一些信息,觉得大数据再未来会是一个朝阳行业,希望能尽早学会、入行,借...

隐姓埋名啊
2017/03/16
531
1

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.4K
15
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
41
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部