Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Чтобы обеспечить оптимальный уровень доступности для компонентов аналитики, HDInsight был разработан с уникальной архитектурой для обеспечения высокого уровня доступности критически важных служб. Корпорация Майкрософт разработала некоторые компоненты этой архитектуры, чтобы обеспечить автоматическое переключение на резервный узел. Другие компоненты — это стандартные компоненты Apache, развернутые для поддержки определенных служб. В этой статье объясняется архитектура модели службы высокой доступности в HDInsight, как HDInsight поддерживает отказоустойчивость служб высокой доступности и передовые методы восстановления после других прерываний службы.
Примечание.
Эта статья содержит упоминания термина slave (ведомый) . Корпорация Майкрософт больше не использует его. Когда этот термин будет удален из программного обеспечения, мы удалим его из статьи.
Инфраструктура высокого уровня доступности
HDInsight предоставляет настраиваемую инфраструктуру, чтобы обеспечить высокую доступность четырех основных служб с возможностью автоматического переключения при отказе.
- Сервер Apache Ambari
- Сервер временной шкалы приложений для Apache YARN
- Сервер журнала заданий для Hadoop MapReduce
- Apache Livy
Эта инфраструктура состоит из множества служб и компонентов программного обеспечения, некоторые из которых разработаны корпорацией Майкрософт. Следующие компоненты уникальны для платформы HDInsight:
- Контроллер резервного переключения ведомого устройства
- Главный контроллер отработки отказа
- Служба высокого уровня доступности в рабе
- Служба высокого уровня доступности Master
Существуют также другие службы высокой доступности, которые поддерживаются компонентами надежности Apache с открытым исходным кодом. Эти компоненты также присутствуют в кластерах HDInsight:
- Система файлов Hadoop (HDFS) NameNode
- YARN Диспетчер ресурсов
- HBase Master
В следующих разделах содержатся дополнительные сведения о том, как эти службы работают вместе.
Службы высокой доступности HDInsight
Корпорация Майкрософт предоставляет поддержку четырех служб Apache в следующей таблице в кластерах HDInsight. Чтобы отличить их от служб высокой доступности, поддерживаемых компонентами Apache, их называют службами высокой доступности HDInsight.
| Услуга | Узлы кластера | Типы кластера | Цель |
|---|---|---|---|
| Сервер Apache Ambari | Активный головной узел | Все | Отслеживает и управляет кластером. |
| Сервер временной шкалы приложений для Apache YARN | Активный головной узел | Все, кроме Kafka | Поддерживает отладочную информацию о заданиях YARN, выполняемых в кластере. |
| Сервер журнала заданий для Hadoop MapReduce | Активный головной узел | Все, кроме Kafka | Поддерживает данные для отладки для заданий MapReduce. |
| Apache Livy | Активный головной узел | Спарк | Обеспечивает простое взаимодействие с кластером Spark через интерфейс REST |
Примечание.
Кластеры пакета безопасности HDInsight Enterprise (ESP) в настоящее время обеспечивают высокий уровень доступности сервера Ambari. Сервер временной шкалы приложений, сервер истории заданий и Livy работают только на headnode0 и не выполняют переключение на headnode1 при переключении Ambari. База данных временной шкалы приложения также находится на headnode0, а не на сервере Ambari SQL.
Архитектура
Каждый кластер HDInsight имеет два головных узла в активных и резервных режимах соответственно. Службы высокой доступности HDInsight работают только на главных узлах. Эти службы всегда должны работать на активном головном узле и быть остановлены и помещены в режим обслуживания на резервном головном узле.
Чтобы обеспечить правильные состояния служб повышенной доступности и быструю отработку отказа, HDInsight использует Apache ZooKeeper, который является службой координации для распределенных приложений и проводит выборы активного головного узла. HDInsight также подготавливает несколько фоновых процессов Java, которые координируют процедуру отработки отказа для служб отказоустойчивости HDInsight. Эти службы: главный контроллер отработки отказа, подчиненный контроллер отработки отказа, master-ha-service, а также slave-ha-service.
Apache ZooKeeper
Apache ZooKeeper — это высокопроизводительная служба координации для распределенных приложений. В рабочей среде ZooKeeper обычно выполняется в реплицированном режиме, где реплицированная группа сервера ZooKeeper формирует кворум. Каждый кластер HDInsight имеет три узла ZooKeeper, которые позволяют трем серверам ZooKeeper формировать кворум. HDInsight имеет два кворума ZooKeeper, работающих параллельно друг с другом. Кворум определяет активный головной узел в кластере, на котором должны выполняться службы высокой доступности HDInsight. Другой кворум используется для координации служб высокой доступности, предоставляемых Apache, как это описано в последующих разделах.
Контроллер резервного переключения ведомого устройства
Контроллер отказоустойчивости ведомого сервера выполняется на каждом узле в кластере HDInsight. Этот контроллер отвечает за запуск агента Ambari и сервиса подчинённый-ha () на каждом узле. Он периодически запрашивает первый кворум ZooKeeper об активном головном узле. При изменении активных и резервных узлов управления контроллер переключения на подчиненные узлы при отказе выполняет следующие действия:
- Обновляет файл конфигурации узла.
- Перезапускает агент Ambari.
ведомая служба HA отвечает за остановку служб высокой доступности HDInsight (за исключением сервера Ambari) на резервном главном узле.
Главный контроллер отработки отказа
Главный контроллер переключения выполняется на обоих головных узлах. Оба управляющих контроллера отказоустойчивости взаимодействуют с первым кворумом ZooKeeper, чтобы номинировать головной узел, на котором они работают, в качестве активного головного узла.
Например, если основной контроллер резервирования на головном узле 0 становится избранным, происходят следующие изменения:
- Headnode 0 становится активным.
- Главный контроллер отработки отказа запускает сервер Ambari и master-ha-service на головном узле 0.
- Другой контроллер отказоустойчивости останавливает сервер Ambari и master-ha-service на головном узле 1.
Служба master-ha-service выполняется только на активном головном узле. Она останавливает службы высокой доступности HDInsight (за исключением сервера Ambari) на резервном головном узле и запускает их на активном головном узле.
Процесс резервирования отказов
Монитор работоспособности выполняется на каждом головном узле вместе с главным контроллером отработки отказа для отправки уведомлений пульса в кворум Zookeeper. В этом сценарии головной узел рассматривается как сервис высокой доступности. Монитор работоспособности проверяет работоспособность каждой службы высокого уровня доступности, и если она готова присоединиться к выборам руководства. Если да, этот основной узел участвует в выборах. Если нет, оно выходит из выборов до тех пор, пока не станет готово снова.
Если резервный головной узел когда-либо приобретает статус лидера и получает статус активного узла (например, в случае сбоя с предыдущим активным узлом), его главный контроллер отработки отказа запускает на нем все службы высокой доступности HDInsight. Контроллер отработки отказа главного узла останавливает эти службы на другом головном узле.
Для сбоев служб высокой доступности HDInsight, таких как недоступная или неработоспособная служба, главный контроллер переключения при отказе должен автоматически перезапускать или останавливать службы в соответствии с состоянием головного узла. Пользователи не должны вручную запускать службы HA HDInsight на обоих головных узлах. Вместо этого разрешите автоматическое или ручное переключение на резервный ресурс для восстановления работы службы.
Непреднамеренное вмешательство вручную
Службы высокодоступности HDInsight должны выполняться только на активном головном узле и автоматически перезапускаться при необходимости. Так как отдельные службы высокой доступности не имеют собственного монитора работоспособности, переключение на резервный не может быть инициировано на уровне конкретной службы. Отработка отказа гарантируется на уровне узла, а не на уровне обслуживания.
Некоторые известные проблемы
При ручном запуске службы высокой доступности на резервном узле управления она не остановится до следующего отказа. При работе служб высокой доступности на обоих управляющих узлах некоторые потенциальные проблемы включают: пользовательский интерфейс Ambari недоступен, Ambari выдает сообщения об ошибках, задачи YARN, Spark и Oozie могут застрять.
Когда служба высокой доступности на активном головном узле останавливается, она не будет перезапущена до тех пор, пока не произойдет следующая отработка отказа или не будет перезапущен главный контроллер отработки отказа/сервис высокой доступности. При остановке одного или нескольких служб высокого уровня доступности на активном головном узле, особенно при остановке сервера Ambari, пользовательский интерфейс Ambari недоступен, другие потенциальные проблемы включают сбои заданий YARN, Spark и Oozie.
Службы высокой доступности Apache
Apache обеспечивает высокий уровень доступности HDFS NameNode, YARN ResourceManager и HBase Master, которые также доступны в кластерах HDInsight. В отличие от служб высокой доступности HDInsight, они поддерживаются в кластерах ESP. Службы Apache HA взаимодействуют со вторым кворумом ZooKeeper (описанным в приведенном выше разделе) для избрания активного и резервного состояний и автоматического переключения при отказе. В следующих разделах подробно описано, как работают эти службы.
Узел имени распределенной файловой системы Hadoop (HDFS)
Кластеры HDInsight на основе Apache Hadoop 2.0 или более поздней версии обеспечивают высокий уровень доступности NameNode. На узлах управления работают два NameNodes, которые настроены для автоматического переключения при отказе. NameNodes используют ZKFailoverController для связи с Zookeeper с целью выбора активной или резервной роли. ZKFailoverController выполняется на обоих головных узлах и работает так же, как и основной контроллер отказоустойчивости.
Второй кворум Zookeeper не зависит от первого кворума, поэтому активный NameNode не может работать на активном головном узле. Если активный NameNode мертв или неработоспособен, резервный NameNode назначается и становится активным.
YARN Диспетчер ресурсов
Кластеры HDInsight на основе Apache Hadoop 2.4 или более поздней версии поддерживают высокий уровень доступности YARN ResourceManager. Существуют два ResourceManagers, rm1 и rm2, запущены на узле 0 и узле 1 соответственно. Как и NameNode, YARN ResourceManager также настроен для автоматического переключения на резерв в случае отказа. Другой ResourceManager автоматически становится активным, если текущий активный ResourceManager выходит из строя или не отвечает.
YARN ResourceManager использует встроенный ActiveStandbyElector в качестве детектора сбоев и для выбора лидера. В отличие от HDFS NameNode, YARN ResourceManager не требует отдельной управляющей программы ZKFC. Активный ResourceManager записывает свои состояния в Apache Zookeeper.
Высокая доступность YARN ResourceManager не зависит от NameNode и других служб высокой доступности HDInsight. Активный ResourceManager не должен выполняться на активном головном узле или на том головном узле, где выполняется активный NameNode. Дополнительные сведения о высокой доступности YARN ResourceManager см. в Высокая доступность ResourceManager.
HBase Master
Кластеры HDInsight HBase поддерживают высокий уровень доступности HBase Master. В отличие от других HA-сервисов, которые выполняются на головных узлах, мастеры HBase работают на трех узлах Zookeeper, где один из них является активным мастером, а два других находятся в резерве. Как и NameNode, мастер HBase координируется с Apache Zookeeper для выбора ведущего и автоматически переходит на резервную копию при возникновении проблем с текущим активным мастером. В любое время существует только один активный мастер HBase.