Перенос данных кластера Apache HBase в новую версию
В этой статье рассматривается обновление кластера Apache HBase в Azure HDInsight до более новой версии.
Сведения в этой статье применимы только в том случае, если для исходных и целевых кластеров используется одна и та же учетная запись хранения Azure. Сведения об обновлении с использованием новой или другой учетной записи хранения для целевого кластера см. в статье о переносе Apache HBase в новую версию с новой учетной записью хранения.
Время простоя при таком обновлении должно составлять всего несколько минут. Этот простой связан с необходимостью записать на диск все данные из памяти, а также настроить службу в новом кластере и перезапустить ее. Результаты будут различаться в зависимости от количества узлов, объема данных и других переменных.
Проверка совместимости Apache HBase
Перед обновлением Apache HBase убедитесь, что версии HBase в исходном и конечном кластерах совместимы. Ознакомьтесь с матрицей совместимости версий HBase и заметками о выпуске в руководстве по HBase, чтобы убедиться в совместимости приложения с новой версией.
Ниже приведен пример матрицы совместимости версий. "Да" означает совместимость, а "Нет" — потенциальную несовместимость:
Тип совместимости | Основной номер версии | Дополнительный номер версии | Обновление |
---|---|---|---|
Совместимость клиента и сервера на уровне передачи данных | Нет | Да | Да |
Совместимость серверов | Нет | Да | Да |
Совместимость форматов файлов | Нет | Да | Да |
Совместимость API клиента | Нет | Да | Да |
Совместимость клиента на уровне двоичного кода | Нет | N | Да |
Ограниченная совместимость API на стороне сервера | |||
объем стабилен | Нет | Да | Да |
Развитие | Нет | N | Да |
Работает неустойчиво | Нет | N | Нет |
Совместимость зависимостей | Нет | Да | Да |
Совместимость операций | Нет | Нет | Да |
Дополнительные сведения о версиях HDInsight и о совместимости см. в статье Версии Azure HDInsight.
Общие сведения о переносе кластера Apache HBase
Чтобы обновить кластер Apache HBase в Azure HDInsight, выполните следующие основные действия. Для получения подробных инструкций см. подробные шаги и команды или используйте скрипты из раздела Миграция HBase с помощью скриптов для автоматической миграции.
Подготовка исходного кластера
- Остановите прием данных.
- Сбросьте все данные из memstore на диск.
- Остановите HBase в Ambari.
- Для кластеров с ускоренной записью создайте резервную копию каталога журнала упреждающего протоколирования (WAL).
Подготовка целевого кластера
- Создайте целевой кластер.
- Остановите HBase в Ambari.
- Обновите
fs.defaultFS
в конфигурациях службы HDFS для ссылки на исходный контейнер исходного кластера. - Для кластеров с ускоренной записью обновите
hbase.rootdir
в конфигурациях службы HBase для ссылки на исходный контейнер исходного кластера. - Очистите данные Zookeeper.
Выполнение миграции
- Очистите и перенесите WAL.
- Скопируйте приложения из контейнера по умолчанию целевого кластера в исходный контейнер.
- Запустите все службы в целевом кластере Ambari.
- Проверьте HBase.
- Удалите исходный кластер.
Подробные шаги и команды миграции
Эти подробные инструкции и команды позволяют перенести кластер Apache HBase.
Подготовка исходного кластера
Остановите прием данных в исходный кластер HBase.
Очистите исходный кластер HBase, который вы обновляете.
HBase записывает входящие данные в хранилище в памяти, которое называется memstore. Когда memstore достигает определенного размера, HBase переносит его на диск для долговременного хранения в учетной записи хранения кластера. При удалении исходного кластера после обновления также удаляются все данные из memstore. Чтобы сохранить эти данные, вручную сбросьте memstore для каждой таблицы на диск, прежде чем начинать обновление.
Данные memstore можно сбросить на диск с помощью скрипта flush_all_tables. sh из репозитория Azure hbase-utils на сайте GitHub.
Можно также сбросить данные memstore на диск, запустив следующую команду оболочки HBase из кластера HDInsight.
hbase shell flush "<table-name>"
Войдите в Apache Ambari в исходном кластере с помощью
https://<OLDCLUSTERNAME>.azurehdinsight.net
и остановите на нем работу служб HBase.В запросе установите флажок, подтверждающий включение режима обслуживания для HBase.
Подробные сведения о подключении к платформе Ambari и ее использовании см. в статье Управление кластерами HDInsight с помощью веб-интерфейса Ambari.
Если в исходном кластере HBase не используются операции ускоренной записи, пропустите этот шаг. Для исходных кластеров HBase с операциями ускоренной записи создайте резервную копию каталога WAL в HDFS, выполнив следующие команды из сеанса SSH на любом узле Zookeeper или рабочему узле исходного кластера.
hdfs dfs -mkdir /hbase-wal-backup hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
Подготовка целевого кластера
На портале Azure настройте новый целевой кластер HDInsight, используя ту же учетную запись хранения, что и для исходного кластера, но укажите другое имя контейнера.
Войдите в Apache Ambari в новом кластере (
https://<NEWCLUSTERNAME>.azurehdinsight.net
) и остановите работу служб HBase.В разделе Службы>HDFS>Конфигурации>Дополнительно>Дополнительные свойства core-site измените параметр HDFS
fs.defaultFS
так, чтобы он указывал на исходное имя контейнера исходного кластера. Например, значение параметра на следующем снимке экрана должно быть изменено наwasbs://hbase-upgrade-old-2021-03-22
.Если в целевом кластере имеется функция ускоренной записи, измените путь
hbase.rootdir
так, чтобы он указывал на исходное имя контейнера исходного кластера. Например, следующий путь должен быть изменен наhbase-upgrade-old-2021-03-22
. Если в кластере нет функции ускоренной записи, пропустите этот шаг.Очистите данные Zookeeper в целевом кластере, выполнив следующие команды на любом узле Zookeeper или на рабочем узле.
hbase zkcli rmr /hbase-unsecure quit
Очистка и миграция WAL
Выполните те из следующих команд, которые соответствуют используемой исходной версии HDI и наличию функции ускоренной записи в исходном и целевом кластерах.
- Целевой кластер всегда имеет версию HDI 4.0, так как HDI версии 3.6 имеет только поддержку Basic и не рекомендуется для новых кластеров.
- В 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 3.6 без ускоренной записи, в целевом кластере есть ускоренная запись.
- Исходный кластер HDI 3.6 без ускоренной записи, в целевом кластере нет ускоренной записи.
- Исходный кластер HDI 4.0 с ускоренной записью, в целевом кластере есть ускоренная запись.
- Исходный кластер HDI 4.0 без ускоренной записи, в целевом кластере есть ускоренная запись.
- Исходный кластер HDI 4.0 без ускоренной записи, в целевом кластере нет ускоренной записи.
Исходный кластер 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 /
Выполнение миграции
Используя контекст пользователя
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
В целевом кластере сохраните внесенные изменения и перезапустите все необходимые службы в соответствии с инструкциями Ambari.
Настройте приложение для целевого кластера.
Примечание
Статическое DNS-имя приложения изменится после обновления. Вместо жесткого программирования этого DNS-имени можно настроить в параметрах DNS для доменного имени запись CNAME, которая указывает на имя кластера. Другой вариант — использовать файл конфигурации для приложения, которое можно обновить без повторного развертывания.
Начните прием данных.
Проверьте согласованность HBase и работу операций языка описания данных DDL и языка обработки данных DML.
Если в целевом кластере все работает нормально, можно удалить исходный кластер.
Миграция HBase с помощью сценариев
Выполните скрипт migrate-hbase-source.sh в исходном кластере и migrate-hbase-dest.sh в целевом кластере. Чтобы выполнить эти скрипты, используйте следующие инструкции.
Примечание
Эти скрипты не копируют старые WAL HBase в рамках миграции. Таким образом, скрипты не следует использовать в кластерах, для которых включена функция резервного копирования или репликации HBase.
В исходном кластере
sudo bash migrate-hbase-source.sh
В целевом кластере
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 см. в следующих статьях: