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


Не удается запустить 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. Если в любой из этих папок HMaster обнаруживает непредвиденный файл, возникает исключение и сервер не запускается.

резолюция

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

Долгая пауза GC regionserver JVM. Пауза regionserver приводит к неотзывчивости и неспособности отправить сигнал heartbeat в HMaster в пределах времени ожидания сессии Zookeeper в 40 секунд. HMaster считает regionserver мертвым, прерывает regionserver и перезапускает.

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

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

  2. Доступ к интерфейсу Ambari: перейдите в Zookeeper —> Configs —> Customzoo.cfg, добавьте/измените следующее настройку. Значение должно совпадать со значением параметра 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.