YARN DistributedShell源码分析与修改(5)

在ApplicationMaster初试化时,增加对container_files和container_archives两个参数指定值的支持。即:初始化container_files和container_archives指定的运行资源在HDFS上的信息。

在container运行时,从HDFS上加载container_files和container_archives指定的资源。

对ApplicationMaster源码修改如下:

变量

增加变量,用于保存container_files和container_archives指定的运行资源在HDFS上的信息。

// 增加container_files、container_archives选项值变量 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ private ArrayList<DshellFile> scistorJars = new ArrayList(); private ArrayList<DshellArchive> scistorArchives = new ArrayList(); // ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

ApplicationMaster的init方法

初始化container_files和container_archives两个参数指定值信息。

// 遍历envs,把所有的jars、archivers的HDFS路径,时间戳,LEN全部保存到jarPaths对象数组中 ↓↓↓↓↓↓↓↓↓↓ for (String key : envs.keySet()) { if (key.contains(DshellDSConstants.DISTRIBUTEDJARLOCATION)) { DshellFile scistorJar = new DshellFile(); scistorJar.setJarPath((String) envs.get(key)); String num = key .split(DshellDSConstants.DISTRIBUTEDJARLOCATION)[1]; scistorJar.setTimestamp(Long.valueOf(Long.parseLong( (String) envs .get(DshellDSConstants.DISTRIBUTEDJARTIMESTAMP + num)))); scistorJar.setSize(Long.valueOf(Long.parseLong( (String) envs .get(DshellDSConstants.DISTRIBUTEDJARLEN + num)))); this.scistorJars.add(scistorJar); } } for (String key : envs.keySet()) { if (key.contains(DshellDSConstants.DISTRIBUTEDARCHIVELOCATION)) { DshellArchive scistorArchive = new DshellArchive(); scistorArchive.setArchivePath((String) envs.get(key)); String num = key .split(DshellDSConstants.DISTRIBUTEDARCHIVELOCATION)[1]; scistorArchive.setTimestamp(Long.valueOf(Long.parseLong( (String) envs .get(DshellDSConstants.DISTRIBUTEDARCHIVETIMESTAMP + num)))); scistorArchive.setSize(Long.valueOf(Long.parseLong( (String) envs .get(DshellDSConstants.DISTRIBUTEDARCHIVELEN + num)))); this.scistorArchives.add(scistorArchive); } } // ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

LaunchContainerRunnable的run方法(container线程的run方法)

从HDFS上加载container_files和container_archives指定的资源。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/cb101bc55df5e3fc8538c314a0022fe0.html