Автор статьи: Рустем Галиев
Senior DevOps Engineer & Integration Architect в IBM
Давайте поговорим о том, как настроить автомасштабирование для существующего кластера Azure HDInsight с помощью Azure CLI.
Microsoft Azure — это служба облачных вычислений, предлагаемая и управляемая Microsoft.
Azure HDInsight — это управляемая комплексная облачная служба аналитики с открытым кодом, предназначенная для предприятий. С помощью HDInsight в среде Azure можно использовать платформы с открытым кодом, такие как Apache Spark, Apache Hive, LLAP, Apache Kafka, Hadoop и другие.
Hadoop и Spark появились еще до Azure HDInsight. Такие механизмы, как Spark или Hadoop, можно использовать для масштабного анализа данных с высокой производительностью. Вообще говоря, Spark имеет лучшую производительность, потому что он хранит и обрабатывает данные в памяти. Hadoop, с другой стороны, хранит данные на жестких дисках.
Вот общие шаги, которые необходимо предпринять для обработки данных в Azure HDInsight.
Подготовим кластер Azure HDInsight на портале или с помощью таких инструментов, как Azure CLI.
Обработка данных, используя функции вашего кластера, такие как выполнение запросов Hive и т. д.
С вводной разобрались, перейдем к делу
Войдем в Azure CLI:
az login -u $username -p $password
Создадим новую учетную запись хранения Azure для использования с кластером HDInsight:
az storage account create -n $storageAccountName --resource-group $resource --sku Standard_LRS
Сохраним ключ учетной записи хранения в переменной:
storageKey=$(az storage account keys list -g $resource -n $storageAccountName --output json --query [0].value)
Создадим контейнер в предыдущей учетной записи хранения:
az storage container create -n myhdcontainer --account-name $storageAccountName --account-key $storageKey
Наконец создадим новый кластер Azure HDInsight. Это займет до 20 минут:
az hdinsight create --resource-group $resource --name $hdClusterName --type spark --http-password "MySecureP@$$word1" --storage-account $storageAccountName --storage- контейнер myhdcontainer --minimal-tls-version 1.2 --encryption-in-transit true
О чем нам говорят параметры команды:
name
: имя кластера Azure HDInsight.resource-group
: родительская группа ресурсов для нового кластера.type
: тип кластера HDInsight, например hadoop, hbase, kafka, storm или spark.http-password
: Кластерный пароль.storage-account
: имя учетной записи Azure Storage/Data Lake Storage 2-го поколения, которая будет присоединена к кластеру.storage-container
: контейнер хранилища, который будет использовать кластер. Использует имя кластера, если оно не указано.minimal-tls-version
: минимальная поддерживаемая версия TLS. Выберите максимально возможную версию для большей безопасности.encryption-in-transit
: включение/выключение шифрования при передаче с использованием SSL/TLS.
Общие сведения об автомасштабировании Azure HDInsight
Azure HDInsight — это служба аналитики данных, которая позволяет вам использовать широкий спектр аналитических механизмов, включая Hadoop, Apache Spark, Apache Hive и другие, в ваших решениях по обработке и анализу данных.
В каждом кластере Azure HDInsight есть один или несколько рабочих узлов. Это машины, которые обрабатывают ваши данные. Мы можем управлять количеством рабочих узлов в кластере следующими способами:
Установив фиксированное количество рабочих узлов на кластер, например, 5 узлов.
Настроив автомасштабирование для кластера. Мы устанавливаем минимальные и максимальные пределы рабочих узлов, и кластер будет автоматически масштабироваться в зависимости от нагрузки.
Запланируем добавление или удаление узлов в установленное время; например, установим значение для количества рабочих узлов 3 реплики в 11:00 CEST.
В этом практикуме мы настроим второй вариант, а также предоставим команду CLI для третьего.
Настройка автомасштабирования Azure HDInsight
Перепровим все. Вернее просто проверим, существует ли наш кластер:
az hdinsight list --resource-group $resource --query [].name
Настроим автомасштабирование для существующего кластера. Наш кластер будет иметь минимум 1 и максимум 3 рабочих узла в зависимости от нагрузки кластера:
az hdinsight autoscale create --resource-group $resource --cluster-name $hdClusterName --type Load --min-workernode-count 1 --max-workernode-count 3
Говорим да “y”, эта операция переопределит предыдущую конфигурацию автомасштабирования. Нас просто спросят:
Are you sure you want to perform this operation (y/n):
Выполнение этой команды может занять до 5 минут.
Вот параметры команды:
cluster-name
: имя кластера Azure HDInsight, для которого нужно настроить автомасштабирование.resource-group
: родительская группа ресурсов для кластера.type
: автомасштабирование в зависимости от нагрузки на кластер или по расписанию. Допустимые значения: «Load» и «Schedule».min-workernode-count
: минимальное количество рабочих узлов на кластер.max-workernode-count
: максимальное количество рабочих узлов на кластер.
Вы также можете настроить масштабирование по расписанию. Например, следующая команда установит для рабочих узлов кластера значение 3:
az hdinsight autoscale create --resource-group $resource --cluster-name $hdClusterName --type Schedule --timezone "Central European Standard Time" --days Tuesday Wednesday --time 11:00 --workernode-count 3
Используем следующую команду, чтобы проверить параметры автомасштабирования кластера Azure HDInsight:
az hdinsight autoscale show --resource-group $resource --cluster-name $hdClusterName
Убедимся, что для параметра maxInstanceCount
установлено значение 3, а для параметра minInstanceCount
— значение 1.
Обратите внимание, что переменная среды $resource
содержит имя выделенной группы ресурсов Azure.
Давайте также проверим эти параметры на портале Azure.
Вы можете проверить параметры автомасштабирования HDInsight на портале Azure. Войдите на портал Azure, используя учетные данные Azure. Если вам нужно напомнить имя пользователя и пароль, выполните следующие команды:
echo "Username: $username"
echo "Password: $password"
После входа в систему перейдите в кластеры HDInsight. Убедитесь:
Что в разделе «Settings» нажмите «Cluster size».
Что установлен флажок Enable autoscale.
Что тип автомасштабирования — «Load-based».
Что минимальное значение равно 1, а максимальное установлено на 3.
Если все верно, то вы восхитительны!
В заключение приглашаю всех на бесплатный урок курса Cloud Solution Architecture, где рассмотрим основные особенности бессерверного исполнение программного кода, а так же изучим базовые принципы архитектуры основанной на событиях.