diff --git llap-server/src/java/org/apache/hadoop/hive/llap/cli/LlapServiceDriver.java llap-server/src/java/org/apache/hadoop/hive/llap/cli/LlapServiceDriver.java index 8fdec2f..46edc42 100644 --- llap-server/src/java/org/apache/hadoop/hive/llap/cli/LlapServiceDriver.java +++ llap-server/src/java/org/apache/hadoop/hive/llap/cli/LlapServiceDriver.java @@ -63,7 +63,7 @@ "org.apache.hive.hcatalog.data.JsonSerDe" }; private static final String HBASE_SERDE_CLASS = "org.apache.hadoop.hive.hbase.HBaseSerDe"; private static final String[] NEEDED_CONFIGS = LlapDaemonConfiguration.DAEMON_CONFIGS; - private static final String[] OPTIONAL_CONFIGS = { "ssl-server.xml" }; + private static final String[] OPTIONAL_CONFIGS = LlapDaemonConfiguration.SSL_DAEMON_CONFIGS; /** diff --git llap-server/src/java/org/apache/hadoop/hive/llap/configuration/LlapDaemonConfiguration.java llap-server/src/java/org/apache/hadoop/hive/llap/configuration/LlapDaemonConfiguration.java index 72340f5..51e8509 100644 --- llap-server/src/java/org/apache/hadoop/hive/llap/configuration/LlapDaemonConfiguration.java +++ llap-server/src/java/org/apache/hadoop/hive/llap/configuration/LlapDaemonConfiguration.java @@ -16,6 +16,7 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.common.classification.InterfaceAudience; +import org.apache.hadoop.hive.conf.HiveConf; /** * Configuration for LLAP daemon processes only. This should not be used by any clients. @@ -28,12 +29,21 @@ @InterfaceAudience.Private public static final String[] DAEMON_CONFIGS = { /* in specific order */"core-site.xml", "hdfs-site.xml", "yarn-site.xml", "tez-site.xml", "hive-site.xml" }; - + + @InterfaceAudience.Private + public static final String[] SSL_DAEMON_CONFIGS = { "ssl-server.xml" }; + public LlapDaemonConfiguration() { super(false); for (String conf : DAEMON_CONFIGS) { addResource(conf); } + /* load ssl secret configs */ + if (HiveConf.getBoolVar(this, HiveConf.ConfVars.LLAP_DAEMON_WEB_SSL)) { + for (String conf : SSL_DAEMON_CONFIGS) { + addResource(conf); + } + } addResource(LLAP_DAEMON_SITE); } } \ No newline at end of file diff --git llap-server/src/java/org/apache/hadoop/hive/llap/daemon/services/impl/LlapWebApp.java llap-server/src/java/org/apache/hadoop/hive/llap/daemon/services/impl/LlapWebApp.java deleted file mode 100644 index 08ac843..0000000 --- llap-server/src/java/org/apache/hadoop/hive/llap/daemon/services/impl/LlapWebApp.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.hadoop.hive.llap.daemon.services.impl; - -import org.apache.hadoop.yarn.webapp.WebApp; -import org.apache.hadoop.yarn.webapp.YarnWebParams; - -public class LlapWebApp extends WebApp { - - @Override - public void setup() { - // JMX / config are defaults - } -} diff --git llap-server/src/java/org/apache/hadoop/hive/llap/daemon/services/impl/LlapWebServices.java llap-server/src/java/org/apache/hadoop/hive/llap/daemon/services/impl/LlapWebServices.java index 0c6fc3f..afb59c0 100644 --- llap-server/src/java/org/apache/hadoop/hive/llap/daemon/services/impl/LlapWebServices.java +++ llap-server/src/java/org/apache/hadoop/hive/llap/daemon/services/impl/LlapWebServices.java @@ -22,6 +22,7 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; +import org.apache.hadoop.hive.llap.configuration.LlapDaemonConfiguration; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.service.AbstractService; import org.apache.hive.http.HttpServer; @@ -34,6 +35,8 @@ private int port; private HttpServer http; + private boolean useSSL = false; + private boolean useSPNEGO = false; public LlapWebServices() { super("LlapWebServices"); @@ -42,13 +45,17 @@ public LlapWebServices() { @Override public void serviceInit(Configuration conf) { this.port = HiveConf.getIntVar(conf, ConfVars.LLAP_DAEMON_WEB_PORT); + this.useSSL = HiveConf.getBoolVar(conf, ConfVars.LLAP_DAEMON_WEB_SSL); + this.useSPNEGO = HiveConf.getBoolVar(conf, ConfVars.LLAP_WEB_AUTO_AUTH); String bindAddress = "0.0.0.0"; HttpServer.Builder builder = new HttpServer.Builder().setName("llap").setPort(this.port).setHost(bindAddress); builder.setConf(new HiveConf(conf, HiveConf.class)); if (UserGroupInformation.isSecurityEnabled()) { - builder.setUseSSL(true); - if (HiveConf.getBoolVar(conf, ConfVars.LLAP_WEB_AUTO_AUTH)) { + LOG.info("LLAP UI useSSL=" + this.useSSL + ", auto-auth/SPNEGO=" + + this.useSPNEGO + ", port=" + this.port); + builder.setUseSSL(this.useSSL); + if (this.useSPNEGO) { builder.setUseSPNEGO(true); // this setups auth filtering in build() builder.setSPNEGOPrincipal(HiveConf.getVar(conf, ConfVars.LLAP_KERBEROS_PRINCIPAL)); builder.setSPNEGOKeytab(HiveConf.getVar(conf, ConfVars.LLAP_KERBEROS_KEYTAB_FILE));