You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ae...@apache.org on 2018/01/24 22:36:10 UTC
[41/50] [abbrv] hadoop git commit: YARN-7540 and YARN-7605. Convert
yarn app cli to call yarn api services and implement doAs for Api Service
REST API. Contributed by Eric Yang and Jian He
http://git-wip-us.apache.org/repos/asf/hadoop/blob/e307edcb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java
index d3ad53e..7364445 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java
@@ -82,6 +82,7 @@ public class WebApps {
public Class<? extends HttpServlet> clazz;
public String name;
public String spec;
+ public Map<String, String> params;
}
final String name;
@@ -147,7 +148,19 @@ public class WebApps {
servlets.add(struct);
return this;
}
-
+
+ public Builder<T> withServlet(String name, String pathSpec,
+ Class<? extends HttpServlet> servlet,
+ Map<String, String> params) {
+ ServletStruct struct = new ServletStruct();
+ struct.clazz = servlet;
+ struct.name = name;
+ struct.spec = pathSpec;
+ struct.params = params;
+ servlets.add(struct);
+ return this;
+ }
+
public Builder<T> with(Configuration conf) {
this.conf = conf;
return this;
@@ -243,6 +256,11 @@ public class WebApps {
pathList.add("/" + wsName + "/*");
}
}
+ for (ServletStruct s : servlets) {
+ if (!pathList.contains(s.spec)) {
+ pathList.add(s.spec);
+ }
+ }
if (conf == null) {
conf = new Configuration();
}
@@ -315,7 +333,12 @@ public class WebApps {
HttpServer2 server = builder.build();
for(ServletStruct struct: servlets) {
- server.addServlet(struct.name, struct.spec, struct.clazz);
+ if (struct.params != null) {
+ server.addInternalServlet(struct.name, struct.spec,
+ struct.clazz, struct.params);
+ } else {
+ server.addServlet(struct.name, struct.spec, struct.clazz);
+ }
}
for(Map.Entry<String, Object> entry : attributes.entrySet()) {
server.setAttribute(entry.getKey(), entry.getValue());
@@ -394,22 +417,16 @@ public class WebApps {
}
public WebApp start(WebApp webapp) {
- return start(webapp, null, null);
+ return start(webapp, null);
}
- public WebApp start(WebApp webapp, WebAppContext ui2Context,
- Map<String, String> services) {
+ public WebApp start(WebApp webapp, WebAppContext ui2Context) {
WebApp webApp = build(webapp);
HttpServer2 httpServer = webApp.httpServer();
if (ui2Context != null) {
addFiltersForNewContext(ui2Context);
httpServer.addHandlerAtFront(ui2Context);
}
- if (services!=null) {
- String packageName = services.get("PackageName");
- String pathSpec = services.get("PathSpec");
- httpServer.addJerseyResourcePackage(packageName, pathSpec);
- }
try {
httpServer.start();
LOG.info("Web app " + name + " started at "
http://git-wip-us.apache.org/repos/asf/hadoop/blob/e307edcb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/api/RegistryConstants.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/api/RegistryConstants.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/api/RegistryConstants.java
index 0006dfd..cfa2d65 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/api/RegistryConstants.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/api/RegistryConstants.java
@@ -221,6 +221,7 @@ public interface RegistryConstants {
* No authentication; client is anonymous.
*/
String REGISTRY_CLIENT_AUTH_ANONYMOUS = "";
+ String REGISTRY_CLIENT_AUTH_SIMPLE = "simple";
/**
* Registry client authentication ID.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/e307edcb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/impl/zk/RegistrySecurity.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/impl/zk/RegistrySecurity.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/impl/zk/RegistrySecurity.java
index ff6e8aa..521d8a9 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/impl/zk/RegistrySecurity.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/client/impl/zk/RegistrySecurity.java
@@ -99,7 +99,7 @@ public class RegistrySecurity extends AbstractService {
* Access policy options
*/
private enum AccessPolicy {
- anon, sasl, digest
+ anon, sasl, digest, simple
}
/**
@@ -214,6 +214,9 @@ public class RegistrySecurity extends AbstractService {
case REGISTRY_CLIENT_AUTH_ANONYMOUS:
access = AccessPolicy.anon;
break;
+ case REGISTRY_CLIENT_AUTH_SIMPLE:
+ access = AccessPolicy.simple;
+ break;
default:
throw new ServiceStateException(E_UNKNOWN_AUTHENTICATION_MECHANISM
+ "\"" + auth + "\"");
@@ -302,6 +305,7 @@ public class RegistrySecurity extends AbstractService {
break;
case anon:
+ case simple:
// nothing is needed; account is read only.
if (LOG.isDebugEnabled()) {
LOG.debug("Auth is anonymous");
@@ -758,6 +762,9 @@ public class RegistrySecurity extends AbstractService {
LOG.info(
"Enabling ZK sasl client: jaasClientEntry = " + jaasClientEntry
+ ", principal = " + principal + ", keytab = " + keytab);
+ default:
+ clearZKSaslClientProperties();
+ break;
}
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/e307edcb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
index 8641842..7bbf4aa 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
@@ -19,6 +19,8 @@
package org.apache.hadoop.yarn.server.resourcemanager;
import com.google.common.annotations.VisibleForTesting;
+import com.sun.jersey.spi.container.servlet.ServletContainer;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.curator.framework.AuthInfo;
@@ -1049,11 +1051,23 @@ public class ResourceManager extends CompositeService implements Recoverable {
RMWebAppUtil.setupSecurityAndFilters(conf,
getClientRMService().rmDTSecretManager);
+ Map<String, String> params = new HashMap<String, String>();
+ if (getConfig().getBoolean(YarnConfiguration.YARN_API_SERVICES_ENABLE,
+ false)) {
+ String apiPackages = "org.apache.hadoop.yarn.service.webapp;" +
+ "org.apache.hadoop.yarn.webapp";
+ params.put("com.sun.jersey.config.property.resourceConfigClass",
+ "com.sun.jersey.api.core.PackagesResourceConfig");
+ params.put("com.sun.jersey.config.property.packages", apiPackages);
+ }
+
Builder<ApplicationMasterService> builder =
WebApps
.$for("cluster", ApplicationMasterService.class, masterService,
"ws")
.with(conf)
+ .withServlet("API-Service", "/app/*",
+ ServletContainer.class, params)
.withHttpSpnegoPrincipalKey(
YarnConfiguration.RM_WEBAPP_SPNEGO_USER_NAME_KEY)
.withHttpSpnegoKeytabKey(
@@ -1109,15 +1123,7 @@ public class ResourceManager extends CompositeService implements Recoverable {
}
}
- if (getConfig().getBoolean(YarnConfiguration.YARN_API_SERVICES_ENABLE,
- false)) {
- serviceConfig = new HashMap<String, String>();
- String apiPackages = "org.apache.hadoop.yarn.service.webapp;" +
- "org.apache.hadoop.yarn.webapp";
- serviceConfig.put("PackageName", apiPackages);
- serviceConfig.put("PathSpec", "/app/*");
- }
- webApp = builder.start(new RMWebApp(this), uiWebAppContext, serviceConfig);
+ webApp = builder.start(new RMWebApp(this), uiWebAppContext);
}
private String getWebAppsPath(String appName) {
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org