diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/client/MRClientService.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/client/MRClientService.java index d378b0a7c0..6eb42be9b0 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/client/MRClientService.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/client/MRClientService.java @@ -142,7 +142,9 @@ protected void serviceStart() throws Exception { // running in user-land. webApp = WebApps.$for("mapreduce", AppContext.class, appContext, "ws") - .withHttpPolicy(conf, Policy.HTTP_ONLY).start(new AMWebApp()); + .withHttpPolicy(conf, Policy.HTTP_ONLY) + .withPortRange(conf, MRJobConfig.MR_AM_WEBAPP_PORT_RANGE) + .start(new AMWebApp()); } catch (Exception e) { LOG.error("Webapps failed to start. Ignoring for now:", e); } diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/MRJobConfig.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/MRJobConfig.java index ab48255383..0a4d222f91 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/MRJobConfig.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/MRJobConfig.java @@ -592,7 +592,13 @@ public interface MRJobConfig { */ public static final String MR_AM_JOB_CLIENT_PORT_RANGE = MR_AM_PREFIX + "job.client.port-range"; - + + /** + * Range of ports that the MapReduce AM can use when binding for its webapp. + * Leave blank if you want all possible ports. + */ + String MR_AM_WEBAPP_PORT_RANGE = MR_AM_PREFIX + "webapp.port-range"; + /** Enable blacklisting of nodes in the job.*/ public static final String MR_AM_JOB_NODE_BLACKLISTING_ENABLE = MR_AM_PREFIX + "job.node-blacklisting.enable"; diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/resources/mapred-default.xml b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/resources/mapred-default.xml index a163fbd81b..101aa07e68 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/resources/mapred-default.xml +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/resources/mapred-default.xml @@ -1388,6 +1388,14 @@ For example 50000-50050,50100-50200 + + yarn.app.mapreduce.am.webapp.port-range + + Range of ports that the MapReduce AM can use for its webapp when binding. + Leave blank if you want all possible ports. + For example 50000-50050,50100-50200 + + yarn.app.mapreduce.am.job.committer.cancel-timeout 60000