Использование Azure DevOps, Databricks Spark, Cosmos DB Gremlin API и фабрики данных Azure

А. Введение

Создание конвейера данных - это одно; ввод его в производство - другое. Это особенно верно для современного конвейера данных, в котором несколько сервисов используются для расширенной аналитики. Примерами являются преобразование неструктурированных данных в структурированные, обучение моделей машинного обучения и внедрение OCR. Интеграция нескольких сервисов может быть сложной, и развертывание в производственной среде необходимо контролировать. В этом блоге представлен следующий пример проекта:

  • 1. Настройте проект Azure DevOps для непрерывного развертывания.
  • 2. Разверните ресурсы Azure конвейера данных, используя инфраструктуру как код.
  • 3. Запуск и мониторинг конвейера данных.

Здесь можно найти код проекта, ниже показаны этапы современного конвейера данных.

Об архитектуре проекта мы поговорим в следующей главе. Впоследствии предоставляется учебное пособие по развертыванию и запуску проекта. Если вы хотите узнать, как реализовать проекты по науке о данных, см. Мой предыдущий блог.

Б. Архитектура

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

  • Фабрика данных Azure (ADFv2): ADFv2 позволяет перемещать данные в любом масштабе. ADFv2 поставляется с 90 коннекторами из коробки и имеет множество готовых корпоративных функций, таких как управляемая идентификация (MI), автономная среда выполнения интеграции (IR) для подключения к локальным источникам данных, Azure IR в виртуальной сети и git / Azure. Интеграция DevOps. Преобразования можно выполнять в ADFv2 с помощью потоков данных, более сложные преобразования можно организовать в ADFv2 с помощью Azure Databricks. См. Также мое видео, чтобы увидеть ADFv2 в действии.
  • Azure Databricks: Databricks - это управляемая среда Spark, которая позволяет масштабно преобразовывать данные. Azure Databricks предлагается как служба PaaS в Azure и интегрирована с Azure AD. Блокноты можно оркестровать из ADFv2
  • Cosmos DB Gremlin API: Cosmos DB - это полностью управляемая служба с несколькими базами данных, которая позволяет создавать высокочувствительные приложения по всему миру. Как часть Cosmos DB, Gremlin поддерживается для графовых баз данных.
  • Хранилище Azure: ADLSgen2 позволяет хранить бесконечные объемы данных с низкими затратами. Он также поддерживает детальный контроль доступа с использованием RBAC и / или Posix.

Внутренняя работа и интеграция ресурсов конвейера данных заключаются в следующем:

  • Поток данных: данные преобразуются из CSV в паркет в ADLSgen2 с помощью ADFv2. Впоследствии ADFv2 запускает записную книжку Databrick, которая считывает данные из ADLSgen2 и создает график из данных паркета. Наконец, Databricks записывает данные в Cosmos DB с помощью API Gremlin.
  • Доступ: управляемая идентификация (MI) ADFv2 используется для доступа к данным в ADLSgen2. ADFv2 MI также используется в Azure Databricks для запуска записной книжки. Azure Databricks использует секретную область для получения субъекта-службы, имеющего доступ к ADLSgen2 для чтения паркетных данных и ключа, имеющего доступ к Cosmos DB для записи данных графа. Секретная область Databricks может поддерживаться Databricks или хранилищем ключей Azure (см. Шаг 3b2 в подробном описании архитектуры ниже)
  • Брандмауэр: надежная служба Microsoft включена в брандмауэре ADLSgen2 и AKV, поэтому ADFv2 MI имеет доступ. Кроме того, Databricks VNET внесен в белый список брандмауэра ADLSgen2 и AKV для доступа, весь другой трафик запрещен. Только Databricks VNET внесен в белый список брандмауэра Cosmos DB.

См. Также подробную архитектуру ниже.

C. Развертывание и запуск современного конвейера данных

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

  • C0. Предпосылки
  • C1. Настройка проекта Azure DevOps
  • C2. Развертывание ресурсов Azure
  • C3. Монитор конвейера данных

C0. Предпосылки

В этом руководстве требуются следующие ресурсы:

Наконец, перейдите на портал Azure и создайте группу ресурсов, в которой будут развернуты все ресурсы Azure. Это также можно сделать с помощью следующей команды Azure CLI:

az group create -n <<your resource group>> -l <<your location>>

C1. Настройка проекта Azure DevOps

Azure DevOps - это инструмент для непрерывной сборки, тестирования и развертывания вашего кода на любой платформе и в любом облаке. Создайте новый проект в Azure DevOps, следуя этому руководству. После создания нового проекта щелкните папку репозитория и выберите импорт следующего репозитория:

https://github.com/rebremer/blog-datapipeline-cicd

См. Также картинку ниже:

Подключение к службе необходимо для доступа к ресурсам в группе ресурсов из Azure DevOps. Перейдите в настройки проекта, подключение к службе и затем выберите Azure Resource Manager, см. Также рисунок ниже.

Выберите «Проверка подлинности субъекта-службы» и ограничьте область действия своей группой ресурсов, которую вы создали ранее, см. Также рисунок ниже.

По умолчанию субъект-служба (SPN) подключения службы имеет права участника для группы ресурсов. Однако для этого конвейера SPN необходимы права владельца (или дополнительные права администратора доступа пользователей рядом с участником) в группе ресурсов, так как ADFv2 MI должен получить предоставленные права RBAC для учетной записи ADLSgen2. При нажатии на «Управление субъектом службы» в подключении к службе в Azure DevOps можно найти идентификатор приложения. Используйте следующий сценарий Azure CLI, чтобы назначить права владельца на имя участника-службы (это также можно сделать на портале):

# get your subscriptioin id
az account list
# create role
az role assignment create --assignee "<<application id>>" --role "Owner" --scope "/subscriptions/<<your subscription Id>> /resourcegroups/<<resource group name>>"

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

az role assignment list --resource-group <<resource group name>>

C2. Развертывание ресурсов Azure

Перейдите в свой проект Azure DevOps, выберите «Конвейеры» и нажмите «Новый конвейер». Перейдите в мастер, выберите Azure Repos Git и репозиторий git, который вы создали ранее. На вкладке configure выберите «Существующий файл YAML Azure Pipelines», а затем azure-pipelines.yml, который можно найти в репозитории git, см. Также ниже.

Впоследствии следующие переменные необходимо заменить вашими собственными значениями:

variables: 
  # Azure DevOps settings
  AzureServiceConnectionId: '<<your service connection name>>'
  # Change environment variables used in bash scripts with your own
  RG: 'blog-datapipelineprod-rg'  
  SUB: '<<your subscription>>' 
  AKV: 'blogdatapipelineakv123' # unique value 
  STOR: 'blogdatapipelinestor123' # unique value
  COSMOSDBNAME: 'blog-datapipeline-cosmos123' #unique value
  DBRWORKSPACE: 'blog-datapipeline-dbr123' #unique value

После замены переменных конвейер создается и запускается немедленно, см. Ниже

Когда все будет правильно развернуто, вы увидите следующую картину:

C3. Монитор конвейера данных

Последним шагом в azure-pipelines.yml является выполнение конвейера ADFv2. Это сделано для того, чтобы закончить пример, однако конвейеры ADFv2 обычно запускаются не из Azure DevOps, а с использованием собственного расписания ADFv2 или другого планировщика, используемого предприятием. Запуск конвейера фабрики данных Azure можно проверить на вкладке конвейеров монитора ADFv2, см. Также рисунок ниже.

Записная книжка Azure Databricks добавляет данные в API графа Cosmos DB. Когда вы открываете свою учетную запись Azure Cosmos DB на портале, включаете доступ с портала в правилах брандмауэра, а затем переходите в проводник данных, это можно проверить, см. Ниже.

D. Заключение

Создание конвейера данных - это одно; ввод его в производство - другое. Это особенно верно для современного конвейера данных, в котором несколько сервисов используются для расширенной аналитики. В этом блоге предоставляется следующее:

  • Конвейер Azure DevOps, который может управлять развертыванием и интеграцией Azure Databricks, фабрики данных Azure и Azure Cosmos DB.
  • Architecute и проект Github, который преобразует CSV-файлы в паркет, создает графические данные и сохраняет их в Cosmos DB Gremlin.

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