This is an automated email from the ASF dual-hosted git repository. aonishuk pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/trunk by this push: new 3195281 AMBARI-23511. Format ZKFC fails while adding new HDFS namespace through UI in secure environment (aonishuk) 3195281 is described below commit 31952818f88a4e3ba30171124b7c2f40f71fa400 Author: Andrew Onishuk <aonis...@hortonworks.com> AuthorDate: Sat Apr 7 18:26:56 2018 +0300 AMBARI-23511. Format ZKFC fails while adding new HDFS namespace through UI in secure environment (aonishuk) --- .../stack-hooks/before-ANY/scripts/params.py | 44 +++++++++++++++++++--- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/ambari-server/src/main/resources/stack-hooks/before-ANY/scripts/params.py b/ambari-server/src/main/resources/stack-hooks/before-ANY/scripts/params.py index 85bd355..3fcac39 100644 --- a/ambari-server/src/main/resources/stack-hooks/before-ANY/scripts/params.py +++ b/ambari-server/src/main/resources/stack-hooks/before-ANY/scripts/params.py @@ -38,6 +38,7 @@ from resource_management.libraries.functions.stack_features import check_stack_f from resource_management.libraries.functions.stack_features import get_stack_feature_version from resource_management.libraries.functions.get_architecture import get_architecture from ambari_commons.constants import AMBARI_SUDO_BINARY +from resource_management.libraries.functions.namenode_ha_utils import get_properties_for_all_nameservices, namenode_federation_enabled config = Script.get_config() @@ -197,17 +198,48 @@ has_ranger_admin = not len(ranger_admin_hosts) == 0 has_zeppelin_master = not len(zeppelin_master_hosts) == 0 stack_supports_zk_security = check_stack_feature(StackFeature.SECURE_ZOOKEEPER, version_for_stack_feature_checks) +hostname = config['agentLevelParams']['hostname'] +hdfs_site = config['configurations']['hdfs-site'] + # HDFS High Availability properties dfs_ha_enabled = False dfs_ha_nameservices = default('/configurations/hdfs-site/dfs.internal.nameservices', None) if dfs_ha_nameservices is None: dfs_ha_nameservices = default('/configurations/hdfs-site/dfs.nameservices', None) -dfs_ha_namenode_ids = default(format("/configurations/hdfs-site/dfs.ha.namenodes.{dfs_ha_nameservices}"), None) -if dfs_ha_namenode_ids: - dfs_ha_namemodes_ids_list = dfs_ha_namenode_ids.split(",") - dfs_ha_namenode_ids_array_len = len(dfs_ha_namemodes_ids_list) - if dfs_ha_namenode_ids_array_len > 1: - dfs_ha_enabled = True + +dfs_ha_namenode_ids_all_ns = get_properties_for_all_nameservices(hdfs_site, 'dfs.ha.namenodes') +dfs_ha_automatic_failover_enabled = default("/configurations/hdfs-site/dfs.ha.automatic-failover.enabled", False) + +# Values for the current Host +namenode_id = None +namenode_rpc = None + +dfs_ha_namemodes_ids_list = [] +other_namenode_id = None + +for ns, dfs_ha_namenode_ids in dfs_ha_namenode_ids_all_ns.iteritems(): + found = False + if not is_empty(dfs_ha_namenode_ids): + dfs_ha_namemodes_ids_list = dfs_ha_namenode_ids.split(",") + dfs_ha_namenode_ids_array_len = len(dfs_ha_namemodes_ids_list) + if dfs_ha_namenode_ids_array_len > 1: + dfs_ha_enabled = True + if dfs_ha_enabled: + for nn_id in dfs_ha_namemodes_ids_list: + nn_host = config['configurations']['hdfs-site'][format('dfs.namenode.rpc-address.{ns}.{nn_id}')] + if hostname in nn_host: + namenode_id = nn_id + namenode_rpc = nn_host + found = True + # With HA enabled namenode_address is recomputed + namenode_address = format('hdfs://{ns}') + + # Calculate the namenode id of the other namenode. This is needed during RU to initiate an HA failover using ZKFC. + if namenode_id is not None and len(dfs_ha_namemodes_ids_list) == 2: + other_namenode_id = list(set(dfs_ha_namemodes_ids_list) - set([namenode_id]))[0] + + if found: + break if has_namenode or dfs_type == 'HCFS': hadoop_conf_dir = conf_select.get_hadoop_conf_dir() -- To stop receiving notification emails like this one, please contact aonis...@apache.org.