ソースを参照

AMBARI-7882. Decommission of JobTracker fails on secure cluster (aonishuk)

Andrew Onishuk 10 年 前
コミット
99de55ab85

+ 4 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/MAPREDUCE/package/scripts/jobtracker.py

@@ -65,6 +65,10 @@ class Jobtracker(Script):
     conf_dir = params.conf_dir
     user_group = params.user_group
 
+    if params.security_enabled:
+      Execute(params.kinit_cmd,
+         user = params.mapred_user)
+
     File(params.exclude_file_path,
          content=Template("exclude_hosts_list.j2"),
          owner=mapred_user,

+ 7 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/MAPREDUCE/package/scripts/params.py

@@ -60,6 +60,13 @@ mapreduce_jobhistory_done_dir = config['configurations']['mapred-site']['mapred.
 hostname = config["hostname"]
 hadoop_conf_dir = "/etc/hadoop/conf"
 hadoop_pid_dir_prefix = config['configurations']['hadoop-env']['hadoop_pid_dir_prefix']
+
+if security_enabled:
+  jt_principal_name = config['configurations']['mapred-site']['mapreduce.jobtracker.kerberos.principal']
+  jt_principal_name = jt_principal_name.replace('_HOST',hostname.lower())
+  jt_user_keytab = config['configurations']['mapred-site']['mapreduce.jobtracker.keytab.file']
+  kinit_cmd = format("{kinit_path_local} -kt {jt_user_keytab} {jt_principal_name}")
+
 hdfs_user_keytab = config['configurations']['hadoop-env']['hdfs_user_keytab']
 hdfs_user = config['configurations']['hadoop-env']['hdfs_user']
 hdfs_principal_name = config['configurations']['hadoop-env']['hdfs_principal_name']

+ 0 - 1
ambari-server/src/test/python/stacks/1.3.2/HDFS/test_hdfs_client.py

@@ -39,7 +39,6 @@ class Test(RMFTestCase):
     self.assertResourceCalled('Directory', '/tmp',
                               recursive = True,
                               )
-    self.printResources()
     self.assertResourceCalled('XmlConfig', 'core-site.xml',
                               conf_dir = '/tmp/123',
                               configuration_attributes = self.getConfig()['configuration_attributes']['core-site'],

+ 3 - 0
ambari-server/src/test/python/stacks/1.3.2/MAPREDUCE/test_mapreduce_jobtracker.py

@@ -149,6 +149,9 @@ class TestJobtracker(RMFTestCase):
                        config_file="secured.json"
     )
 
+    self.assertResourceCalled('Execute', '/usr/bin/kinit -kt /etc/security/keytabs/jt.service.keytab jt/c6402.ambari.apache.org@EXAMPLE.COM',
+                       user = 'mapred',
+    )
     self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.exclude',
                        owner = 'mapred',
                        content = Template('exclude_hosts_list.j2'),