Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как обновить кластер Apache HBase в Azure HDInsight, чтобы использовать более новую версию в другой учетной записи хранения Azure.
Эта статья применима только в том случае, если для исходного и целевого кластеров важно использовать разные учетные записи хранения. Чтобы выполнить обновление версий для тех же учетных записей хранения на исходном и целевом кластерах, см. Перенос Apache HBase на новую версию.
Время простоя при обновлении должно составлять всего несколько минут. Это время простоя вызвано действиями по очистке всех данных в памяти, а также временем настройки и перезапуска служб в новом кластере. Результаты будут отличаться в зависимости от количества узлов, объема данных и других переменных.
Проверка совместимости Apache HBase
Перед обновлением Apache HBase убедитесь, что версии HBase в исходном и конечном кластерах совместимы. Ознакомьтесь с матрицей совместимости версий HBase и заметками о выпуске в справочном руководстве по HBase, чтобы убедиться в совместимости приложения с новой версией.
Ниже приведен пример матрицы совместимости. Y указывает совместимость и N указывает на потенциальную несовместимость:
| Тип совместимости | Основная версия | Минорная версия | Патч |
|---|---|---|---|
| Совместимость клиента и сервера на уровне протоколов передачи данных | Н | У | У |
| Совместимость серверов | Н | У | У |
| Совместимость форматов файлов | Н | У | У |
| Совместимость API клиента | Н | У | У |
| Двоичная совместимость клиента | Н | Н | У |
| Ограниченная совместимость API на стороне сервера | |||
| Стабильный | Н | У | У |
| Развитие | Н | Н | У |
| Нестабильно | Н | Н | Н |
| Совместимость зависимостей | Н | У | У |
| Совместимость операций | Н | Н | У |
Заметки о выпуске версии HBase должны описывать любые критические несовместимости. Протестируйте приложение в кластере, запустив целевые версии HDInsight и HBase.
Дополнительные сведения о версиях HDInsight и о совместимости см. в статье Версии Azure HDInsight.
Общие сведения о переносе кластера Apache HBase
Чтобы обновить кластер Apache HBase в Azure HDInsight и перенести его в новую учетную запись хранения, выполните следующие действия. Подробные инструкции по каждому этапу и конкретные команды приводятся далее.
Подготовьте исходный кластер:
- Остановите прием данных.
- Очистка
memstoreданных. - Остановите HBase в Ambari.
- Для кластеров с ускоренной записью создайте резервную копию каталога журнала упреждающего протоколирования (WAL).
Подготовьте целевой кластер:
- Создайте целевой кластер.
- Остановите HBase в Ambari.
- Очистите данные Zookeeper.
- Переключите пользователя на HBase.
Выполните миграцию:
- Очистите целевую файловую систему, перенесите данные и удалите
/hbase/hbase.id. - Очистите и перенесите WAL.
- Запустите все службы из целевого кластера Ambari.
- Проверьте HBase.
- Удалите исходный кластер.
Подробные шаги и команды миграции
Эти подробные инструкции и команды позволяют перенести кластер Apache HBase в новую учетную запись хранения.
Подготовка исходного кластера
Остановите прием данных в исходный кластер HBase.
Очистите исходный кластер HBase, который вы обновляете.
HBase записывает входящие данные в хранилище в памяти под названием a
memstore. Когдаmemstoreдостигает определенного размера, HBase сбрасывает данные на диск для долгосрочного хранения в учетной записи хранения кластера. При удалении исходного кластера после обновления также удаляются все данные в исходном кластереmemstores. Чтобы сохранить данные, перед обновлением вручную сбросьте каждую таблицуmemstoreна диск.Данные можно сбросить, выполнив скрипт
memstoreиз GitHub репозитория 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.Очистите данные Zookeeper в целевом кластере, выполнив следующие команды на любом узле Zookeeper или на рабочем узле:
hbase zkcli rmr /hbase-unsecure quitПереключите пользователя на HBase, выполнив команду
sudo su hbase.
Очистка и перенос файловой системы и WAL
Выполните следующие команды в зависимости от исходной версии HDI и наличия ускоренных операций записи в исходном и целевом кластерах. Целевой кластер всегда является HDI версии 4.0, так как HDI 3.6 находится в базовой поддержке и не рекомендуется для новых кластеров.
- Исходный кластер — HDI 3.6 с ускорением записи, а целевой кластер имеет ускорение записи.
- Исходный кластер — HDI 3.6 без ускорения записи, а целевой кластер имеет ускорение записи.
- Исходный кластер — HDI 3.6 без ускорения записи, а целевой кластер не имеет ускоренных операций записи.
- Исходный кластер — HDI 4.0 с ускорением записи, а целевой кластер имеет ускорение записи.
- Исходный кластер — HDI 4.0 без ускорения записи, а целевой кластер имеет ускорение записи.
- Исходный кластер — HDI 4.0 без ускорения записи, а целевой кластер не имеет ускоренных операций записи.
Параметр <container-endpoint-url> для учетной записи хранения имеет значение https://<storageaccount>.blob.core.windows.net/<container-name>. Передайте токен SAS для учетной записи хранения в самом конце URL-адреса.
- Параметр
<container-fullpath>для типа хранилища WASB имеет значениеwasbs://<container-name>@<storageaccount>.blob.core.windows.net. - Параметр
<container-fullpath>для типа хранилища Azure Data Lake Storage 2-го поколения имеет значениеabfs://<container-name>@<storageaccount>.dfs.core.windows.net.
Команды копирования
В HDFS для копирования используется команда hdfs dfs <copy properties starting with -D> -cp.
Если копируемые файлы имеют формат, отличный от страничного BLOB-объекта, используйте команду hadoop distcp для повышения производительности: hadoop distcp <copy properties starting with -D>
Чтобы передать ключ учетной записи хранения, используйте:
-Dfs.azure.account.key.<storageaccount>.blob.core.windows.net='<storage account key>'-Dfs.azure.account.keyprovider.<storageaccount>.blob.core.windows.net=org.apache.hadoop.fs.azure.SimpleKeyProvider
Вы также можете применить AzCopy для повышения производительности при копировании файлов данных HBase.
Выполните команду AzCopy:
azcopy cp "<source-container-endpoint-url>/hbase" "<target-container-endpoint-url>" --recursiveЕсли целевая учетная запись хранения является хранилищем BLOB-объектов Azure, выполните этот шаг после копирования. Если в качестве целевой учетной записи хранения используется Data Lake Storage 2-го поколения, пропустите этот шаг.
Драйвер Hadoop WASB использует специальные блобы нулевого размера, соответствующие каждому каталогу. AzCopy пропускает эти файлы при копировании. Некоторые операции WASB используют эти блоки, поэтому их нужно создать в целевом кластере. Чтобы создать объекты BLOB, выполните следующую команду Hadoop на любом узле в целевом кластере.
sudo -u hbase hadoop fs -chmod -R 0755 /hbase
Вы можете скачать AzCopy по ссылке, предоставленной в статье Начало работы с AzCopy. Дополнительные сведения об использовании AzCopy см. в azcopy copy.
Исходный кластер — HDI 3.6 или HDI 4.0 с ускорением записи, а в целевом кластере есть ускорение записи.
Чтобы очистить файловую систему и перенести данные, выполните следующие команды:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /Удалите
hbase.id, выполнив командуhdfs dfs -rm /hbase/hbase.idЧтобы очистить и перенести WAL, выполните следующие команды:
hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal hdfs dfs -cp <source-container-fullpath>/hbase-wal-backup/hbasewal hdfs://<destination-cluster>/hbasewal
Исходный кластер — HDI 3.6 без ускорения записи, а целевой кластер имеет ускорение записи.
Чтобы очистить файловую систему и перенести данные, выполните следующие команды:
hdfs dfs -rm -r /hbase hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -cp <source-container-fullpath>/hbase / hdfs dfs -rm -r /hbase/*WALsУдалите
hbase.id, выполнив командуhdfs dfs -rm /hbase/hbase.idЧтобы очистить и перенести WAL, выполните следующие команды:
hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal/* hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -cp <source-container-fullpath>/hbase/*WALs hdfs://<destination-cluster>/hbasewal
Исходный кластер — HDI 3.6 без ускорения записи, а целевой кластер не имеет ускоренных операций записи.
Чтобы очистить файловую систему и перенести данные, выполните следующие команды:
hdfs dfs -rm -r /hbase hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -cp <source-container-fullpath>/hbase / hdfs dfs -rm -r /hbase/*WALsУдалите
hbase.id, выполнив командуhdfs dfs -rm /hbase/hbase.idЧтобы очистить и перенести WAL, выполните следующие команды:
hdfs dfs -rm -r /hbase-wals/* hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -cp <source-container-fullpath>/hbase/*WALs /hbase-wals
Исходный кластер — HDI 4.0 без ускорения записи, а в целевом кластере есть ускорение записи.
Чтобы очистить файловую систему и перенести данные, выполните следующие команды:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /Удалите
hbase.id, выполнив командуhdfs dfs -rm /hbase/hbase.idЧтобы очистить и перенести WAL, выполните следующие команды:
hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals hdfs://<destination-cluster>/hbasewal
Исходный кластер — HDI 4.0 без ускорения записи, а в целевом кластере нет ускоренных операций записи.
Чтобы очистить файловую систему и перенести данные, выполните следующие команды:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /Удалите
hbase.id, выполнив командуhdfs dfs -rm /hbase/hbase.idЧтобы очистить и перенести WAL, выполните следующие команды:
hdfs dfs -rm -r /hbase-wals/* hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals /
Завершение миграции
В целевом кластере сохраните внесенные изменения и перезапустите все необходимые службы по инструкциям Ambari.
Укажите в вашем приложении целевой кластер.
Примечание.
Статическое DNS-имя приложения изменится после обновления. Вместо жесткого программирования этого DNS-имени можно настроить в параметрах DNS для доменного имени запись CNAME, которая указывает на имя кластера. Другой вариант — использовать файл конфигурации для приложения, которое можно обновить без повторного развертывания.
Начните поглощение.
Проверьте согласованность HBase и работу операций языка описания данных (DDL) и языка манипулирования данными (DML).
Если в целевом кластере все работает нормально, можно удалить исходный кластер.
Дальнейшие действия
Дополнительные сведения о Apache HBase и обновлении кластеров HDInsight см. в следующих статьях: