Hadoop执行路径深入剖析

开发 架构 Hadoop
Hadoop你是否熟悉,这里就向大家介绍一下Hadoop的执行路径方面的知识,希望通过本文的介绍大家对Hadoop的执行路径有一定的认识。

本节和大家一起学习一下Hadoop的相关知识,主要包括Hadoop概念介绍和Hadoop执行路径两部分内容,欢迎大家一起来学习Hadoop。下面是具体介绍。

Hadoop简介

一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。
  简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。
  Hadoop实现了一个分布式文件系统(HadoopDistributedFileSystem),简称HDFS。HDFS有着高容错性(fault-tolerent)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(largedataset)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streamingaccess)文件系统中的数据。
 

Hadoop执行路径。

通常我们在自己编写的Job代码中会调用JobClient.runJob(job)方法来启动任务的真正执行,我们的介绍就从这个命令开始(在调用这个api之前,我们已经设计并且在程序中指定好自己的mapper函数和reducer函数了)

1,JobClient.runJob(job)静态方法会实例化一个JobClient实例,然后用该实例的submitJob(job)方法向master提交作业,此方法返回一个RunningJob对象,用来跟踪作业的状态,作业提交完毕,JobClient会轮训作业的进度

2,submitJob内部是通过JobSubmitter的submitJobInternal(job)完成实质性的作业提交。submitJobInternal会先向haodoop文件系统上传3个文件:job.jar,job.split,job.xml这三个文件位置由mapreduce系统路径mapred.system.dir属性决定,写完这三个文件之后,此方法使用RPC调用master节点的JobTracker.submitJob(job)方法。

3,JobTracker收到JobClient提交的作业后,即在JobTracker.submitJob()方法中,首先生成一个JobInProgress对象,此对象代表一个作业,它的作用是维护这道作业的所有信息,包括作业剖析JobProfile和JobStatus,并登记所有Task进任务表中。随后JobTracker会将此JobInProgress对象通过listener.jobAdd(job)方法加入作业调度队列,并用一个成员Jobs来表示所有的作业

4,Hadoop默认的调度器是FIFO的JobQueueTaskScheduler。它有2个成员变量JobQueueJobInProgressListener和eagerTaskInitializationListener。后者负责任务初始化。作法为:listerner初始化时,开启JobInitThread线程,当作业通过JobAdd(job)加入初始化队列jobInitQueue时,根据作业优先级排序,之后该线程调用JobInProgress的initTasks()来初始化所有的任务。

5,initTasks()过程比较复杂,在这里面会根据原先对输入任务的分解,来创建对应数目的Map执行管理对象TaskInProgress。

之后即是TaskTracker请求任务的过程,请看下节Hadoop介绍。

【编辑推荐】

  1. 学习笔记 Hadoop组成详解
  2. Hadoop开源已经实现
  3. Hadoop集群与Hadoop性能优化
  4. Hadoop 从Yahoo向Google的技术转折
  5. Yahoo公布Hadoop的源代码
责任编辑:佚名 来源: csdn.net
相关推荐

2010-06-03 13:08:51

2010-06-04 18:29:02

Hadoop单机模式

2023-03-17 08:28:28

Golang切换目录

2009-09-27 17:13:36

Hibernate V

2009-07-06 10:44:45

JSP charset

2011-06-03 13:48:18

JavaScript重构

2010-05-25 12:59:00

Subversion

2009-09-14 15:12:40

LINQ to XML

2009-09-25 09:36:55

Hibernate核心

2010-05-27 10:23:01

SVN文档

2010-06-30 16:00:01

FTP协议

2010-08-04 13:52:53

Flex事件机制

2010-05-27 12:58:07

SVN升级

2010-06-12 14:35:46

UML对象图

2009-09-28 14:54:33

Hibernate映射

2010-06-17 14:35:03

设计模式 UML

2010-01-26 17:53:30

Android代码结构

2011-07-11 17:38:42

JAVA

2010-07-07 10:23:31

UML建模

2010-06-07 14:55:32

nutch+hadoo
点赞
收藏

51CTO技术栈公众号