def prepare_upgrade_check_for_previous_dir(): """ During a NonRolling (aka Express Upgrade), preparing the NameNode requires backing up some data. Check that there is no "previous" folder inside the NameNode Name Dir. """ import params if params.dfs_ha_enabled: namenode_ha = NamenodeHAState() if namenode_ha.is_active(params.hostname): Logger.info( "NameNode High Availability is enabled and this is the Active NameNode." ) problematic_previous_namenode_dirs = set() nn_name_dirs = params.dfs_name_dir.split(',') for nn_dir in nn_name_dirs: if os.path.isdir(nn_dir): # Check for a previous folder, which is not allowed. previous_dir = os.path.join(nn_dir, "previous") if os.path.isdir(previous_dir): problematic_previous_namenode_dirs.add(previous_dir) if len(problematic_previous_namenode_dirs) > 0: message = 'WARNING. The following NameNode Name Dir(s) have a "previous" folder from an older version.\n' \ 'Please back it up first, and then delete it, OR Finalize (E.g., "hdfs dfsadmin -finalizeUpgrade").\n' \ 'NameNode Name Dir(s): {0}\n' \ '***** Then, retry this step. *****'.format(", ".join(problematic_previous_namenode_dirs)) Logger.error(message) raise Fail(message)
def prepare_upgrade_check_for_previous_dir(): """ During a NonRolling (aka Express Upgrade), preparing the NameNode requires backing up some data. Check that there is no "previous" folder inside the NameNode Name Dir. """ import params if params.dfs_ha_enabled: namenode_ha = NamenodeHAState() if namenode_ha.is_active(params.hostname): Logger.info("NameNode High Availability is enabled and this is the Active NameNode.") problematic_previous_namenode_dirs = set() nn_name_dirs = params.dfs_name_dir.split(',') for nn_dir in nn_name_dirs: if os.path.isdir(nn_dir): # Check for a previous folder, which is not allowed. previous_dir = os.path.join(nn_dir, "previous") if os.path.isdir(previous_dir): problematic_previous_namenode_dirs.add(previous_dir) if len(problematic_previous_namenode_dirs) > 0: message = 'WARNING. The following NameNode Name Dir(s) have a "previous" folder from an older version.\n' \ 'Please back it up first, and then delete it, OR Finalize (E.g., "hdfs dfsadmin -finalizeUpgrade").\n' \ 'NameNode Name Dir(s): {0}\n' \ '***** Then, retry this step. *****'.format(", ".join(problematic_previous_namenode_dirs)) Logger.error(message) raise Fail(message)
def post_upgrade_check(): """ Ensure all journal nodes are up and quorum is established :return: """ import params Logger.info("Ensuring Journalnode quorum is established") if params.security_enabled: Execute(params.jn_kinit_cmd, user=params.hdfs_user) time.sleep(5) hdfs_roll_edits() time.sleep(5) all_journal_node_hosts = default("/clusterHostInfo/journalnode_hosts", []) if len(all_journal_node_hosts) < 3: raise Fail("Need at least 3 Journalnodes to maintain a quorum") try: namenode_ha = NamenodeHAState() except ValueError, err: raise Fail("Could not retrieve Namenode HA addresses. Error: " + str(err))