Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье рассматривается обновление кластера 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 с помощью скриптов для автоматической миграции.
Подготовьте исходный кластер:
- Остановите прием данных.
- Очистите данные memstore.
- Остановите HBase в Ambari.
- Для кластеров с ускоренной записью создайте резервную копию каталога журнала упреждающего протоколирования (WAL).
Подготовьте целевой кластер:
- Создайте целевой кластер.
- Остановите HBase в Ambari.
- Обновите
fs.defaultFS
в конфигурациях службы HDFS, чтобы указывать на контейнер исходного кластера. - Для кластеров с ускоренной записью обновите
hbase.rootdir
в конфигурациях службы HBase для ссылки на исходный контейнер исходного кластера. - Очистите данные Zookeeper.
Выполните миграцию:
- Очистите и перенесите WAL.
- Скопируйте приложения из контейнера по умолчанию целевого кластера в исходный контейнер.
- Запустите все службы из целевого кластера Ambari.
- Проверьте HBase.
- Удалите исходный кластер.
Подробные шаги и команды миграции
Эти подробные инструкции и команды позволяют перенести кластер Apache HBase.
Подготовка исходного кластера
Остановите прием данных в исходный кластер HBase.
Очистите исходный кластер HBase, который вы обновляете.
HBase записывает входящие данные в хранилище в памяти под названием memstore. После достижения определенного размера хранилище HBase сбрасывает его на диск для долгосрочного хранения в учетной записи хранения кластера. Удаление исходного кластера после обновления также удаляет все данные в хранилищах memstores. Чтобы сохранить данные, перед обновлением вручную сбросите хранилище memstore каждой таблицы на диск.
Вы можете очистить данные memstore, выполнив скрипт flush_all_tables.sh из репозитория GitHub azure hbase-utils.
Вы также можете очистить данные 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 находится в базовой поддержке и не рекомендуется для новых кластеров.
- В 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 см. в следующих статьях: