1、通过hadoop -jar命令提交一个job,并且解析提交的各个参数,保存对应的属性或内容到configuration;
优化点:这里可以通过修改GenerticOptionPaser类,来解析自定义的属性,比如public jar包更新等。
2、调用waitForCompletion提交job并轮询job运行状态;
优化点:这里的job状态轮询在ResourceManager返回app finish后回去查询historyserver,查询historyserver失败的话会默认重试三次,由于historyserver是单点并且无状态的,可以启用备用节点,当主节点挂掉或阻塞超时,就去查询备用节点,从而实现historyserver的高可用。
3、在提交job前根据configuration属性构建job提交时需要的ApplicationSubmissionContext,其中比较重要的就是LocalResource资源的封装。这里会包含job运行时需要的配置文件及依赖的jar包在hdfs上的路径等。其中jar包属性分为application、private、public三种,这些资源在container运行时都会去hdfs上下载,不同属性的jar包处理方式有所不同,具体可参照下一篇文章。
优化点:支持public jar包更新,hadoop默认的客户端貌似还不支持提交public类型的jar包,可以通过修改客户端job提交流程来实现,最终效果就是能减少nodemanager端container下载jar包的次数(本地缓存),从而减少namenode的rpc请求压力,同时提高mapreduce job运行速度
4、调用YarnClientImpl.submitApplication提交job,其实现是通过调用rpc服务来提交的,具体对应代码为:ApplicationClientProtocolPBServiceImpl.submitApplication(),这样就完成了客户端job提交;
5、ResourceManager对应的服务端响应方法为:ClientRMService.submitApplication();
整个流程如下图所示:
下一篇:http://rainforc.iteye.com/blog/2286335
相关推荐
4. **生成JobConf文件**:`Job`会将所有配置信息写入一个`JobConf`文件,这是Job运行所必需的配置文件,包含了作业的所有元数据。 5. **创建JobHistory文件**:为了记录作业的运行历史,MapReduce会在本地创建一个...
- 使用oozie客户端命令提交作业,如`oozie job -submit -config job.properties`。 **Oozie任务定义** 1. **action节点**:工作流中的基本单元,可以是Hadoop MapReduce、Pig、Hive、Sqoop等作业。 2. **start...
具体表现为,在客户端录入中文数据时能够正常显示,但提交后再次查询时中文会显示为乱码(如“???”)。这一现象主要是由于Oracle服务端使用的字符集不支持中文所导致。 #### 查看服务端字符集的方法 可以通过以下...
1. **客户端提交作业**:客户端调用`job.waitForCompletion`,提交MapReduce作业到集群。 2. **申请Application**:客户端向RM申请一个唯一的作业ID和资源提交路径。 3. **资源提交**:客户端将作业的JAR包、切片...
1. **客户端提交作业** - 客户端(Client)向YARN提交一个作业(job),请求ResourceManager分配资源。 - ResourceManager收到请求后,会开启一个Container,并在其中运行一个ApplicationMaster。 2. **...
* 客户端提交Job * JobManager生成优化后的执行计划 * TaskManager部署Task * TaskManager与上游建立Netty连接,接收数据并处理 在YARN模式下,Flink的作业执行流程还包括以下步骤: * 向YARN申请资源 * 启动...
09-yarn的job提交流程.avi 第四天 常见mr算法实现和shuffle的机制 01-复习.avi 02-hadoop中的序列化机制.avi 03-流量求和mr程序开发.avi 04-hadoop的自定义排序实现.avi 05-mr程序中自定义分组的实现.avi
6. **任务执行**:MRAppMaster 启动后,会从 HDFS 加载客户端提交的资源(如 `job.split`、`job.xml`、JAR 包等),并执行 Map 和 Reduce 任务。 通过以上两个版本的详细对比分析,我们可以看出 Hadoop 2.x 版本...
MapReduce1 的运行调度流程如下:首先客户端启动提交一个作业,向 JobTracker 请求一个 Job ID,将运行作业所需要的资源文件复制到 HDFS 上,包括 MapReduce 程序打包的 JAR 文件、配置文件和 Job 配置信息。...
- **客户端提交Job**:向ResourceManager申请资源,启动ApplicationMaster。 - **ApplicationMaster启动JobManager**:分析作业图,转化为执行图。 - **JobManager申请资源**:ResourceManager分配container启动...
09-yarn的job提交流程.avi 第四天 常见mr算法实现和shuffle的机制 01-复习.avi 02-hadoop中的序列化机制.avi 03-流量求和mr程序开发.avi 04-hadoop的自定义排序实现.avi 05-mr程序中自定义分组的实现.avi ...
总的来说,Windows上提交MapReduce任务涉及到Hadoop客户端的配置、任务代码的编写、任务参数的设置以及JAR包的打包和提交。在这一过程中,理解和熟悉Hadoop的生态系统,以及MapReduce的工作原理是至关重要的。对于...
在IT领域,作业车间调度(Job Shop Scheduling)是运筹学的一个经典问题,通常涉及到在有限的资源下优化生产流程的时间安排。在这个项目中,可能使用了算法或数据结构来解决这个问题,可能是通过模拟或近似方法。 ...
基本概念 MapReduce采用了Master/Slave架构,包括一个Master...作业运行流程 1.在客户端启动一个作业。 2.向JobTracker请求一个Job ID。 3.将运行作业所需要的资源文件复制到HDFS上,包括MapReduce程序打包的JAR文件、
- 客户端需要与博客园服务器通信,获取和提交数据。这通常通过网络库实现,如Retrofit、Volley或OkHttp,它们简化了HTTP请求的处理。源码会包含API接口定义和响应解析逻辑。 5. **数据持久化**: - 可能使用...
- **任务所需要素准备**:包括任务运行所需的 jar 文件(封装为 `job.jar`)、输入分片信息 (`job.split`) 和配置文件 (`job.xml`) 的写入。 - **Jar 文件上传**:将 `-libjars` 命令行指定的 jar 文件上传到 HDFS...
#### 一、客户端提交任务 在Hadoop MapReduce框架中,客户端的任务提交是整个MapReduce作业启动的关键步骤。这一过程主要由`JobClient`类中的`runJob(JobConf job)`静态方法完成。 ##### 1.1 提交任务的具体步骤 ...
- **作业提交**:客户端将作业提交到JobTracker,包括作业的JAR包、配置信息、输入数据划分等。 - **map任务分配和执行**:JobTracker根据输入数据大小将数据划分为Split,并分配给TaskTracker执行Map任务。 - **...
- **作业管理器(Job Manager)**:负责接收客户端提交的作业,将其分解为多个任务,并将任务分配给Worker节点执行。 - **工作节点(Worker)**:实际执行计算任务的机器。 #### 二、集群搭建 ##### 2.1 License...