[ https://issues.apache.org/jira/browse/APEXCORE-711?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16001657#comment-16001657 ]
Sanjay M Pujare commented on APEXCORE-711: ------------------------------------------ Recapping my earlier analysis about eliminating dependencies on Hadoop/Yarn: - In org.apache.hadoop.yarn.webapp.WebApps.Builder<T> the start(WebApp) method does bulk of the work in creating the WebApp container object. The problematic line in this method currently is WebAppUtils.loadSslConfiguration(builder); which does not pass (honor) the config object passed to Builder.with(Configuration). The above line should be changed to WebAppUtils.loadSslConfiguration(builder, conf); which passes the required config object. Since a class static method (WebAppUtils.loadSslConfiguration) is being called there is no way to get the new behavior by subclassing a class and overriding a simple method. All of the code in org.apache.hadoop.yarn.webapp.WebApps.Builder.start(WebApp) will need to be copied in a new class on the Apex core side. BTW, precisely because of this, https://issues.apache.org/jira/browse/YARN-4562 was created and fixed (albeit in 2.9.x and not in any earlier version) - with this we still have an unresolved issue in the current Yarn. The current code in org.apache.hadoop.yarn.webapp.util.WebAppUtils.loadSslConfiguration(Builder, Configuration) is as follows (trimmed): public static HttpServer2.Builder loadSslConfiguration( HttpServer2.Builder builder, Configuration sslConf) { if (sslConf == null) { sslConf = new Configuration(false); } boolean needsClientAuth = YarnConfiguration.YARN_SSL_CLIENT_HTTPS_NEED_AUTH_DEFAULT; sslConf.addResource(YarnConfiguration.YARN_SSL_SERVER_RESOURCE_DEFAULT); return ... } which has 2 major issues: a) The caller can set SSL properties in the passed sslConf object but they are overridden by the default ssl-server.xml file because of the sslConf.addResource(...) call. There is no way to point to a different XML file (because it uses the hardcoded YARN_SSL_SERVER_RESOURCE_DEFAULT value and not the value of a property) which defeats the very purpose. b) the only way to solve (a) above is to mark the value final in the passed sslConf object in which case the default ssl-server.xml values won't be applied even if they are final there. Both of these are addressed by the changes in this JIRA. > Support custom SSL keystore for the Stram REST API web service > -------------------------------------------------------------- > > Key: APEXCORE-711 > URL: https://issues.apache.org/jira/browse/APEXCORE-711 > Project: Apache Apex Core > Issue Type: Improvement > Reporter: Sanjay M Pujare > Assignee: Sanjay M Pujare > Original Estimate: 72h > Remaining Estimate: 72h > > Currently StrAM supports only the default Hadoop SSL configuration for the > web-service because it uses org.apache.hadoop.yarn.webapp.WebApps helper > class which has the limitation of only using the default Hadoop SSL config > that is read from Hadoop's ssl-server.xml resource file. Some users have run > into a situation where Hadoops' SSL keystore is not available on most cluster > nodes or the Stram process doesn't have read access to the keystore even when > present. So there is a need for the Stram to use a custom SSL keystore and > configuration that does not suffer from these limitations. > There is already a PR https://github.com/apache/hadoop/pull/213 to Hadoop to > support this in Hadoop and it is in the process of getting merged soon. > After that Stram needs to be enhanced (this JIRA) to accept the location of a > custom ssl-server.xml file (supplied by the client via a DAG attribute) and > use the values from that file to set up the config object to be passed to > WebApps which will end up using the custom SSL configuration. This approach > has already been verified in a prototype. -- This message was sent by Atlassian JIRA (v6.3.15#6346)