Какие лучшие практики для развертывания PySpark на AWS?

Лучшие практики для развертывания PySpark на AWS

Введение

В области больших данных и продвинутой аналитики PySpark стал мощным инструментом для обработки больших наборов данных и анализа распределенных данных. Развертывание PySpark в приложениях AWS в облаке может стать революционным, предлагая масштабируемость и гибкость для задач, связанных с обработкой данных. Amazon Web Services (AWS) предоставляет идеальную платформу для таких развертываний, а в сочетании с контейнерами Docker она становится безупречным и эффективным решением.

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

Цель обучения

  • Изучить основные концепции PySpark, AWS и Docker, обеспечивая надежные основы для развертывания кластеров PySpark в облаке.
  • Пройти пошаговое руководство по настройке PySpark на AWS с использованием Docker, включая конфигурирование AWS, подготовку образов Docker и управление кластерами Spark.
  • Открыть стратегии оптимизации производительности PySpark на AWS, включая мониторинг, масштабирование и соблюдение передовых практик для максимальной эффективности ваших рабочих процессов по обработке данных.

Эта статья была опубликована в рамках Блогатона Дата Сайенс.

Предварительные требования

Прежде чем приступать к развертыванию PySpark на AWS с использованием Docker, убедитесь, что у вас есть следующие предварительные требования:

🚀 Установленный PySpark локально: Для разработки и тестирования приложений PySpark необходимо иметь установленный PySpark на локальной машине. Вы можете установить PySpark, следуя официальной документации для вашей операционной системы. Эта локальная установка служит вам в качестве среды разработки, которая позволяет вам писать и тестировать код PySpark перед его развертыванием на AWS.

🌐 Учетная запись AWS: Вам понадобится активная учетная запись AWS (Amazon Web Services) для доступа к облачной инфраструктуре и услугам, необходимым для развертывания PySpark. Если у вас нет учетной записи AWS, вы можете зарегистрироваться на сайте AWS. Будьте готовы предоставить информацию о вашем платеже, хотя AWS также предлагает бесплатный уровень с ограниченными ресурсами для новых пользователей.

🐳 Установка Docker:  Docker является ключевым компонентом в этом процессе развертывания. Установите Docker на свою локальную машину, следуя инструкциям по установке для операционной системы Ubuntu. Контейнеры Docker позволят вам последовательно инкапсулировать и развертывать ваши приложения PySpark.

Windows

  1. Посетите
  2. Скачайте установщик Docker Desktop для Windows.
  3. Дважды щелкните по установщику для запуска.
  4. Следуйте инструкциям мастера установки.
  5. После установки запустите Docker Desktop из ваших приложений.

macOS

  1. Перейдите
  2. Скачайте установщик Docker Desktop для Mac.
  3. Дважды щелкните по установщику, чтобы открыть его.
  4. Перетащите значок Docker в папку Applications.
  5. Запустите Docker из приложений.

Linux (Ubuntu)

1. Откройте терминал и обновите менеджер пакетов:

sudo apt-get update

2. Установите необходимые зависимости:

sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

3. Добавьте официальный GPG-ключ Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg |  sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

4. Настройте репозиторий Docker:

echo "deb [signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

5. Обновите индекс пакетов еще раз:

sudo apt-get update

6. Установите Docker:

sudo apt-get install -y docker-ce docker-ce-cli containerd.io

7. Запустите и включите службу Docker:

sudo systemctl start dockersudo systemctl enable docker

8. Проверьте установку:

sudo docker --version

**** Добавьте переносы строки на одной строке

Просмотреть видеоурок по установке Docker

Настройка AWS

Amazon Web Services (AWS) является основой нашего развертывания PySpark, и мы будем использовать два основных сервиса, Elastic Container Registry (ECR) и Elastic Compute Cloud (EC2), для создания динамической облачной среды.

Регистрация учетной записи AWS

Если у вас еще нет учетной записи AWS, перейдите на страницу регистрации AWS и создайте учетную запись. Пожалуйста, следуйте процессу регистрации, предоставьте необходимую информацию и будьте готовы предоставить данные платежа, если вы хотите изучить возможности, выходящие за пределы бесплатного уровня AWS.

AWS Free Tier

Для новичков в AWS воспользуйтесь бесплатным уровнем AWS, который предлагает ограниченные ресурсы и сервисы в течение 12 месяцев бесплатно. Это отличный способ изучить AWS без дополнительных затрат.

Ключ доступа и секретный ключ AWS

Вам понадобится идентификатор ключа доступа (Access Key ID) и секретный ключ доступа (Secret Access Key) для взаимодействия с AWS программно. Выполните следующие шаги для их генерации:

  • Войдите в консоль управления AWS.
  • Перейдите к сервису Identity & Access Management (IAM).
  • Кликните на “Пользователи” в левой навигационной панели.
  • Создайте нового пользователя или выберите существующего.
  • На вкладке “Подтверждения безопасности” сгенерируйте ключ доступа.
  • Запишите идентификатор ключа доступа и секретный ключ доступа, т.к. мы будем использовать их позже.
  • После нажатия пользователя

Elastic Container Registry (ECR)

ECR – это управляемый сервис реестра контейнеров Docker, предоставляемый AWS. Он будет нашим репозиторием для хранения образов Docker. Вы можете настроить свой ECR, следуя этим шагам:

  • В консоли управления AWS перейдите к сервису Amazon ECR.
  • Создайте новый репозиторий, дайте ему имя и настройте параметры репозитория.
  • Запишите URI вашего репозитория ECR, вам понадобится он для загрузки образов Docker.

Elastic Compute Cloud (EC2)

EC2 предоставляет масштабируемые вычислительные мощности в облачной среде и будет хостить ваши приложения PySpark. Чтобы настроить экземпляр EC2:

  • В консоли управления AWS перейдите к сервису EC2.
  • Запустите новый экземпляр EC2, выбрав тип экземпляра, подходящий для вашей нагрузки.
  • Настройте параметры экземпляра и опции хранения.
  • Создайте или выберите существующую пару ключей для безопасного подключения к экземпляру EC2.

«««» ЗДЕСЬ ВАЖНО ПОСЛЕТОГО ПРИКРЕПИТЬ ГРУППЫ БЕЗОПАСНОСТИ »««»

Посмотреть видеоурок

Сохранение вашей установки AWS для будущего использования

AWS_ACCESS_KEY_ID: ВАШСЭМПЛКЛЮЧДОСТУПАКAWS_ECR_LOGIN_URI: 123456789012.dkr.ecr.region.amazonaws.comAWS_REGION: us-east-1AWS_SECRET_ACCESS_KEY: ВАШСЭМПЛСЕКРЕТНЫЙКЛЮЧ12345ECR_REPOSITORY_NAME: ваше-имя-репозитория-ecr

Настройка секретов и переменных GitHub

Теперь, когда у вас есть готовые значения для настройки AWS, настало время настроить их безопасно в вашем репозитории GitHub с помощью секретов и переменных GitHub. Это добавляет дополнительный уровень безопасности и удобства к вашему процессу развертывания PySpark.

Следуйте этим шагам, чтобы настроить ваши значения AWS:

Откройте свой репозиторий GitHub

  • Вы можете просто перейти к своему репозиторию GitHub, где вы размещаете свой проект PySpark.

Откройте настройки репозитория

  • Внутри вашего репозитория нажмите на вкладку «Settings» (Настройки).

Управление секретами

  • В левой боковой панели вы найдете опцию «Secrets» (Секреты). Щелкните по ней, чтобы получить доступ к интерфейсу управления секретами GitHub.

Добавьте новый секрет

  • Здесь вы можете добавить свои значения установки AWS в качестве секретов.
  • Нажмите «New Repository Secret» (Новый секрет репозитория), чтобы создать новый секрет.
  • Для каждого значения AWS создайте секрет с именем, соответствующим назначению значения (например, «AWS_ACCESS_KEY_ID», «AWS_SECRET_ACCESS_KEY», «AWS_REGION» и т. д.).
  • Введите фактическое значение в поле «Value» (Значение).

Сохраните свои секреты

  • Нажмите кнопку «Add secret» (Добавить секрет) для каждого значения, чтобы сохранить его как секрет GitHub.

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

Лучшие практики

  • Секреты GitHub зашифрованы и могут быть доступны только для авторизованных пользователей с необходимыми полномочиями. Это обеспечивает безопасность ваших чувствительных значений AWS.
  • Используя секреты GitHub, вы избегаете непосредственного раскрытия конфиденциальной информации в коде или конфигурационных файлах, улучшая безопасность вашего проекта.

Ваши значения настроек AWS теперь безопасно настроены в вашем репозитории GitHub, что позволяет вам легко использовать их при развертывании вашего рабочего процесса PySpark.

Понимание структуры кода

Чтобы эффективно развернуть PySpark на AWS с помощью Docker, необходимо понять структуру кода вашего проекта. Разберем компоненты, составляющие кодовую базу:

├── .github│   ├── workflows│   │   ├── build.yml├── airflow├── configs├── consumerComplaint│   ├── cloud_storage│   ├── components│   ├── config│   │   ├── py_sparkmanager.py│   ├── constants│   ├── data_access│   ├── entity│   ├── exceptions│   ├── logger│   ├── ml│   ├── pipeline│   ├── utils├── output│   ├── .png├── prediction_data├── research│   ├── jupyter_notebooks├── saved_models│   ├── model.pkl├── tests├── venv├── Dockerfile├── app.py├── requirements.txt├── .gitignore├── .dockerignore

Код приложения (app.py)

  • app.py – это ваш основной скрипт на Python, отвечающий за запуск приложения PySpark.
  • Он является точкой входа для ваших задач PySpark и служит основой вашего приложения.
  • Вы можете настраивать этот скрипт для определения ваших конвейеров обработки данных, планирования задач и других настроек.

Dockerfile

  • Dockerfile содержит инструкции для создания образа Docker для вашего приложения PySpark.
  • Он определяет базовый образ, добавляет необходимые зависимости, копирует код приложения в контейнер и настраивает среду выполнения.
  • Этот файл играет ключевую роль в контейнизации вашего приложения для безшовного развертывания.

Требования (requirements.txt)

  • requirements.txt перечисляет пакеты и зависимости Python, необходимые для вашего приложения PySpark.
  • Эти пакеты устанавливаются внутри контейнера Docker для обеспечения плавной работы вашего приложения.

Рабочие процессы GitHub Actions

  • Рабочие процессы GitHub Actions определяются в .github/workflows/ в вашем проектном репозитории.
  • Они автоматизируют процессы сборки, тестирования и развертывания.
  • Файлы рабочего процесса, такие как main.yml, описывают шаги, которые нужно выполнить при определенных событиях, например, при отправке кода или запросах на получение.

Построение py_sparkmanager.py

import osfrom dotenv import load_dotenvfrom pyspark.sql import SparkSession# Загрузка переменных среды из .envload_dotenv()access_key_id = os.getenv("AWS_ACCESS_KEY_ID")secret_access_key = os.getenv("AWS_SECRET_ACCESS_KEY")# Инициализация SparkSessionspark_session = SparkSession.builder.master('local[*]').appName('consumer_complaint') \    .config("spark.executor.instances", "1") \    .config("spark.executor.memory", "6g") \    .config("spark.driver.memory", "6g") \    .config("spark.executor.memoryOverhead", "8g") \    .config('spark.jars.packages', "com.amazonaws:aws-java-sdk:1.7.4,  org.apache.hadoop:hadoop-aws:2.7.3") \    .getOrCreate()# Настройка SparkSession для доступа к AWS S3spark_session._jsc.hadoopConfiguration().set("fs.s3a.awsAccessKeyId", access_key_id)spark_session._jsc.hadoopConfiguration().set("fs.s3a.awsSecretAccessKey", secret_access_key)spark_session._jsc.hadoopConfiguration().set("fs.s3a.impl",               "org.apache.hadoop.fs.s3a.S3AFileSystem")spark_session._jsc.hadoopConfiguration().set("com.amazonaws.services.s3.enableV4", "true")spark_session._jsc.hadoopConfiguration().set("fs.s3a.aws.credentials.provider",              "org.apache.hadoop.fs.s3a.BasicAWSCredentialsProvider")spark_session._jsc.hadoopConfiguration().set("fs.s3a.endpoint", "ap-south-1.amazonaws.com")spark_session._jsc.hadoopConfiguration().set("fs.s3.buffer.dir", "tmp")

Этот код настраивает ваш SparkSession, настраивает его для доступа к AWS S3 и загружает учетные данные AWS из переменных среды, что позволяет вам без проблем работать с сервисами AWS в вашем приложении PySpark.

Подготовка образов Docker для PySpark (IMP)

Этот раздел рассмотрит, как создавать образы Docker, которые инкапсулируют ваше приложение PySpark, делая его портативным, масштабируемым и готовым к развертыванию в AWS. Контейнеры Docker обеспечивают однородную среду для ваших приложений PySpark, обеспечивая безупречное выполнение в различных настройках.

Dockerfile

Ключом к созданию образов Docker для PySpark является хорошо определенный Dockerfile. Этот файл указывает инструкции для настройки среды контейнера, включая зависимости от Python и PySpark.

FROM python:3.8.5-slim-buster# Используйте базовый образ Ubuntu FROM ubuntu:20.04 # Установите JAVA_HOME и установите OpenJDK 8 ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ RUN apt-get update -y \    && apt-get install -y openjdk-8-jdk \    && apt-get install python3-pip -y \    && apt-get clean \    && rm -rf /var/lib/apt/lists/* # Установите переменные среды для вашего приложения ENV AIRFLOW_HOME="/app/airflow" ENV PYSPARK_PYTHON=/usr/bin/python3 ENV PYSPARK_DRIVER_PYTHON=/usr/bin/python3 # Создайте каталог для вашего приложения и установите его рабочим каталогом WORKDIR /app # Скопируйте содержимое текущего каталога в рабочий каталог в контейнере COPY . /app # Установите зависимости Python из requirements.txt RUN pip3 install -r requirements.txt # Установите точку входа для запуска скрипта app.py CMD ["python3", "app.py"]

Создание образа Docker

После того, как Dockerfile готов, вы можете создать образ Docker с помощью следующей команды:

docker build -t your-image-name

Замените your-image-name на желаемое имя и версию вашего образа Docker.

Проверка локального образа

После создания образа вы можете просмотреть список локальных образов Docker с помощью следующей команды:

docker imagesdocker ps -a docker system df

Запуск PySpark в Docker

Подготовив свой образ Docker, вы можете запустить ваше приложение PySpark в контейнере Docker. Используйте следующую команду:

docker run -your-image-name

««« ИНОГДА КОМАНДА docker run НЕ РАБОТАЕТ, ВЫПОЛНИТЕ СЛЕДУЮЩУЮ КОМАНДУ. «««

docker run 80:8080 your-image-namedocker run 8080:8080 your-image-name

Развертывание PySpark на AWS

Этот раздел покажет, как развернуть ваше приложение PySpark на AWS с использованием контейнеров Docker. Этот процесс включает запуск экземпляров Amazon Elastic Compute Cloud (EC2) для создания кластера PySpark.

Запуск экземпляров EC2

  • В панели управления EC2 нажмите «Запуск экземпляров».
  • Вы можете выбрать образ Amazon Machine Image (AMI), который подходит для ваших потребностей, обычно на основе Linux.
  • В зависимости от вашей рабочей нагрузки выберите тип экземпляра (например, m5.large, c5.xlarge).
  • Настройте параметры экземпляра, включая количество экземпляров в вашем кластере.
  • Добавьте необходимое хранилище, теги и группы безопасности.

Это все, что я упомянул выше.

Подключение к экземплярам EC2

  • После запуска экземпляров вы можете выполнить SSH-подключение к ним для управления кластером PySpark.

Введите следующую команду

Скачайте скрипт установки Docker

curl -fsSL https://get.docker.com -o get-docker.sh

Запустите скрипт установки Docker от имени пользователя root

sudo sh get-docker.sh

Добавьте текущего пользователя в группу docker (замените “ubuntu” своим именем пользователя)

sudo usermod -aG docker ubuntu

Активируйте изменения, запустив новый сеанс оболочки или используя “newgrp”

newgrp docker

Настройка собственного раннера GitHub

Мы настроим собственный раннер для GitHub Actions, который будет выполнять ваши рабочие процессы CI/CD. Собственный раннер работает на вашей инфраструктуре и предоставляет возможность выполнения рабочих процессов, требующих конкретной конфигурации или доступа к локальным ресурсам.

Настройка собственного раннера

  • Нажмите настройки
  • Нажмите Действие -> Раннер

  • Нажмите Добавить новый раннер

Введите нижеприведенную команду на машине EC2

  • Создайте папку: эта команда создает папку с именем actions-runner и меняет текущую папку на только что созданную.
$ mkdir actions-runner && cd actions-runner
  • Загрузите последний пакет раннера: эта команда загружает пакет раннера GitHub Actions для Linux x64. Она указывает URL пакета для загрузки и сохраняет его с именем actions-runner-linux-x64-2.309.0.tar.gz.
$ curl -o actions-runner-linux-x64-2.309.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.309.0/actions-runner-linux-x64-2.309.0.tar.gz
  • Опционально: Проверьте хеш: эта команда проверяет целостность загруженного пакета, проверяя его хеш. Она вычисляет SHA-256 хеш загруженного пакета и сравнивает его с известным ожидаемым хешем. Если они совпадают, пакет считается действительным.
$ echo "2974243bab2a282349ac833475d241d5273605d3628f0685bd07fb5530f9bb1a  actions-runner-linux-x64-2.309.0.tar.gz" | shasum -a 256 -c
  • Извлеките установщик: эта команда извлекает содержимое загруженного пакета, который является tar-архивом (сжатым архивом).
$ tar xzf ./actions-runner-linux-x64-2.309.0.tar.gz
  • Последний шаг, запустите его: эта команда запускает раннер с предоставленными настройками конфигурации. Он настраивает раннер для выполнения рабочих процессов GitHub Actions для указанного репозитория.
$ ./run.sh

Конфигурация непрерывной интеграции и доставки (CI/CD)

В процессе CI/CD файл build.yaml имеет важное значение, определяя необходимые шаги для сборки и развертывания вашего приложения. Этот файл конфигурации определяет рабочий процесс вашего CI/CD, включая сборку кода, его тестирование и развертывание. Давайте подробнее рассмотрим основные аспекты конфигурации build.yaml и ее важность:

Обзор рабочего процесса

Файл build.yaml содержит список задач, выполняемых в процессе CI/CD. Он определяет шаги для непрерывной интеграции, которые включают сборку и тестирование вашего приложения, а также непрерывную доставку, при которой приложение развертывается на различных окружениях.

Непрерывная интеграция (CI)

В этой фазе обычно выполняются задачи, такие как компиляция кода, модульное тестирование и проверка качества кода. В файле build.yaml указываются инструменты, скрипты и команды, необходимые для выполнения этих задач. Например, он может запускать модульные тесты для проверки качества кода.

Непрерывное развертывание (CD)

После успешного выполнения CI фазы происходит развертывание приложения в различных окружениях, таких как тестовое или рабочее. В файле build.yaml указывается, как должно происходить развертывание, включая то, куда и когда развертывать, а также какие конфигурации использовать.

<!–

Управление зависимостями

Файл build.yaml часто содержит информацию о зависимостях проекта. Он определяет, откуда получать внешние библиотеки или зависимости, что может быть важно для успешной сборки и развертывания приложения.

Переменные среды

Рабочие процессы CI/CD часто требуют конфигураций, специфичных для окружения, таких как ключи API или строки подключения. Файл build.yaml может определять, как устанавливаются эти переменные среды для каждого этапа конвейера.

Уведомления и оповещения

В случае сбоев или проблем в процессе CI/CD уведомления и оповещения являются важными. Файл build.yaml может настроить, как и кому отправлять эти оповещения, обеспечивая своевременное решение проблем.

Артефакты и выходные данные

В зависимости от рабочего процесса CI/CD, файл build.yaml может указывать, какие артефакты или выходные данные сборки должны быть сгенерированы и где они должны быть сохранены. Эти артефакты могут быть использованы для развертывания или дальнейшего тестирования.

Понимая файл build.yaml и его компоненты, вы можете эффективно управлять и настраивать свой рабочий процесс CI/CD, чтобы соответствовать потребностям вашего проекта. Он является основой для всего процесса автоматизации, от изменений в коде до развертывания в производственную среду.

Конвейер CI/CD

Вы можете дальше настраивать содержимое в соответствии с конкретными деталями вашей конфигурации build.yaml и тем, как она вписывается в ваш рабочий процесс CI/CD.

name: workflowon:  push:    branches:      - main    paths-ignore:      - 'README.md'permissions:  id-token: write  contents: readjobs:  integration:    name: Continuous Integration    runs-on: ubuntu-latest    steps:      - name: Checkout Code        uses: actions/checkout@v3      - name: Lint code        run: echo "Linting repository"      - name: Run unit tests        run: echo "Running unit tests"  build-and-push-ecr-image:    name: Continuous Delivery    needs: integration    runs-on: ubuntu-latest    steps:      - name: Checkout Code        uses: actions/checkout@v3      - name: Install Utilities        run: |          sudo apt-get update          sudo apt-get install -y jq unzip      - name: Configure AWS credentials        uses: aws-actions/configure-aws-credentials@v1        with:          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}          aws-region: ${{ secrets.AWS_REGION }}      - name: Login to Amazon ECR        id: login-ecr        uses: aws-actions/amazon-ecr-login@v1      - name: Build, tag, and push image to Amazon ECR        id: build-image        env:          ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}          ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY_NAME }}          IMAGE_TAG: latest        run: |          # Соберите контейнер Docker и          # отправьте его в ECR для его          # деплоя в ECS.          docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .          docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG          echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY            :$IMAGE_TAG"                      Continuous-Deployment:    needs: build-and-push-ecr-image    runs-on: self-hosted    steps:      - name: Checkout        uses: actions/checkout@v3      - name: Configure AWS credentials        uses: aws-actions/configure-aws-credentials@v1        with:          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}          aws-region: ${{ secrets.AWS_REGION }}      - name: Login to Amazon ECR        id: login-ecr        uses: aws-actions/amazon-ecr-login@v1                  - name: Pull latest images        run: |         docker pull ${{secrets.AWS_ECR_LOGIN_URI}}/${{ secrets.         ECR_REPOSITORY_NAME }}:latest      - name: Stop and remove sensor container if running        run: |         docker ps -q --filter "name=sensor" | grep -q . && docker stop sensor         && docker rm -fv sensor             - name: Run Docker Image to serve users        run: |         docker run -d -p 80:8080 --name=sensor -e 'AWS_ACCESS_KEY_ID=                  ${{ secrets.AWS_ACCESS_KEY_ID }}       ' -e 'AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }}'       -e 'AWS_REGION=${{ secrets.AWS_REGION }}'  ${{secrets.AWS_ECR_LOGIN_URI}}/      ${{ secrets.ECR_REPOSITORY_NAME }}:latest      - name: Clean previous images and containers        run: |         docker system prune -f

Примечание: Все Соединить линии, как одноЕсли возникнут проблемы, следуйте репозиторию GitHub, который я упомянул ранее.

Работа с непрерывным развертыванием:

  • Эта задача зависит от задачи “Сборка и загрузка образа ECR” и настроена для выполнения на собственном хост-раннере.
  • Он выгружает код и настраивает учетные данные AWS.
  • Он входит в учетные данные Amazon ECR.
  • Он загружает последний образ Docker из указанного репозитория ECR.
  • Он останавливает и удаляет Docker-контейнер с именем “sensor”, если он запущен.
  • Он запускает Docker-контейнер с именем “sensor” с заданными настройками, переменными окружения и ранее загруженным образом Docker.
  • Наконец, он очищает предыдущие образы и контейнеры Docker с помощью docker system prune.

Автоматизация выполнения рабочего процесса при изменении кода

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

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

Для настройки автоматизированного выполнения рабочего процесса при изменении кода следуйте этим шагам:

git add .git commit -m "message"git push origin main

Вывод

В этом исчерпывающем руководстве мы рассмотрели сложный процесс развертывания PySpark на AWS с использованием EC2 и ECR. Использование контейнеризации и непрерывной интеграции и доставки этот подход предлагает надежное и адаптивное решение для управления задачами по обработке и анализу данных масштаба предприятия. Следуя описанным в этом блоге шагам, вы можете использовать полную мощность PySpark в облачной среде, используя масштабируемость и гибкость, предлагаемые AWS.

Важно отметить, что AWS предлагает множество возможностей для развертывания, от EC2 и ECR до специализированных сервисов, таких как EMR. Выбор метода зависит от уникальных требований вашего проекта. Независимо от того, предпочитаете ли вы подход с контейнеризацией, продемонстрированный здесь, или выбираете другой сервис AWS, ключевым моментом является эффективное использование возможностей PySpark в ваших приложениях, основанных на данных. С AWS в качестве вашей платформы, вы хорошо оснащены, чтобы раскрыть полный потенциал PySpark, открывая новую эру анализа и обработки данных. Исследуйте такие сервисы, как EMR, если они лучше соответствуют вашим конкретным случаям использования и предпочтениям, так как AWS предоставляет разнообразный инструментарий для развертывания PySpark, чтобы удовлетворить уникальные потребности ваших проектов.

Основные выводы

  • Развертывание PySpark на AWS с помощью Docker упрощает обработку больших объемов данных, обеспечивая масштабируемость и автоматизацию.
  • Действия GitHub упрощают рабочий процесс непрерывной интеграции и доставки, позволяя безупречно развертывать код.
  • Использование сервисов AWS, таких как EC2 и ECR, обеспечивает надежное управление кластером PySpark.
  • Это руководство позволит вам использовать возможности облачных вычислений для задач обработки данных высокого объема.

Часто задаваемые вопросы

Ресурсы для дальнейшего изучения

  • Репозиторий GitHub: Получите доступ ко всему исходному коду и настройкам, использованным в этом руководстве на репозитории Consumer Complaint Dispute Prediction на GitHub.
  • Docker Documentation: Углубитесь в Docker и контейнеризацию, изучая официальную документацию Docker. Вы найдете исчерпывающие руководства, лучшие практики и советы по овладению Docker.
  • Документация GitHub Actions: Разблокируйте полную мощность GitHub Actions, обратившись к документации GitHub Actions. Этот ресурс поможет вам создать, настроить и автоматизировать ваши рабочие процессы.
  • Официальная документация PySpark: Для углубленного изучения PySpark вы можете изучить официальную документацию PySpark. Узнайте о API, функциях и библиотеках для обработки больших объемов данных.

Медиазаписи, показанные в этой статье, не принадлежат Analytics Vidhya и используются по усмотрению автора.