- 浏览: 306415 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (165)
- hadoop (47)
- linux (11)
- nutch (7)
- hbase (7)
- solr (4)
- zookeeper (4)
- J2EE (1)
- jquery (3)
- java (17)
- mysql (14)
- perl (2)
- compass (4)
- suse (2)
- memcache (1)
- as (1)
- roller (1)
- web (7)
- MongoDB (8)
- struts2 (3)
- lucene (2)
- 算法 (4)
- 中文分词 (3)
- hive (17)
- noIT (1)
- 中间件 (2)
- maven (2)
- sd (0)
- php (2)
- asdf (0)
- kerberos 安装 (1)
- git (1)
- osgi (1)
- impala (1)
- book (1)
- python 安装 科学计算包 (1)
最新评论
-
dandongsoft:
你写的不好用啊
solr 同义词搜索 -
黎明lm:
meifangzi 写道楼主真厉害 都分析源码了 用了很久. ...
hadoop 源码分析(二) jobClient 通过RPC 代理提交作业到JobTracker -
meifangzi:
楼主真厉害 都分析源码了
hadoop 源码分析(二) jobClient 通过RPC 代理提交作业到JobTracker -
zhdkn:
顶一个,最近也在学习设计模式,发现一个问题,如果老是看别人的博 ...
Java观察者模式(Observer)详解及应用 -
lvwenwen:
木南飘香 写道
高并发网站的架构
启动 JobTracker
1. 进入main方法:
3.startTracker()方法中
2. JobTracker()构造方法中初始化信息
(1) static constants 变量
(2) 加载调度器 默认为FIFO 调度
/
taskScheduler 默认的执行类为JobQueueTaskScheduler ,当启动JobTracker 的时候 调用了 tracker.offerService();该方法执行了父类的 start()方法.该start()方法为 JobQueueTaskScheduler 的start方法:
在这个方法中调用了addJobInProgressListener()将lister 加入到了 jobTracker中,这个过程很绕,可通过下面的流程图梳理清楚
3. 启动jettyServer
JobTracker 提交job
1. jobClient()通过代理 调用JobTracker的submit方法提交job
2. submitJob方法中 调用了 addJob()将job添加到job队列中,等待执行
3. addJob方法:
1. 进入main方法:
//执行startTracker 方法 JobTracker tracker = startTracker(new JobConf()); //执行offerService()方法 tracker.offerService();
3.startTracker()方法中
// new JobTracker 方法 result = new JobTracker(conf, identifier); result.taskScheduler.setTaskTrackerManager(result);
2. JobTracker()构造方法中初始化信息
(1) static constants 变量
(2) 加载调度器 默认为FIFO 调度
/
/ Create the scheduler Class<? extends TaskScheduler> schedulerClass = conf.getClass("mapred.jobtracker.taskScheduler", JobQueueTaskScheduler.class, TaskScheduler.class); taskScheduler=(TaskScheduler)ReflectionUtils.newInstance(schedulerClass, conf);
taskScheduler 默认的执行类为JobQueueTaskScheduler ,当启动JobTracker 的时候 调用了 tracker.offerService();该方法执行了父类的 start()方法.该start()方法为 JobQueueTaskScheduler 的start方法:
@Override public synchronized void start() throws IOException { super.start(); taskTrackerManager.addJobInProgressListener(jobQueueJobInProgressListener); eagerTaskInitializationListener.setTaskTrackerManager(taskTrackerManager); eagerTaskInitializationListener.start(); taskTrackerManager.addJobInProgressListener( eagerTaskInitializationListener); }
在这个方法中调用了addJobInProgressListener()将lister 加入到了 jobTracker中,这个过程很绕,可通过下面的流程图梳理清楚
3. 启动jettyServer
infoServer.addServlet("reducegraph", "/taskgraph", TaskGraphServlet.class); infoServer.start();
JobTracker 提交job
1. jobClient()通过代理 调用JobTracker的submit方法提交job
2. submitJob方法中 调用了 addJob()将job添加到job队列中,等待执行
3. addJob方法:
private synchronized JobStatus addJob(JobID jobId, JobInProgress job) throws IOException { totalSubmissions++; synchronized (jobs) { synchronized (taskScheduler) { jobs.put(job.getProfile().getJobID(), job); // jobInProgressListeners list 在start jobTracker 的时候,在JobQueueTaskScheduler 的start方法中初始化加入了两个listener : eagerTaskInitializationListener 和jobQueueJobInProgressListener for (JobInProgressListener listener : jobInProgressListeners) { listener.jobAdded(job); } } } myInstrumentation.submitJob(job.getJobConf(), jobId); job.getQueueMetrics().submitJob(job.getJobConf(), jobId); LOG.info("Job " + jobId + " added successfully for user '" + job.getJobConf().getUser() + "' to queue '" + job.getJobConf().getQueueName() + "'"); AuditLogger.logSuccess(job.getUser(), Operation.SUBMIT_JOB.name(), jobId.toString()); return job.getStatus(); }
发表评论
-
博客地址变更
2013-08-16 10:29 1220all the guys of visiting the bl ... -
hadoop 源码分析(六)hadoop taskTracker 生成map 和reduce任务流程
2013-04-09 17:36 2749taskTracker 生成map reduce ... -
hadoop 源码分析(六)hadoop taskTracker 生成map 和reduce任务流程
2013-04-09 17:33 0taskTracker 生成map reduce ... -
hadoop 源码分析(五)hadoop 任务调度TaskScheduler
2013-04-01 11:07 3947hadoop mapreduce 之所有能够实现job的运行 ... -
hadoop 源码分析(三) hadoop RPC 机制
2013-03-28 15:13 2415Hadoop 通信机制采用自己编写的RPC. 相比于 ... -
hadoop 源码分析(二) jobClient 通过RPC 代理提交作业到JobTracker
2013-03-27 12:57 38021.JobClient 客户端类 通过 ... -
hadoop 源码分析(一) jobClient 提交到JobTracker
2013-03-26 13:41 3619Hadoop 用了2年多了.从最初一起创业的 ... -
RHadoop 安装教程
2013-02-01 17:18 1630RHadoop 环境安装 硬件: centos6 ... -
pig
2012-11-16 19:28 1218转自:http://www.hadoopor.c ... -
hadoop与hive的映射
2012-11-15 10:21 2375hadoop与hive的映射 ... -
hadoop distcp
2012-07-31 10:00 2830hadoop distcp 使用:distcp ... -
MapReduce中Mapper类和Reducer类4函数解析
2012-07-20 18:05 2130MapReduce中Mapper类和Reducer类4函数解析 ... -
hadoop metrics 各参数解释
2012-07-17 18:59 1517hadoop metrics 各参数解释 研究使用hadoo ... -
Hbase几种数据入库(load)方式比较
2012-07-17 14:52 13881. 预先生成HFile入库 这个地址有详细的说明http:/ ... -
Hadoop客户端环境配置
2012-05-11 14:59 1777Hadoop客户端环境配置 1. 安装客户端(通过端用户可以 ... -
hadoop 通过distcp进行并行复制
2012-05-02 15:25 2483通过distcp进行并行复制 前面的HDFS访问模型都集中于 ... -
linux crontab 执行hadoop脚本 关于hadoop环境变量引入
2012-04-10 12:11 0crontab问题 crontab的特点:PATH不全和无终 ... -
hadoop fs 命令封装
2012-04-09 09:39 0hadoop fs 命令封装 #!/usr/bin/env ... -
map-reduce编程核心问题
2012-02-22 13:38 12801-How do we break up a large p ... -
Hadoop Archives
2012-02-17 14:25 0Hadoop Archives 什么是Hadoop arch ...
相关推荐
`waitForCompletion(true)`会阻塞直到Job完成,而`submit()`方法则是异步的,它立即返回并将Job添加到队列等待执行。为了跟踪Job的状态,我们使用`isComplete()`检查每个Job是否已经完成: ```java boolean bln1 = ...
- 作业调度:JobTracker接收到作业后,将其加入作业队列,并根据数据分布情况和资源状况创建MapTask和ReduceTask。 - 任务分配:TaskTracker定期通过RPC向JobTracker发送心跳,表明自己可执行任务。JobTracker根据...
### 大数据技术分享:Hadoop运行原理分析 #### 一、概论 Hadoop作为一个开源框架,主要用于处理大规模的数据集。它通过提供一个高效、可靠、可扩展的基础架构来支持分布式数据处理任务。Hadoop的核心组件包括HDFS...
本文将详细介绍Hadoop中的权限管理机制,包括服务级别授权(Service Level Authorization)、作业队列访问控制(Access Control on Job Queues)以及文件系统权限控制(DFS Permission)。 #### 二、服务级别授权...
1. YARN(Yet Another Resource Negotiator):Hadoop 2.0引入了YARN作为新的资源管理框架,取代了原有的JobTracker,使得集群资源分配和任务调度更加高效和灵活。 2. HDFS HA(High Availability):为了解决...
Apache Hadoop 是一个开源框架,专门用于处理和存储大规模数据集。这个技术参考手册深入剖析了Hadoop的核心组件,包括YARN(Yet Another Resource Negotiator)、MapReduce以及Hadoop分布式文件系统(HDFS)。让我们...
- `-libjars <comma-separated list of jars>`:指定一系列JAR文件以逗号分隔,这些JAR文件将被添加到类路径中。同样,此选项也仅适用于`job`命令。 - `-archives <comma-separated list of archives>`:指定一系列...
6. **JobTracker 初始化作业**:一旦有可用资源,`JobTracker` 会将作业从队列中取出并进行初始化。它会读取 HDFS 上的 `job.split` 文件,并根据 split 信息进行任务分配等操作。 7. **TaskTracker 获取 Task**:`...
- **JobTracker**:主要负责调度任务到 TaskTracker 上执行,并监控任务状态。 - **TaskTracker**:负责执行 Map 和 Reduce 任务,并将结果返回给 JobTracker。 #### 2. 配置文件 Hadoop 的配置通过以下两个主要...
在 Hadoop 1.x 版本中,Job 的提交流程主要包括以下几个关键步骤: 1. **启动 JobClient 实例**:MapReduce 程序通过 `runJob()` 方法启动一个 `JobClient` 实例。 2. **获取 Job ID**:`JobClient` 通过调用 `...
- **提交作业**: 通过 JobClient 提交作业,JobTracker 会进行一系列操作,包括检查输入输出路径的有效性、将 job 的 jar 文件复制到 HDFS 等。 ##### 3.3 作业初始化 - **作业调度**: JobTracker 将作业加入队列,...
- 用户提交一个Job到Hadoop集群,JobTracker(在YARN中为ResourceManager)会分配TaskTracker(YARN中的NodeManager)来执行Map和Reduce任务。 - JobTracker监控作业进度,重新调度失败的任务,并协调数据的交换。...
YARN的工作机制是Hadoop 2.x版本引入的重大改进,旨在解决早期Hadoop 1.x中MapReduce模型的局限性,尤其是单一JobTracker的性能瓶颈问题。以下是对YARN工作机制的详细解析: 1. **应用程序提交**:当一个MapReduce...
在Hadoop中,例如,`mapreduce.job.counters.max`可以限制任务计数器的数量,而这些计数器在内部可能使用哈希表实现以提高查找效率。另外,网络连接池可能也使用哈希表来存储和管理连接,以优化性能和减少资源消耗。...
例如,在Hadoop生态系统中,JobTracker(已被ResourceManager取代)就是这样的角色,负责管理和调度MapReduce任务。 总之,JobTrackerAPI是实现分布式任务管理和调度的关键组件,通过C#实现,可以充分利用.NET框架...