Управляемый сервис для Apache Spark

1. Введение — Управляемый сервис для Apache Spark

Managed Service for Apache Spark — это полностью управляемый и масштабируемый сервис для запуска Apache Spark, Apache Flink, Presto и многих других инструментов и фреймворков с открытым исходным кодом. Используйте Managed Service for Apache Spark для модернизации озер данных, ETL/ELT и безопасной обработки данных в глобальном масштабе. Managed Service for Apache Spark также полностью интегрирован с несколькими сервисами Google Cloud, включая BigQuery , Cloud Storage , Gemini Enterprise Agent Engine и Knowledge Catalog .

Управляемая служба для Apache Spark доступна в двух режимах развертывания:

  • Управляемый бессерверный Apache Spark позволяет запускать задания PySpark без необходимости настройки инфраструктуры и автомасштабирования. Управляемый Apache Spark поддерживает пакетные рабочие нагрузки PySpark, а также сессии/ноутбуки.
  • Управляемые кластеры Apache Spark позволяют управлять кластером Hadoop YARN для рабочих нагрузок Spark на основе YARN, а также использовать инструменты с открытым исходным кодом, такие как Flink и Presto. Вы можете настроить свои облачные кластеры с любым желаемым вертикальным или горизонтальным масштабированием, включая автомасштабирование.

2. Создайте управляемый кластер Apache Spark в виртуальной частной сети Google Cloud (VPC).

На этом этапе вы создадите управляемый кластер Apache Spark в Google Cloud, используя консоль Google Cloud.

В качестве первого шага включите API службы Managed Apache Spark в консоли. После включения найдите «Managed Apache Spark» в строке поиска и нажмите «Создать кластер» .

Выберите «Кластер» в Compute Engine , чтобы использовать виртуальные машины Google Compute Engine (GCE) в качестве базовой инфраструктуры для запуска управляемых кластеров Apache Spark.

a961b2e8895e88da.jpeg

Вы находитесь на странице создания кластера.

9583c91204a09c12.jpeg

На этой странице:

  • Укажите уникальное имя для кластера.
  • Выберите конкретный регион . Вы также можете выбрать зону, однако управляемый Apache Spark позволяет автоматически выбрать её. Для этого практического занятия выберите «us-central1» и «us-central1-c».
  • Выберите тип кластера «Стандартный». Это гарантирует наличие одного главного узла.
  • На вкладке «Настройка узлов» подтвердите, что количество создаваемых рабочих узлов будет равно двум.
  • В разделе «Настройка кластера» установите флажок рядом с пунктом «Включить шлюз компонентов». Это позволит получить доступ к веб-интерфейсам кластера, включая пользовательский интерфейс Spark, менеджер узлов Yarn и блокноты Jupyter.
  • В разделе «Дополнительные компоненты» выберите Jupyter Notebook. Это настроит кластер с сервером Jupyter Notebook.
  • Оставьте все остальные параметры без изменений и нажмите «Создать кластер».

Это позволит развернуть управляемый кластер Apache Spark.

3. Запустите кластер и подключитесь к нему по SSH.

После того как статус кластера изменится на «Работает» , щелкните имя кластера в консоли Managed Apache Spark.

7332f1c2cb25807d.jpeg

Перейдите на вкладку «Экземпляр виртуальной машины» , чтобы просмотреть главный узел и два рабочих узла кластера.

25be1578e00f669f.jpeg

Чтобы войти в главный узел, нажмите на кнопку SSH рядом с ним.

2810ffd97f315bdb.jpeg

Выполните команды hdfs, чтобы увидеть структуру каталогов.

hadoop_commands_example

sudo hadoop fs -ls /
sudo hadoop version
sudo hadoop fs -mkdir /test51 
sudo hadoop fs -ls /

4. Веб-интерфейсы и шлюзы компонентов

В консоли управляемого кластера Apache Spark щелкните имя вашего кластера, затем перейдите на вкладку «ВЕБ-ИНТЕРФЕЙСЫ» .

6398f71d6293d6ff.jpeg

Здесь показаны доступные веб-интерфейсы, включая Jupyter . Щелкните Jupyter , чтобы открыть блокнот Jupyter. Вы можете использовать это для создания блокнотов в PySpark, хранящихся в GCS. Чтобы сохранить свой блокнот в Google Cloud Storage, откройте блокнот PySpark для использования в этом практическом задании.

5. Мониторинг и наблюдение за заданиями Spark.

После запуска управляемого кластера Apache Spark создайте пакетное задание PySpark и отправьте его в управляемый кластер Apache Spark.

Создайте корзину Google Cloud Storage (GCS) для хранения скрипта PySpark. Убедитесь, что корзина создана в том же регионе, что и управляемый кластер Apache Spark.

679fd2f76806f4e2.jpeg

После создания хранилища GCS скопируйте в него следующий файл.

https://raw.githubusercontent.com/diptimanr/spark-on-gce/main/test-spark-1.py

Этот скрипт создает пример Spark DataFrame и записывает его в виде таблицы Hive.

hive_job.py

from pyspark.sql import SparkSession
from datetime import datetime, date
from pyspark.sql import Row

spark = SparkSession.builder.master("local").enableHiveSupport().getOrCreate()

df = spark.createDataFrame([ (1, 2., 'string1', date(2000, 1, 1), datetime(2000, 1, 1, 12, 0)),
        (2, 3., 'string2', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)), (3, 4., 'string3', date(2000, 3, 1), datetime(2000, 1, 3, 12, 0))
    ], schema='a long, b double, c string, d date, e timestamp')
print("..... Writing data .....")
df.write.mode("overwrite").saveAsTable("test_table_1")
print("..... Complete .....")

Отправьте этот скрипт в качестве пакетного задания Spark в управляемом Apache Spark. Щелкните «Задания» в левом навигационном меню, а затем нажмите «Отправить задание».

5767fc7c50b706d3.jpeg

Укажите идентификатор задания и регион . Выберите свой кластер и укажите местоположение GCS скопированного вами скрипта Spark. Это задание будет выполняться как пакетное задание Spark на управляемом сервере Apache Spark.

В разделе «Свойства» добавьте ключ spark.submit.deployMode со значением client , чтобы гарантировать запуск драйвера на главном узле управляемого Apache Spark, а не на рабочих узлах. Нажмите «Отправить» , чтобы отправить пакетное задание в управляемый Apache Spark.

a7ca90f5132faa31.jpeg

Скрипт Spark создаст DataFrame и запишет данные в таблицу Hive test_table_1 .

После успешного выполнения задания вы сможете увидеть сообщения, выведенные в консоль, на вкладке «Мониторинг» .

bdec2f3ae1055f9.jpeg

Теперь, когда таблица Hive создана, отправьте еще одно задание запроса Hive, чтобы выбрать содержимое таблицы и отобразить его в консоли.

Создайте еще одно задание со следующими свойствами:

c16f02d1b3afaa27.jpeg

Обратите внимание, что тип задания установлен на Hive , а тип источника запроса — Query Text , что означает, что мы запишем весь оператор HiveQL в текстовое поле Query Text .

Отправьте задание, оставив остальные параметры по умолчанию.

e242e50bc2519bf4.jpeg

Обратите внимание, как HiveQL выбирает все записи и отображает их в консоли.

6. Автомасштабирование

Автомасштабирование — это задача оценки «правильного» количества рабочих узлов кластера для конкретной рабочей нагрузки.

API управляемых политик автоматического масштабирования Apache Spark предоставляет механизм для автоматизации управления ресурсами кластера и позволяет осуществлять автоматическое масштабирование виртуальных машин рабочих узлов кластера. Политика автоматического масштабирования — это многократно используемая конфигурация, описывающая, как должны масштабироваться рабочие узлы кластера, использующие эту политику. Она определяет границы масштабирования, частоту и агрессивность, обеспечивая точный контроль над ресурсами кластера на протяжении всего его жизненного цикла.

Управляемые политики автомасштабирования Apache Spark записываются с использованием YAML-файлов, которые либо передаются в команде CLI для создания кластера, либо выбираются из хранилища GCS при создании кластера через Cloud Console.

Вот пример политики автоматического масштабирования управляемого Apache Spark:

policy.yaml

workerConfig:
  minInstances: 10
  maxInstances: 10
secondaryWorkerConfig:
  maxInstances: 50
basicAlgorithm:
  cooldownPeriod: 4m
  yarnConfig:
    scaleUpFactor: 0.05
    scaleDownFactor: 1.0
    gracefulDecommissionTimeout: 1h

7. Настройка дополнительных компонентов управляемого Apache Spark.

Это позволит развернуть управляемый кластер Apache Spark.

При создании управляемого кластера Apache Spark стандартные компоненты экосистемы Apache Hadoop автоматически устанавливаются в кластер (см. Список версий управляемого Apache Spark ). При создании кластера можно установить дополнительные компоненты, называемые необязательными компонентами .

e39cc34245af3f01.jpeg

При создании управляемого кластера Apache Spark из консоли мы включили необязательные компоненты и выбрали Jupyter Notebook в качестве необязательного компонента.

8. Очистка ресурсов

Чтобы очистить кластер, после выбора кластера в консоли Managed Apache Spark нажмите кнопку «Остановить» . После остановки кластера нажмите кнопку «Удалить» , чтобы удалить кластер.

После удаления управляемого кластера Apache Spark удалите корзины GCS, в которые был скопирован код.

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

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

Чтобы остановить кластер, нажмите кнопку «Остановить» .

52065de928ab52e7.jpeg

После остановки кластера нажмите кнопку «Удалить» , чтобы удалить кластер.

В диалоговом окне подтверждения нажмите «Удалить» , чтобы удалить кластер.

52065de928ab52e7.jpeg