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


Не удается запустить Apache HBase Master (HMaster) в Azure HDInsight

В этой статье описаны действия по устранению неполадок и возможные способы решения проблем при взаимодействии с кластерами Azure HDInsight.

Сценарий: Master startup cannot progress, in holding-pattern until region comes online

Проблема

Не удается запустить HMaster из-за следующего предупреждения:

hbase:namespace,,<timestamp_region_create>.<encoded_region_name>.is NOT online; state={<encoded_region_name> state=OPEN, ts=<some_timestamp>, server=<server_name>}; ServerCrashProcedures=true. Master startup cannot progress, in holding-pattern until region onlined. 

Например, значения параметров могут отличаться в фактическом сообщении:

hbase:namespace,,1546588612000.0000010bc582e331e3080d5913a97000. is NOT online; state={0000010bc582e331e3080d5913a97000 state=OPEN, ts=1633935993000, server=<wn fqdn>,16000,1622012792000}; ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined.

Причина

HMaster проверяет каталог WAL на серверах регионов, прежде чем возвращать регионы OPEN в сети. В этом случае, если этот каталог не был представлен, он не начал работу

Разрешение

  1. Создайте этот фиктивный каталог с помощью команды: sudo -u hbase hdfs dfs -mkdir /hbase-wals/WALs/<wn fqdn>,16000,1622012792000

  2. Перезапустите службу HMaster через пользовательский интерфейс Ambari.

Если вы используете hbase-2.x, см. дополнительные сведения о том, как использовать hbck2 для назначения пространства имен и мета таблицы

Сценарий: сбой атомарной операции переименования

Проблема

В процессе запуска обнаружены непредвиденные файлы.

Причина

В процессе запуска HMaster выполняет множество действий инициализации, включая перемещение данных из папки временных файлов (.tmp) в папку данных. HMaster также проверяет, нет ли в папке упреждающего протоколирования (WAL) региональных серверов, которые не отвечают.

HMaster выполняет базовую команду list в папках WAL. Каждый раз, когда в любой из этих папок обнаруживается непредвиденный файл, возникает исключение и сервер не будет запущен.

Разрешение

Проверьте стек вызовов и попытайтесь определить, какая папка может быть причиной проблемы (например, папка WAL или папка .tmp). Затем в обозревателе служба хранилища Azure или с помощью команд HDFS попробуйте найти файл проблемы. Обычно этот файл вызывается *-renamePending.json. (*-renamePending.json — это файл журнала, используемый для реализации атомарной операции переименования в драйвере WASB. Из-за ошибок в реализации эти файлы могут оставаться после аварийного завершения процесса и т. п.) Принудительно удалите этот файл в Cloud Explorer или с помощью команд HDFS.

Иногда в этом расположении может находиться временный файл с именем такого вида: $$$.$$$. Для просмотра этого файла необходимо использовать команду HDFSls. Файл не отображается в обозревателе служба хранилища Azure. Чтобы удалить этот файл, используйте команду HDFS hdfs dfs -rm /\<path>\/\$\$\$.\$\$\$.

После выполнения этих команд HMaster должен сразу запуститься.


Сценарий: отсутствуют адреса серверов

Проблема

Может появиться сообщение, указывающее, что hbase: meta таблица не подключена к сети. При выполнении hbck появляется сообщение о том, что в регионе не удалось найти hbase: meta table replicaId 0 is not found on any region.. В журналах HMaster вы видите сообщение No server address listed in hbase: meta for region hbase: backup <region name>.

Причина

HMaster не удалось инициализировать после перезапуска HBase.

Разрешение

  1. В оболочке HBase введите следующие команды (при необходимости измените на фактические значения):

    scan 'hbase:meta'
    delete 'hbase:meta','hbase:backup <region name>','<column name>'
    
  2. Удалите запись hbase: namespace. Эта запись может быть результатом той же ошибки, о которой сообщается при сканировании таблицы hbase: namespace.

  3. Перезапустите активный сервер HMaster с помощью интерфейса Ambari, чтобы HBase стала работать.

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

    hbase hbck -ignorePreCheckPermission -fixAssignments
    

Сценарий: java.io.IOException: Timedout

Проблема

Время ожидания HMaster истекает и возникает неустранимое исключение следующего вида: java.io.IOException: Timedout 300000ms waiting for namespace table to be assigned.

Причина

Эта проблема может возникнуть, если у вас есть множество таблиц и регионов, которые не были удалены при перезапуске служб HMaster. Время ожидания — это известная проблема HMaster. Общие задачи запуска кластера могут занять много времени. Если таблица пространства имен еще не назначена, HMaster завершает работу. Длительные задачи запуска происходят, когда существует большое количество незапечатанных данных, и время ожидания в течение пяти минут недостаточно.

Разрешение

  1. В пользовательском интерфейсе Apache Ambari выберите HBase>Configs (HBase -> Конфигурации). В настраиваемом файле hbase-site.xml добавьте следующий параметр:

    Key: hbase.master.namespace.init.timeout Value: 2400000  
    
  2. Перезапустите необходимые службы (HMaster или другие службы HBase).


Сценарий: частый перезапуск сервера региона

Проблема

Узлы периодически перезагружаются. В журналах сервера региона отображаются записи следующего вида:

2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms

Причина: время ожидания сеанса zookeeper

Длительная пауза в сборке мусора виртуальной машины Java для regionserver. Пауза regionserver приводит к неответственности и не в состоянии отправить сердце избитые сердце в HMaster в течение времени ожидания сеанса зоопарка 40-х. HMaster считает regionserver мертвым, прерывает regionserver и перезапускает.

Для решения проблемы измените время ожидания сеанса Zookeeper. Потребуется изменить не только параметр hbase-site zookeeper.session.timeout, но и параметр zoo.cfg maxSessionTimeout для Zookeeper.

  1. Откройте пользовательский интерфейс Ambari, выберите HBase -> Configs -> Settings (HBase - Конфигурации - Параметры) и в разделе "Время ожидания" измените значение "Время ожидания сеанса" Zookeeper.

  2. Доступ к пользовательскому интерфейсу Ambari перейдите в Zookeeper —> Configs —> Customzoo.cfg, add/change the following setting. Значение должно совпадать со значением параметра HBase zookeeper.session.timeout.

    Key: maxSessionTimeout Value: 120000  
    
  3. Перезапустите все необходимые службы.

Причина: перегруженный RegionServer

Чтобы вычислить верхнюю границу, следуйте указаниям по количеству регионов на RS — верхнюю границу. Например: 8000 (Region server Heap -- Xmx in MB) * 0.4 (hbase.regionserver.global.memstore.size) /64 (hbase.regionserver.hlog.blocksize/2) = 50

Чтобы устранить эту проблему, увеличьте масштаб кластера HBase.


Сценарий: ошибка разделения журнала

Проблема

Службам HMaster не удалось подключиться к кластеру HBase.

Причина

Неправильно настроены параметры HDFS и HBase для дополнительной учетной записи хранения.

Разрешение

set hbase.rootdir: wasb://@.blob.core.windows.net/hbase и перезапустите службы на Ambari.


Следующие шаги

Если вы не видите своего варианта проблемы или вам не удается ее устранить, дополнительные сведения можно получить, посетив один из следующих каналов.

  • Получите ответы специалистов Azure на сайте поддержки сообщества пользователей Azure.

  • Подпишитесь на @AzureSupport — официальный канал Microsoft Azure для улучшения качества взаимодействия с клиентами. Вступайте в сообщество Azure для получения нужных ресурсов: ответов, поддержки и советов экспертов.

  • Если вам нужна дополнительная помощь, отправьте запрос в службу поддержки на портале Azure. Выберите Поддержка в строке меню или откройте центр Справка и поддержка. Дополнительные сведения см. в статье Создание запроса на поддержку Azure. Доступ к управлению подписками и поддержкой выставления счетов уже включен в вашу подписку Microsoft Azure, а техническая поддержка предоставляется в рамках одного из планов Службы поддержки Azure.