Поделиться через


Перенос кластера Apache HBase в новую версию

В этой статье рассматривается обновление кластера Apache HBase в Azure HDInsight до более новой версии.

Сведения в этой статье применимы только в том случае, если для исходных и целевых кластеров используется одна и та же учетная запись хранения Azure. Чтобы обновить новую или другую учетную запись хранения для целевого кластера, см. статью "Миграция Apache HBase на новую версию с новой учетной записью хранения".

Время простоя при обновлении должно составлять всего несколько минут. Это время простоя вызвано действиями по очистке всех данных в памяти, а также временем настройки и перезапуска служб в новом кластере. Результаты будут отличаться в зависимости от количества узлов, объема данных и других переменных.

Проверка совместимости Apache HBase

Перед обновлением Apache HBase убедитесь, что версии HBase в исходном и конечном кластерах совместимы. Ознакомьтесь с матрицей совместимости версий HBase и заметками о выпуске в справочном руководстве по HBase, чтобы убедиться в совместимости приложения с новой версией.

Ниже приведен пример матрицы совместимости. Y указывает совместимость и N указывает на потенциальную несовместимость:

Тип совместимости Основная версия Минорная версия Патч
Совместимость клиента и сервера на уровне протоколов передачи данных Н У У
Совместимость серверов Н У У
Совместимость форматов файлов Н У У
Совместимость API клиента Н У У
Двоичная совместимость клиента Н Н У
Ограниченная совместимость API на стороне сервера
Стабильный Н У У
Развитие Н Н У
Нестабильно Н Н Н
Совместимость зависимостей Н У У
Совместимость операций Н Н У

Дополнительные сведения о версиях HDInsight и о совместимости см. в статье Версии Azure HDInsight.

Общие сведения о переносе кластера Apache HBase

Чтобы обновить кластер Apache HBase в Azure HDInsight, выполните следующие основные действия. Для получения подробных инструкций см. подробные шаги и команды или используйте скрипты из раздела Миграция HBase с помощью скриптов для автоматической миграции.

Подготовьте исходный кластер:

  1. Остановите прием данных.
  2. Очистите данные memstore.
  3. Остановите HBase в Ambari.
  4. Для кластеров с ускоренной записью создайте резервную копию каталога журнала упреждающего протоколирования (WAL).

Подготовьте целевой кластер:

  1. Создайте целевой кластер.
  2. Остановите HBase в Ambari.
  3. Обновите fs.defaultFS в конфигурациях службы HDFS, чтобы указывать на контейнер исходного кластера.
  4. Для кластеров с ускоренной записью обновите hbase.rootdir в конфигурациях службы HBase для ссылки на исходный контейнер исходного кластера.
  5. Очистите данные Zookeeper.

Выполните миграцию:

  1. Очистите и перенесите WAL.
  2. Скопируйте приложения из контейнера по умолчанию целевого кластера в исходный контейнер.
  3. Запустите все службы из целевого кластера Ambari.
  4. Проверьте HBase.
  5. Удалите исходный кластер.

Подробные шаги и команды миграции

Эти подробные инструкции и команды позволяют перенести кластер Apache HBase.

Подготовка исходного кластера

  1. Остановите прием данных в исходный кластер HBase.

  2. Очистите исходный кластер HBase, который вы обновляете.

    HBase записывает входящие данные в хранилище в памяти под названием memstore. После достижения определенного размера хранилище HBase сбрасывает его на диск для долгосрочного хранения в учетной записи хранения кластера. Удаление исходного кластера после обновления также удаляет все данные в хранилищах memstores. Чтобы сохранить данные, перед обновлением вручную сбросите хранилище memstore каждой таблицы на диск.

    Вы можете очистить данные memstore, выполнив скрипт flush_all_tables.sh из репозитория GitHub azure hbase-utils.

    Вы также можете очистить данные memstore, выполнив следующую команду оболочки HBase из кластера HDInsight:

    hbase shell
    flush "<table-name>"
    
  3. Войдите в Apache Ambari в исходном кластере https://<OLDCLUSTERNAME>.azurehdinsight.netи остановите службы HBase.

  4. В запросе подтверждения выберите поле, чтобы включить режим обслуживания для HBase.

    Подробные сведения о подключении к платформе Ambari и ее использовании см. в статье Управление кластерами HDInsight с помощью веб-интерфейса Ambari.

  5. Если в исходном кластере HBase не используются операции ускоренной записи, пропустите этот шаг. Для исходных кластеров HBase с операциями ускоренной записи создайте резервную копию каталога WAL в HDFS, выполнив следующие команды из сеанса SSH на любом узле Zookeeper или рабочему узле исходного кластера.

    hdfs dfs -mkdir /hbase-wal-backup
    hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
    

Подготовка целевого кластера

  1. На портале Azure настройте новый целевой кластер HDInsight, используя ту же учетную запись хранения, что и для исходного кластера, но укажите другое имя контейнера.

  2. Войдите в Apache Ambari в новом кластере (https://<NEWCLUSTERNAME>.azurehdinsight.net) и остановите работу служб HBase.

  3. В разделе Службы>HDFS>Конфигурации>Дополнительно>Дополнительные свойства core-site измените параметр HDFS fs.defaultFS так, чтобы он указывал на исходное имя контейнера исходного кластера. Например, значение параметра на следующем снимке экрана должно быть изменено на wasbs://hbase-upgrade-old-2021-03-22.

    В Ambari выберите Службы > HDFS > Configs > Advanced > Advanced core-site и измените имя контейнера.

  4. Если в целевом кластере имеется функция ускоренной записи, измените путь hbase.rootdir так, чтобы он указывал на исходное имя контейнера исходного кластера. Например, следующий путь должен быть изменен на hbase-upgrade-old-2021-03-22. Если в кластере нет функции ускоренной записи, пропустите этот шаг.

    В Ambari измените имя контейнера для корневого каталога HBase.

  5. Очистите данные Zookeeper в целевом кластере, выполнив следующие команды на любом узле Zookeeper или на рабочем узле:

    hbase zkcli
    rmr /hbase-unsecure
    quit
    

Очистка и миграция WAL

Выполните следующие команды в зависимости от исходной версии HDI и наличия ускоренных операций записи в исходном и целевом кластерах.

  • Целевой кластер всегда является HDI версии 4.0, так как HDI 3.6 находится в базовой поддержке и не рекомендуется для новых кластеров.
  • В HDFS для копирования используется команда hdfs dfs <copy properties starting with -D> -cp <source> <destination> # Serial execution.

Примечание.

  • Параметр <source-container-fullpath> для типа хранилища WASB имеет значение wasbs://<source-container-name>@<storageaccountname>.blob.core.windows.net.
  • Параметр <source-container-fullpath> для типа хранилища Azure Data Lake Storage 2-го поколения имеет значение abfs://<source-container-name>@<storageaccountname>.dfs.core.windows.net.

Исходный кластер — HDI 3.6 или HDI 4.0 с ускорением записи, а в целевом кластере есть ускорение записи.

Очистите данные FS WAL для целевого кластера и скопируйте каталог WAL из исходного кластера в HDFS целевого кластера. Скопируйте каталог, выполнив следующие команды на любом узле Zookeeper или на рабочем узле целевого кластера.

sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -cp <source-container-fullpath>/hbase-wal-backup/hbasewal hdfs://mycluster/

Исходный кластер — HDI 3.6 без ускорения записи, а целевой кластер имеет ускорение записи.

Очистите данные FS WAL для целевого кластера и скопируйте каталог WAL из исходного кластера в HDFS целевого кластера. Скопируйте каталог, выполнив следующие команды на любом узле Zookeeper или на рабочем узле целевого кластера.

sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs" -cp <source-container>/hbase/*WALs hdfs://mycluster/hbasewal

Исходный кластер — HDI 3.6 без ускорения записи, а целевой кластер не имеет ускоренных операций записи.

Очистите данные FS WAL для целевого кластера и скопируйте каталог WAL исходного кластера в HDFS целевого кластера. Скопируйте каталог, выполнив следующие команды на любом узле Zookeeper или на рабочем узле целевого кластера.

sudo -u hbase hdfs dfs -rm -r /hbase-wals/*
sudo -u hbase hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs" -cp <source-container-fullpath>/hbase/*WALs /hbase-wals

Исходный кластер — HDI 4.0 без ускорения записи, а в целевом кластере есть ускорение записи.

Очистите данные FS WAL для целевого кластера и скопируйте каталог WAL из исходного кластера в HDFS целевого кластера. Скопируйте каталог, выполнив следующие команды на любом узле Zookeeper или на рабочем узле целевого кластера.

sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -cp <source-container-fullpath>/hbase-wals/* hdfs://mycluster/hbasewal

Исходный кластер — HDI 4.0 без ускорения записи, а в целевом кластере нет ускоренных операций записи.

Очистите данные FS WAL для целевого кластера и скопируйте каталог WAL исходного кластера в HDFS целевого кластера. Скопируйте каталог, выполнив следующие команды на любом узле Zookeeper или на рабочем узле целевого кластера.

sudo -u hbase hdfs dfs -rm -r /hbase-wals/*
sudo -u hbase hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals /

Завершение миграции

  1. Используя контекст пользователя sudo -u hdfs, скопируйте папку /hdp/apps/<new-version-name> и ее содержимое из <destination-container-fullpath> в папку /hdp/apps в <source-container-fullpath>. Чтобы скопировать папку, можно выполнить следующие команды в целевом кластере.

    sudo -u hdfs hdfs dfs -cp /hdp/apps/<hdi-version> <source-container-fullpath>/hdp/apps
    

    Рассмотрим пример.

    sudo -u hdfs hdfs dfs -cp /hdp/apps/4.1.3.6 wasbs://[email protected]/hdp/apps
    
  2. В целевом кластере сохраните внесенные изменения и перезапустите все необходимые службы в соответствии с инструкциями Ambari.

  3. Укажите в вашем приложении целевой кластер.

    Примечание.

    Статическое DNS-имя приложения изменится после обновления. Вместо жесткого программирования этого DNS-имени можно настроить в параметрах DNS для доменного имени запись CNAME, которая указывает на имя кластера. Другой вариант — использовать файл конфигурации для приложения, которое можно обновить без повторного развертывания.

  4. Начните поглощение.

  5. Проверьте согласованность HBase и работу операций языка описания данных (DDL) и языка манипулирования данными (DML).

  6. Если в целевом кластере все работает нормально, можно удалить исходный кластер.

Миграция HBase с помощью сценариев

  1. Выполните скрипт migrate-hbase-source.sh в исходном кластере и migrate-hbase-dest.sh в целевом кластере. Чтобы выполнить эти скрипты, используйте следующие инструкции.

    Примечание.

    Эти скрипты не копируют старые WAL HBase в рамках миграции. Таким образом, скрипты не следует использовать в кластерах, для которых включена функция резервного копирования или репликации HBase.

  2. В исходном кластере

    sudo bash migrate-hbase-source.sh
    
  3. В целевом кластере

    sudo bash migrate-hbase-dest.sh  -f <src_default_Fs>
    

Обязательный аргумент для приведенной выше команды:

   -f, --src-fs
   The fs.defaultFS of the source cluster
   For example:
   -f wasb://anynamehbase0316encoder-2021-03-17t01-07-55-935z@anynamehbase0hdistorage.blob.core.windows.net

Дальнейшие действия

Дополнительные сведения о Apache HBase и обновлении кластеров HDInsight см. в следующих статьях: