Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как обновить кластер 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 см. в следующих статьях: