Планирование ноутбуков Jupyter в Meta

Блог

ДомДом / Блог / Планирование ноутбуков Jupyter в Meta

Jul 21, 2023

Планирование ноутбуков Jupyter в Meta

В Meta Bento — это наша внутренняя платформа для ноутбуков Jupyter, которую используют многие внутренние пользователи. Ноутбуки также широко используются для создания отчетов и рабочих процессов (например, выполнения

В Meta Bento — это наша внутренняя платформа для ноутбуков Jupyter, которую используют многие внутренние пользователи. Блокноты также широко используются для создания отчетов и рабочих процессов (например, выполнения ETL данных), которые необходимо повторять через определенные промежутки времени. Пользователям таких ноутбуков придется не забывать вручную запускать свои ноутбуки с необходимой частотой — процесс, который люди могут забыть, поскольку он не масштабируется в зависимости от количества используемых ноутбуков.

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

Возможность прозрачно отвечать на вопросы о потоке данных через мета-системы в целях конфиденциальности данных и соблюдения нормативных требований отличает наше запланированное внедрение блокнотов от остальной отрасли.

В этом посте мы объясним, как мы объединили Bento с нашей платформой пакетного конвейера ETL под названием Dataswarm (вспомним Apache Airflow) с учетом конфиденциальности и происхождения.

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

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

Существует три основных компонента для поддержки запланированных записных книжек:

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

Для ETL мы извлекаем данные и записываем их новым способом:

Мы интегрировали BentoOperator в структуру назначения данных Meta, чтобы гарантировать, что данные используются только для той цели, для которой они предназначены. Эта структура гарантирует, что цель использования данных соблюдается, поскольку данные передаются и преобразуются в стеке Meta. В рамках планирования записной книжки пользователь предоставляет «зону целевой политики», которая служит точкой интеграции с целевой структурой данных.

Давайте теперь рассмотрим рабочий процесс планирования записной книжки:

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

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

Следующий шаг включает предварительный просмотр сгенерированного конвейера перед созданием различий в Phabricator (инструмент просмотра различий Meta).

Помимо кода конвейера для запуска записной книжки, сама записная книжка также проверяется в системе контроля версий, чтобы ее можно было просмотреть. Результаты попытки запустить ноутбук в запланированной настройке также включены в план тестирования.

Как только разница будет рассмотрена и получена, расписание начнет работать на следующий день. В случае сбоя выполнения записной книжки по какой-либо причине владелец расписания получает автоматическое уведомление. Мы также создали расширение контекстной панели непосредственно в Bento, чтобы облегчить отладку запусков блокнотов.

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