Browse Source

AMBARI-16844. HBase backups fail if there is no /user/hbase directory in HDFS (aonishuk)

Andrew Onishuk 9 years ago
parent
commit
28bb59f448

+ 1 - 0
ambari-common/src/main/python/resource_management/libraries/functions/constants.py

@@ -83,3 +83,4 @@ class StackFeature:
   HIVE_METASTORE_SITE_SUPPORT = "hive_metastore_site_support"
   HIVE_METASTORE_SITE_SUPPORT = "hive_metastore_site_support"
   RANGER_USERSYNC_PASSWORD_JCEKS = "ranger_usersync_password_jceks"
   RANGER_USERSYNC_PASSWORD_JCEKS = "ranger_usersync_password_jceks"
   RANGER_LOGSEARCH_DEPENDENT = "ranger_logsearch_dependent"
   RANGER_LOGSEARCH_DEPENDENT = "ranger_logsearch_dependent"
+  HBASE_HOME_DIRECTORY = "hbase_home_directory"

+ 5 - 0
ambari-common/src/main/python/resource_management/libraries/functions/stack_features.py

@@ -243,6 +243,11 @@ _DEFAULT_STACK_FEATURES = {
       "name": "ranger_logsearch_dependent",
       "name": "ranger_logsearch_dependent",
       "description": "Ranger audit properties should be configured to use Ambari installed LogSearch (AMBARI-16446)",
       "description": "Ranger audit properties should be configured to use Ambari installed LogSearch (AMBARI-16446)",
       "min_version": "2.5.0.0"
       "min_version": "2.5.0.0"
+    },
+    {
+      "name": "hbase_home_directory",
+      "description": "Hbase home directory in HDFS needed for HBASE backup",
+      "min_version": "2.5.0.0"
     }
     }
   ]
   ]
 }
 }

+ 7 - 0
ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase.py

@@ -204,6 +204,13 @@ def hbase(name=None):
                          owner=params.hbase_user,
                          owner=params.hbase_user,
                          mode=0711
                          mode=0711
     )
     )
+    if params.create_hbase_home_directory:
+      params.HdfsResource(params.hbase_home_directory,
+                          type="directory",
+                          action="create_on_execute",
+                          owner=params.hbase_user,
+                          mode=0755
+      )
     params.HdfsResource(None, action="execute")
     params.HdfsResource(None, action="execute")
 
 
   if params.phoenix_enabled:
   if params.phoenix_enabled:

+ 4 - 0
ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/params_linux.py

@@ -381,3 +381,7 @@ if has_ranger_admin:
   #For SQLA explicitly disable audit to DB for Ranger
   #For SQLA explicitly disable audit to DB for Ranger
   if xa_audit_db_flavor == 'sqla':
   if xa_audit_db_flavor == 'sqla':
     xa_audit_db_is_enabled = False
     xa_audit_db_is_enabled = False
+
+
+create_hbase_home_directory = check_stack_feature(StackFeature.HBASE_HOME_DIRECTORY, stack_version_formatted)
+hbase_home_directory = format("/user/{hbase_user}")

+ 5 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_features.json

@@ -225,6 +225,11 @@
       "name": "ranger_logsearch_dependent",
       "name": "ranger_logsearch_dependent",
       "description": "Ranger audit properties should be configured to use Ambari installed LogSearch (AMBARI-16446)",
       "description": "Ranger audit properties should be configured to use Ambari installed LogSearch (AMBARI-16446)",
       "min_version": "2.5.0.0"
       "min_version": "2.5.0.0"
+    },
+    {
+      "name": "hbase_home_directory",
+      "description": "Hbase home directory in HDFS needed for HBASE backup",
+      "min_version": "2.5.0.0"
     }
     }
   ]
   ]
 }
 }