瀏覽代碼

AMBARI-9125. Secondary Namenode fails when trying to create multiple SecondaryNameNode Checkpoint directories via Ambari.(vbrodetskyi)

Vitaly Brodetskyi 10 年之前
父節點
當前提交
b5c9070323

+ 7 - 6
ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_snamenode.py

@@ -26,12 +26,13 @@ def snamenode(action=None, format=False):
   import params
   import params
 
 
   if action == "configure":
   if action == "configure":
-    Directory(params.fs_checkpoint_dir,
-              recursive=True,
-              recursive_permission=True,
-              mode=0755,
-              owner=params.hdfs_user,
-              group=params.user_group)
+    for fs_checkpoint_dir in params.fs_checkpoint_dirs:
+      Directory(fs_checkpoint_dir,
+                recursive=True,
+                recursive_permission=True,
+                mode=0755,
+                owner=params.hdfs_user,
+                group=params.user_group)
     File(params.exclude_file_path,
     File(params.exclude_file_path,
          content=Template("exclude_hosts_list.j2"),
          content=Template("exclude_hosts_list.j2"),
          owner=params.hdfs_user,
          owner=params.hdfs_user,

+ 1 - 1
ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/params.py

@@ -175,7 +175,7 @@ smoke_hdfs_user_mode = 0770
 namenode_formatted_old_mark_dir = format("{hadoop_pid_dir_prefix}/hdfs/namenode/formatted/")
 namenode_formatted_old_mark_dir = format("{hadoop_pid_dir_prefix}/hdfs/namenode/formatted/")
 namenode_formatted_mark_dir = format("/var/lib/hdfs/namenode/formatted/")
 namenode_formatted_mark_dir = format("/var/lib/hdfs/namenode/formatted/")
 
 
-fs_checkpoint_dir = config['configurations']['hdfs-site']['dfs.namenode.checkpoint.dir']
+fs_checkpoint_dirs = config['configurations']['hdfs-site']['dfs.namenode.checkpoint.dir'].split(',')
 
 
 dfs_data_dir = config['configurations']['hdfs-site']['dfs.datanode.data.dir']
 dfs_data_dir = config['configurations']['hdfs-site']['dfs.datanode.data.dir']
 dfs_data_dir = ",".join([re.sub(r'^\[.+\]', '', dfs_dir.strip()) for dfs_dir in dfs_data_dir.split(",")])
 dfs_data_dir = ",".join([re.sub(r'^\[.+\]', '', dfs_dir.strip()) for dfs_dir in dfs_data_dir.split(",")])

+ 7 - 0
ambari-server/src/test/python/stacks/2.0.6/HDFS/test_snamenode.py

@@ -237,6 +237,13 @@ class TestSNamenode(RMFTestCase):
                               recursive = True,
                               recursive = True,
                               recursive_permission = True
                               recursive_permission = True
                               )
                               )
+    self.assertResourceCalled('Directory', '/hadoop/hdfs/namesecondary2',
+                              owner = 'hdfs',
+                              group = 'hadoop',
+                              mode = 0755,
+                              recursive = True,
+                              recursive_permission = True
+    )
 
 
   def assert_configure_secured(self):
   def assert_configure_secured(self):
     self.assertResourceCalled('Directory', '/etc/security/limits.d',
     self.assertResourceCalled('Directory', '/etc/security/limits.d',

+ 1 - 1
ambari-server/src/test/python/stacks/2.0.6/configs/default.json

@@ -257,7 +257,7 @@
             "dfs.datanode.du.reserved": "1073741824", 
             "dfs.datanode.du.reserved": "1073741824", 
             "dfs.webhdfs.enabled": "true", 
             "dfs.webhdfs.enabled": "true", 
             "dfs.namenode.handler.count": "100", 
             "dfs.namenode.handler.count": "100", 
-            "dfs.namenode.checkpoint.dir": "/hadoop/hdfs/namesecondary", 
+            "dfs.namenode.checkpoint.dir": "/hadoop/hdfs/namesecondary,/hadoop/hdfs/namesecondary2",
             "fs.permissions.umask-mode": "022", 
             "fs.permissions.umask-mode": "022", 
             "dfs.datanode.http.address": "0.0.0.0:50075",
             "dfs.datanode.http.address": "0.0.0.0:50075",
             "dfs.datanode.ipc.address": "0.0.0.0:8010", 
             "dfs.datanode.ipc.address": "0.0.0.0:8010",