花了许多功夫把Hadoop的mapreduce实现过了一遍,基本线索理清楚了:
1. 任务的运行时TaskTracker通过heartbeat取得
2. TaskTracker得到hearbeatresponse之后,会根据封装在response里的action来决定行为
3. 如果是launchaction的话,调用TasklLauncher,在startNewTasks中的localizeJob调用launchTaskForJob然后再TaskInProgress中launchTask让runner.start(); - 这里面的startNewTasks是在线程中的run方法中,而TaskLauncher的notifyall会把线程唤醒:
public void addToTaskQueue(LaunchTaskAction action) {
synchronized (tasksToLaunch) {
TaskInProgress tip = registerTask(action, this);
tasksToLaunch.add(tip);
tasksToLaunch.notifyAll();
}
}
而这个addToTaskQueue方法是在offerService中调用的,这样就整过过程就街上了:
if (action instanceof LaunchTaskAction) {
addToTaskQueue((LaunchTaskAction)action);
} else if (action instanceof CommitTaskAction)
4. 这个时候就回到TaskRunner.run中去launchJVM,当然要把这个JVM的参数构造好,这个JVM就是我们看到map任务运行的JVM
5. 然后JVMRunner会spawn JVM, 这是通过shexe Child这个类来实现的,这个Child的main就是新起的JVM的主函数入口
6.在Child.main中会对任务的类型进行判断,调用相应的MapTask.run和ReduceTask.run
7.这个时候就可以看到mapper.map入口啦,然后就开始执行用户定义的mapper!
所以Child启动以后的log输出和前面TaskTracker的输出不在同一个文件里,因为已经不是一个虚拟机了。
分享到:
相关推荐
Hadoop源码 包含mapred
基于Hadoop图书推荐系统源码+数据库.zip基于Hadoop图书推荐系统源码+数据库.zip基于Hadoop图书推荐系统源码+数据库.zip基于Hadoop图书推荐系统源码+数据库.zip基于Hadoop图书推荐系统源码+数据库.zip基于Hadoop图书...
hadoop mapred_tutorial官方文档
ERROR org.apache.hadoop.mapred.TaskTracker: Can not start task tracker because java.io.IOException: Failed to set permissions of path: \tmp\hadoop-admin \mapred\local\ttprivate to 0700 at org.apache...
《深入剖析Hadoop 2.8.1源码:分布式系统的智慧结晶》 Hadoop,作为开源的大数据处理框架,自2006年诞生以来,一直是大数据领域的重要支柱。其2.8.1版本是Hadoop发展的一个关键节点,为用户提供了更稳定、高效的...
这本书是许多开发者和数据工程师学习Hadoop的首选资料,而附带的源码则为读者提供了更直观的理解途径。在深入探讨Hadoop的知识点时,我们可以从以下几个方面进行: 1. **Hadoop概述**:Hadoop是一个开源的分布式...
使用Eclipse的export功能把所有源码打包,然后把打包后的jar文件拷贝到hadoop集群的$HADOOP_HOME/share/hadoop/mapreduce/lib目录下面。这一步相当重要,否则项目将无法找到相关类。注意,如果搭建的是全分布集群,...
【标题】"实战hadoop中的源码"涵盖了在大数据处理领域深入理解并应用Apache Hadoop的核心技术。Hadoop是开源的分布式计算框架,它允许在大规模集群上存储和处理海量数据。通过研究Hadoop的源码,开发者可以深入了解...
Hadoop源码分析是深入理解Hadoop分布式计算平台原理的起点,通过源码分析,可以更好地掌握Hadoop的工作机制、关键组件的实现方式和内部通信流程。Hadoop项目包括了多个子项目,其中最核心的是HDFS和MapReduce,这两...
本文将基于“Hadoop学习总结和源码分析”这一主题,结合提供的文档资源,深入探讨Hadoop的核心组件HDFS(Hadoop Distributed File System)和MapReduce。 首先,我们从“Hadoop学习总结之一:HDFS简介.doc”开始,...
当你拥有已编译的Hadoop 2.2.2源码时,你可以深入理解其内部工作原理,这对于Java开发者尤其是那些专注于大数据处理的工程师来说,具有极大的学习价值。 首先,让我们关注Hadoop的核心组件:HDFS(Hadoop ...
这个hadoop-3.1.3.tar.gz文件是一个包含了Hadoop 3.1.3版本的源码压缩包,对于理解Hadoop的工作原理、进行二次开发或者定制化配置来说,研究源码是非常重要的。 首先,Hadoop的核心组件包括HDFS(Hadoop ...
本文将深入探讨如何使用Java编程语言来操作Hadoop MapReduce进行基本实践,通过源码分析来理解其核心工作原理和编程模型。 MapReduce的核心思想是将大规模数据集分解成小块,然后在分布式集群上并行处理这些小块,...
- `hadoop/mapreduce`: MapReduce的实现,包括JobTracker、TaskTracker、作业提交和执行机制。 3. `hadoop/yarn`: YARN(Yet Another Resource Negotiator)是Hadoop的资源管理系统,负责任务调度和集群资源管理。 ...
本文将深入探讨在编译Hadoop CDH源码时所需的软件及其重要性。 首先,我们来看“google-snappy-ea660b5”。Snappy是由Google开发的一个高效的数据压缩库,它主要关注的是高速度而非最高压缩率。在Hadoop中,Snappy...
基于Python和大数据hadoop电影分析系统源码+文档说明.zip,本项目是一套98分毕业设计系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业,包含:项目源码、...
Hadoop 2.9.0版本中的mapred-default.xml文件包含了MapReduce作业的配置属性,这些属性定义了MapReduce作业执行过程中的各种行为和参数。下面我们来详细介绍mapred-site.xml文件中的一些关键属性。 1. mapreduce....
例如,通过查看NameNode、DataNode或TaskTracker的日志,结合源码理解异常发生的原因。 9. **社区贡献**:作为一个开源项目,Hadoop有活跃的开发者社区。通过阅读源码,可以学习其他开发者的设计思路和编程技巧,...
源码包含了JobTracker、TaskTracker、Task等核心组件,以及作业提交、任务调度和容错机制的实现。 3. **YARN(Yet Another Resource Negotiator)**:从Hadoop 2.x开始,资源管理从MapReduce中剥离出来,形成了独立...