Миграция локальных кластеров Apache Hadoop в Azure HDInsight — рекомендации по архитектуре

В этой статье представлены рекомендации для архитектуры систем Azure HDInsight. Это часть цикла, где приведены лучшие методики, применимые при перемещении локальных систем Apache Hadoop в Azure HDInsight.

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

Большое количество локальных развертываний Apache Hadoop состоит из одного большого кластера, который поддерживает многие рабочие нагрузки. Этот отдельный кластер может быть комплексным и требовать компромиссов для отдельных служб, чтобы обеспечить их совместную работу. При миграции локальных кластеров Hadoop в Azure HDInsight нужен измененный подход.

Кластеры Azure HDInsight предназначены для конкретного типа использований вычислений. Так как хранилище может совместно использоваться несколькими кластерами, можно создать вычислительные кластеры, оптимизированные для нескольких рабочих нагрузок, в соответствии с потребностями разных заданий. У каждого типа кластера есть оптимальная конфигурация для конкретной рабочей нагрузки. В следующей таблице перечислены поддерживаемые типы кластеров в HDInsight и соответствующие рабочие нагрузки.

Рабочая нагрузка Тип кластера HDInsight
Пакетная обработка (ETL/ELT) Hadoop, Spark
Хранение данных Hadoop, Spark, Interactive Query
Центр Интернета вещей или потоковая передача Kafka, Spark
Обработка транзакций NoSQL HBase
Кэширование в памяти для обеспечения интерактивных и ускоренных запросов Интерактивный запрос
Обработка и анализ данных Spark

В приведенной ниже таблице представлены различные способы создания кластера HDInsight.

Средство На основе браузера Командная строка REST API SDK
Портал Azure X
Фабрика данных Azure. X X X X
Azure CLI (версия 1.0) X
Azure PowerShell X
cURL X X
Пакет SDK для .NET X
Пакет SDK для Python X
пакет SDK для Java X
Шаблоны диспетчера ресурсов Azure X

Дополнительные сведения см. в статье Что такое Azure HDInsight и стек технологий Apache Hadoop.

Использование промежуточных кластеров по запросу

Кластеры HDInsight могут не использоваться в течение длительного периода времени. Для экономии расходов на ресурсы HDInsight поддерживает промежуточные кластеры по запросу, которые можно удалить после успешного выполнения рабочей нагрузки.

При удалении кластера связанная учетная запись хранения и внешние метаданные не удаляются. Кластер можно создавать повторно с использованием тех же учетных записей хранения и хранилищ метаданных.

Фабрику данных Azure можно использовать для планирования создания кластеров HDInsight по запросу. Дополнительные сведения см. в статье Руководство. Создание кластеров Apache Hadoop в HDInsight по запросу с помощью Фабрики данных Azure.

Отделение ресурсов хранилища от вычислительных ресурсов

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

В кластерах HDInsight хранилища не нужно размещать совместно с вычислительными ресурсами. Для хранения может использоваться служба хранилища Azure, Azure Data Lake Storage или оба хранилища. Отделение хранилища от вычислительных ресурсов предоставляет следующие преимущества:

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

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

Использование внешних хранилищ метаданных

Существует два основных хранилища метаданных, которые работают с кластерами HDInsight: Apache Hive и Apache Oozie. Хранилище метаданных Hive — это центральный репозиторий схемы, который могут использовать модули обработки данных, такие как Hadoop, Spark, LLAP, Presto и Apache Pig. Хранилище метаданных Oozie хранит сведения о планировании, состояние хода выполнения и выполненные задания Hadoop.

HDInsight использует Базу данных SQL Azure для хранилищ метаданных Hive и Oozie. Есть два способа настроить хранилище метаданных для кластеров HDInsight.

  1. Хранилище метаданных по умолчанию

    • Дополнительные затраты не требуются.
    • Хранилище метаданных удаляется при удалении кластера.
    • Хранилище метаданных не может совместно использоваться разными кластерами.
    • Использует простую Базу данных SQL Azure с ограничением в пять единиц передачи данных.
  2. Пользовательское внешнее хранилище метаданных

    • В качестве хранилища метаданных указывается внешняя База данных SQL Azure.
    • Кластеры могут создаваться и удаляться без потери метаданных, включая сведения о задании Oozie схемы Hive.
    • Одна база данных хранилища метаданных может совместно использоваться различными типами кластеров.
    • При необходимости можно увеличить масштаб хранилища метаданных.
    • Дополнительную информацию см. в статье Использование внешних хранилищ метаданных в Azure HDInsight.

Рекомендации по хранилищу метаданных Hive

Ниже приведены некоторые рекомендации по хранилищу метаданных Hive HDInsight:

  • Используйте пользовательское внешнее хранилище метаданных, чтобы разделить вычислительные ресурсы и метаданные.
  • Начните с уровня S2 экземпляра SQL Azure, предоставляющего 50 DTU и хранилище размером 250 ГБ. Если вы видите узкое место, можно увеличить масштаб базы данных.
  • Не используйте хранилище метаданных, созданное для одной версии кластера HDInsight, с кластерами других версий. Различные версии Hive используют отличающиеся схемы. Например, хранилище метаданных нельзя совместно использовать с кластерами Hive 1.2 и Hive 2.1.
  • Периодически архивируйте пользовательское хранилище метаданных.
  • Разместите хранилище метаданных и кластер HDInsight в одном регионе.
  • Отслеживайте производительность и доступность хранилища метаданных с помощью инструментов мониторинга Базы данных SQL Azure, таких как портал Azure или Azure Monitor.
  • Выполняйте команду ANALYZE TABLE по необходимости, чтобы создавать статистику для таблиц и столбцов. Например, ANALYZE TABLE [table_name] COMPUTE STATISTICS.

Рекомендации для различных рабочих нагрузок

  • Рассмотрите возможность использования кластера LLAP для интерактивных запросов Hive с улучшенным временем отклика. LLAP — это новая функция в Hive 2.0, которая разрешает кэширование запросов в памяти.
  • Рассмотрите возможность использования заданий Spark вместо заданий Hive.
  • Рассмотрите возможность замены запросов на основе Impala на запросы LLAP.
  • Рассмотрите возможность замены заданий MapReduce на задания Spark.
  • Обдумайте возможность замены пакетных заданий Spark с низкой задержкой на задания структурированной потоковой передачи Spark.
  • Рассмотрите возможность использования Фабрики данных Azure (ADF) версии 2.0 для оркестрации данных.
  • Рассмотрите использование Ambari для управления кластером.
  • Измените хранилище данных для обработки сценариев с локальной системы HDFS на WASB, ADLS или ADFS.
  • Рассмотрите использование Ranger RBAC для таблиц Hive и аудита.
  • Рассмотрите вопрос об использовании CosmosDB вместо MongoDB или Cassandra.

Дальнейшие действия

Прочитайте следующую статью в этом цикле: