----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/39661/ -----------------------------------------------------------
Review request for Ambari and Dmytro Sen. Bugs: AMBARI-13566 https://issues.apache.org/jira/browse/AMBARI-13566 Repository: ambari Description ------- After upgrading Ambari 1.7.0 (or 2.0.x) to Ambari 2.1.3 and then either enabling Kerberos or Kerberos was previously enabled, NameNode fails to start with the following error: 2015-10-16 13:46:04,499 ERROR namenode.NameNode (NameNode.java:main(1645)) - Failed to start namenode. java.io.IOException: Login failure for nn/localh...@example.com from keytab /etc/security/keytabs/nn.service.keytab: javax.security.auth.login.LoginException: Unable to obtain password from user at org.apache.hadoop.security.UserGroupInformation.loginUserFromKeytab(UserGroupInformation.java:976) at org.apache.hadoop.security.SecurityUtil.login(SecurityUtil.java:243) at org.apache.hadoop.hdfs.server.namenode.NameNode.loginAsNameNodeUser(NameNode.java:637) at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:656) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:896) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:880) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1574) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1640) Caused by: javax.security.auth.login.LoginException: Unable to obtain password from user at com.sun.security.auth.module.Krb5LoginModule.promptForPass(Krb5LoginModule.java:856) at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:719) at com.sun.security.auth.module.Krb5LoginModule.login(Krb5LoginModule.java:584) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at javax.security.auth.login.LoginContext.invoke(LoginContext.java:762) at javax.security.auth.login.LoginContext.access$000(LoginContext.java:203) at javax.security.auth.login.LoginContext$4.run(LoginContext.java:690) at javax.security.auth.login.LoginContext$4.run(LoginContext.java:688) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:687) at javax.security.auth.login.LoginContext.login(LoginContext.java:595) at org.apache.hadoop.security.UserGroupInformation.loginUserFromKeytab(UserGroupInformation.java:967) ... 7 more 2015-10-16 13:46:04,517 INFO util.ExitUtil (ExitUtil.java:terminate(124)) - Exiting with status 1 2015-10-16 13:46:04,532 INFO namenode.NameNode (LogAdapter.java:info(47)) - SHUTDOWN_MSG: I am using HDP 2.2.8.0-3150 # hdp-select status accumulo-client - None accumulo-gc - None accumulo-master - None accumulo-monitor - None accumulo-tablet - None accumulo-tracer - None falcon-client - None falcon-server - None flume-server - None hadoop-client - 2.2.8.0-3150 hadoop-hdfs-datanode - 2.2.8.0-3150 hadoop-hdfs-journalnode - 2.2.8.0-3150 hadoop-hdfs-namenode - 2.2.8.0-3150 hadoop-hdfs-nfs3 - 2.2.8.0-3150 hadoop-hdfs-portmap - 2.2.8.0-3150 hadoop-hdfs-secondarynamenode - 2.2.8.0-3150 hadoop-httpfs - 2.2.8.0-3150 hadoop-mapreduce-historyserver - 2.2.8.0-3150 hadoop-yarn-nodemanager - 2.2.8.0-3150 hadoop-yarn-resourcemanager - 2.2.8.0-3150 hadoop-yarn-timelineserver - 2.2.8.0-3150 hbase-client - None hbase-master - None hbase-regionserver - None hive-metastore - None hive-server2 - None hive-webhcat - None kafka-broker - None knox-server - None mahout-client - None oozie-client - None oozie-server - None phoenix-client - None ranger-admin - None ranger-usersync - None slider-client - None spark-client - None spark-historyserver - None sqoop-client - None sqoop-server - None storm-client - None storm-nimbus - None storm-slider-client - None storm-supervisor - None zookeeper-client - 2.2.8.0-3150 zookeeper-server - 2.2.8.0-3150 This issue does not exist when using 2.3.4.0-3011. **Steps to reproduce #1** 1. Install Ambari 2.0.2 and HDP 2.2 (HDP-2.2.8.0) 2. Upgrade Ambari to 2.1.3 3. Restart HDFS 4. Enable Kerberos 5. See Failure **Steps to reproduce #2** 1. Install Ambari 2.0.2 and HDP 2.2 (HDP-2.2.8.0) 2. Enable Kerberos 3. Upgrade Ambari to 2.1.3 4. Restart HDFS 5. See Failure **Cause** In `org.apache.ambari.server.upgrade.UpgradeCatalog210#updateHdfsConfigs`, `dfs.namenode.rpc-address` is set to be updated to the proper value. However the call to `org.apache.ambari.server.upgrade.AbstractUpgradeCatalog#updateCon figurationPropertiesForCluster(org.apache.ambari.server.state.Cluster, java.lang.String, java.util.Map<java.lang.String,java.lang.String>, boolean, boolean)` is made with the `updateIfExists` flag set to **false**. Before getting to this point, new configs have been added from the hdfs-site.xml file via `org.apache.ambari.server.upgrade.AbstractUpgradeCatalog#addNewConfigurati onsFromXml`. This added `dfs.namenode.rpc-address` to the hdfs-site config with the value of "localhost:8020" and thus the calculated (correct) value was ignored. **Solution** Change the call to `org.apache.ambari.server.upgrade.AbstractUpgradeCatalog#up dateConfigurationPropertiesForCluster(org.apache.ambari.server.state.Cluster, java.lang.String, java.util.Map<java.lang.String,java.lang.String>, boolean, boolean)` so that it is made with the `updateIfExists` flag set to **true**. Diffs ----- ambari-server/src/main/java/org/apache/ambari/server/state/PropertyInfo.java a6ef1d0 ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java 92cc9e6 ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java 41754d9 ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/configuration/hdfs-site.xml e53de9c ambari-server/src/main/resources/stacks/HDP/2.2/services/HIVE/configuration/hive-site.xml cf79e43 Diff: https://reviews.apache.org/r/39661/diff/ Testing ------- mvn clean test Thanks, Andrew Onischuk