Exemple #1
0
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)
Exemple #3
0
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))