《YARN源码分析一》client 任务提交准备阶段
创始人
2024-11-15 10:38:58
0

流程

第一步:上传jar 、配置文件、split 文件

提交任务的文件到hdfs 路径:本地配置获取: yarn.app.mapreduce.am.staging-dir (默认:/tmp/hadoop-yarn/staging)
/tmp/hadoop-yarn/staging/$user/.staging

/tmp/hadoop-yarn/staging/hdfs/.staging/job_1722390700850_0001/job.split         /tmp/hadoop-yarn/staging/hdfs/.staging/job_1722390700850_0001/job.splitmetainfo /tmp/hadoop-yarn/staging/hdfs/.staging/job_1722390700850_0001/job.xml 

第二步:构建ApplicationSubmissionContext

在这里插入图片描述
主要是am启动资源的准备:
在这里插入图片描述

  • 需要下载到本地资源,第一步上传的文件split、job.xml、任务运行的jar
  • token 信息
  • 环境变量classpath
CLASSPATH=%PWD% ... %HADOOP_CONF_DIR% %HADOOP_COMMON_HOME%/share/hadoop/common/* %HADOOP_COMMON_HOME%/share/hadoop/common/lib/* %HADOOP_HDFS_HOME%/share/hadoop/hdfs/* %HADOOP_HDFS_HOME%/share/hadoop/hdfs/lib/* %HADOOP_YARN_HOME%/share/hadoop/yarn/* %HADOOP_YARN_HOME%/share/hadoop/yarn/lib/* %HADOOP_MAPRED_HOME%\share\hadoop\mapreduce\* %HADOOP_MAPRED_HOME%\share\hadoop\mapreduce\lib\* job.jar/* job.jar/classes/ job.jar/lib/* %PWD%/* 

可以设置 mapreduce.job.user.classpath.first = true ,在生成classpath ,会把计算框架的jar ,拼接在后面。
%HADOOP_CONF_DIR%
%HADOOP_COMMON_HOME%/share/hadoop/common/*
%HADOOP_COMMON_HOME%/share/hadoop/common/lib/*
%HADOOP_HDFS_HOME%/share/hadoop/hdfs/*
%HADOOP_HDFS_HOME%/share/hadoop/hdfs/lib/*
%HADOOP_YARN_HOME%/share/hadoop/yarn/*
%HADOOP_YARN_HOME%/share/hadoop/yarn/lib/*
%HADOOP_MAPRED_HOME%\share\hadoop\mapreduce*
%HADOOP_MAPRED_HOME%\share\hadoop\mapreduce\lib*

MRApps.java public static void setClasspath(Map environment,       Configuration conf) throws IOException {     boolean userClassesTakesPrecedence =        conf.getBoolean(MRJobConfig.MAPREDUCE_JOB_USER_CLASSPATH_FIRST, false);      String classpathEnvVar =       conf.getBoolean(MRJobConfig.MAPREDUCE_JOB_CLASSLOADER, false)         ? Environment.APP_CLASSPATH.name() : Environment.CLASSPATH.name();      MRApps.addToEnvironment(environment,       classpathEnvVar, crossPlatformifyMREnv(conf, Environment.PWD), conf);     if (!userClassesTakesPrecedence) {       MRApps.setMRFrameworkClasspath(environment, conf); // 拼接计算框架的环境变量的jar      }     /*      * We use "*" for the name of the JOB_JAR instead of MRJobConfig.JOB_JAR for      * the case where the job jar is not necessarily named "job.jar". This can      * happen, for example, when the job is leveraging a resource from the YARN      * shared cache.      */     MRApps.addToEnvironment(         environment,         classpathEnvVar,         MRJobConfig.JOB_JAR + Path.SEPARATOR + "*", conf);     MRApps.addToEnvironment(         environment,         classpathEnvVar,         MRJobConfig.JOB_JAR + Path.SEPARATOR + "classes" + Path.SEPARATOR, conf);     MRApps.addToEnvironment(         environment,         classpathEnvVar,         MRJobConfig.JOB_JAR + Path.SEPARATOR + "lib" + Path.SEPARATOR + "*", conf);     MRApps.addToEnvironment(         environment,         classpathEnvVar,         crossPlatformifyMREnv(conf, Environment.PWD) + Path.SEPARATOR + "*", conf);     // a * in the classpath will only find a .jar, so we need to filter out     // all .jars and add everything else     addToClasspathIfNotJar(JobContextImpl.getFileClassPaths(conf),         JobContextImpl.getCacheFiles(conf),         conf,         environment, classpathEnvVar);     addToClasspathIfNotJar(JobContextImpl.getArchiveClassPaths(conf),         JobContextImpl.getCacheArchives(conf),         conf,         environment, classpathEnvVar);     if (userClassesTakesPrecedence) {       MRApps.setMRFrameworkClasspath(environment, conf);     }   } 
  • 启动AM命令
%JAVA_HOME%/bin/java -Djava.io.tmpdir=%PWD%/tmp -Dlog4j.configuration=container-log4j.properties -Dyarn.app.container.log.dir= -Dyarn.app.container.log.filesize=0 -Dhadoop.root.logger=info,CLA -Dhadoop.root.logfile=syslog   -Dfile.encoding=UTF-8  org.apache.hadoop.mapreduce.v2.app.MRAppMaster 1>/stdout 2>/stderr  
  • AM 需要的启动资源
{AllocationRequestId: -1, Priority: 0, Capability: , # Containers: 1, Location: *, Relax Locality: true, Execution Type Request: null, Node Label Expression: null} 

第三步、提交RM

远程调用 ClientRMService.submitApplication ,ClientRMService 默认8032 端口RPCServer ,client 端服务接口,实现ApplicationClientProtocol 协议。

ApplicationClientProtocol : getNewApplication submitApplication failApplicationAttempt forceKillApplication getClusterMetrics getClusterNodes getQueueInfo getQueueUserAcls moveApplicationAcrossQueues getNewReservation submitReservation updateReservation deleteReservation listReservations getNodeToLabels getLabelsToNodes getClusterNodeLabels updateApplicationPriority signalToContainer updateApplicationTimeouts getResourceProfiles getResourceProfile getResourceTypeInfo getAttributesToNodes getClusterNodeAttributes getNodesToAttributes 

相关内容

热门资讯

windows和安卓系统的关系... 你有没有想过,为什么你的手机和电脑有时候会像好朋友一样,互相配合得天衣无缝?其实,这背后有一个大大的...
安卓11怎么降级系统,轻松还原... 你有没有发现,安卓11系统虽然功能强大,但有时候也会有点小闹心呢?比如,某些应用不支持,或者系统运行...
正版授权!游戏推荐斗牛房卡出售... 今 日消息,天蝎大厅房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更新,简单...
推荐一款!金花房卡批发女娲大厅... 女娲大厅房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根...
安卓系统误删无法开机,紧急修复... 手机里的照片、联系人、重要文件,说没就没了!最近,身边的朋友纷纷向我抱怨,他们的安卓手机因为误删数据...
玩家攻略,牛牛充值房卡新大圣/... 玩家攻略,牛牛充值房卡新大圣/新道游/微信链接房卡购买渠道新大圣/新道游是一款非常受欢迎的游戏,咨询...
一分钟了解!牛牛房卡出售红桃众... 红桃众娱是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
IA解析/金花房卡批发玄灵大厅... IA解析/金花房卡批发玄灵大厅/微信链接房卡最低价格Sa9Ix苹果iPhone 17手机即将进入量产...
我来教你/牛牛房卡代理新518... 新518互娱房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3...
正规平台有哪些,金花房卡代理零... 微信游戏中心:九天大厅房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程...
荣耀magic是安卓系统吗,探... 你有没有听说过荣耀Magic这款手机?最近它可是手机圈里的热门话题呢!很多人都在问,荣耀Magic是...
头条推荐!游戏推荐牛牛房卡出售... 微信游戏中心:海豚大厅房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程...
正版授权!斗牛房卡充值新九天大... 您好!微信新九天大厅大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(新九天大厅)大厅介...
头条推荐!牛牛房卡制作链接玄武... 今 日消息,玄武大厅房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更新,简单...
科技实测!牛牛房卡官网昆仑大厅... 微信游戏中心:昆仑大厅房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程...
IA解析/斗牛房卡充值宝马系列... 宝马系列/随意玩房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 ...
正规平台有哪些,游戏推荐牛牛房... 微信游戏中心:新蜜瓜大厅/随意玩房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心...
IA解析/金花房卡制作链接新天... 新天王/皇豪互众是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:33...
推荐一款!牛牛房卡制作链接上游... 推荐一款!牛牛房卡制作链接上游联盟/正规房卡平台有哪些Sa9Ix苹果iPhone 17手机即将进入量...
我来教你/如何购买金花房卡鸿狐... 我来教你/如何购买金花房卡鸿狐大厅/房卡购买批发价格鸿狐大厅是一款非常受欢迎的游戏,咨询房/卡添加微...