banner
Lar / blog / Agendando Jupyter Notebooks no Meta
blog

Agendando Jupyter Notebooks no Meta

Jun 17, 2023Jun 17, 2023

Na Meta, Bento é nossa plataforma interna de notebooks Jupyter que é aproveitada por muitos usuários internos. Os notebooks também estão sendo amplamente usados ​​para criar relatórios e fluxos de trabalho (por exemplo, realizar ETL de dados) que precisam ser repetidos em determinados intervalos. Os usuários com esses notebooks teriam que se lembrar de executar manualmente seus notebooks na cadência necessária – um processo que as pessoas podem esquecer porque não é escalonável com o número de notebooks usados.

Para resolver esse problema, investimos na construção de uma infraestrutura de notebooks programados que se adapta perfeitamente ao restante das ferramentas internas disponíveis na Meta. Investir em infraestrutura ajuda a garantir que a privacidade seja inerente a tudo o que construímos. Isso nos permite continuar a construir soluções inovadoras e valiosas com privacidade segura.

A capacidade de responder de forma transparente a perguntas sobre o fluxo de dados através de sistemas Meta para fins de privacidade de dados e conformidade com regulamentos diferencia a implementação de nossos notebooks programados do resto do setor.

Nesta postagem, explicaremos como casamos o Bento com nossa estrutura de pipeline ETL em lote chamada Dataswarm (pense no Apache Airflow) de uma maneira que reconhece a privacidade e a linhagem.

Na Meta, estamos comprometidos em melhorar a confiança na produção, realizando análises estáticas em artefatos programados e mantendo narrativas coerentes em torno de fluxos de dados, aproveitando operadores Dataswarm transparentes e anotações de dados. Os notebooks representam um desafio especial porque:

Essas três considerações moldaram e influenciaram nossas decisões de design. Em particular, limitamos os notebooks que podem ser programados para aqueles que executam principalmente ETL e aqueles que realizam transformações de dados e exibem visualizações. Notebooks com quaisquer outros efeitos colaterais estão atualmente fora do escopo e não são elegíveis para agendamento.

Existem três componentes principais para suporte a notebooks agendados:

Para resolver a maioria das preocupações destacadas acima, realizamos o estado de execução do notebook em um contêiner sem acesso à rede. Também aproveitamos anotações de dados de entrada e saída para mostrar o fluxo de dados.

Para ETL, buscamos dados e os escrevemos de uma maneira nova:

Integramos o BentoOperator à estrutura de finalidade de dados do Meta para garantir que os dados sejam usados ​​apenas para a finalidade a que se destinam. Esta estrutura garante que o propósito de uso dos dados seja respeitado à medida que os dados fluem e se transmutam pela pilha do Meta. Como parte do agendamento de um notebook, uma “zona de política de finalidade” é fornecida pelo usuário e serve como ponto de integração com a estrutura de finalidade de dados.

Vamos agora explorar o fluxo de trabalho para agendar um notebook:

Expusemos o ponto de entrada do agendamento diretamente no cabeçalho do notebook, então tudo o que os usuários precisam fazer é apertar um botão para começar.

A primeira etapa do fluxo de trabalho é configurar alguns parâmetros que serão utilizados para gerar automaticamente o pipeline do cronograma.

A próxima etapa envolve a visualização do pipeline gerado antes que uma comparação do Phabricator (ferramenta de revisão de diferenças do Meta) seja criada.

Além do código do pipeline para executar o notebook, o próprio notebook também é verificado no controle de origem para que possa ser revisado. Os resultados da tentativa de executar o notebook em uma configuração agendada também estão incluídos no plano de teste.

Depois que a diferença for revisada e aterrada, a programação começará a ser executada no dia seguinte. Caso a execução do notebook falhe por qualquer motivo, o proprietário do agendamento será notificado automaticamente. Também construímos uma extensão do painel de contexto diretamente no Bento para ajudar na depuração de execuções de notebook.

Embora tenhamos abordado o desafio de oferecer suporte a notebooks programados com foco na privacidade, os notebooks que estão no escopo do agendamento estão limitados àqueles que executam ETL ou que realizam análise de dados sem outros efeitos colaterais. Esta é apenas uma fração dos notebooks que os usuários desejam agendar. Para aumentar o número de casos de uso, investiremos no suporte a outras fontes de dados transparentes além da célula SQL.