Como instalar dependências do Python

Nesta página, você aprende a instalar pacotes Python e se conectar ao ambiente do Cloud Composer usando alguns aplicativos comuns.

Opções

As dependências são instaladas com as dependências atuais do Python incluídas no ambiente de base.

Se a dependência do Python não tiver dependências externas e não entrar em conflito com as do Cloud Composer, instale-as usando o Índice de pacotes Python por meio do Console do GCP, do SDK do Cloud ou da API do Cloud Composer.

Se você tiver outros requisitos, confira algumas opções.

Opção Use se…
Biblioteca local do Python A dependência do Python não for encontrada no índice de pacotes, e a biblioteca não tiver dependências externas, como "dist-packages".
Recurso de plug-ins Você quiser usar funcionalidades específicas de plug-ins, como modificar a interface da Web do Airflow.
PythonVirtualenvOperator A dependência do Python for encontrada no índice de pacotes e não tiver dependências externas. No entanto, você não quer que a dependência do Python seja instalada em todos os workers ou que ela entre em conflito com as dependências necessárias para o Cloud Composer.
KubernetesPodOperator

Você precisar de dependências externas que não podem ser instaladas usando o pip, como "dist-packages", ou estão em um servidor pip interno.

Essa opção exige configuração e manutenção extras. Ela costuma ser a melhor alternativa quando as outras opções não funcionam.

Antes de começar

  • Esta permissão é necessária para instalar pacotes Python no ambiente do Cloud Composer: composer.environments.update. Para mais informações, consulte Controle de acesso do Cloud Composer.
  • Os requisitos precisam seguir o formato especificado no PEP-508. Nele, cada requisito é especificado em letras minúsculas e consiste no nome do pacote com especificadores de versão e atributos extras opcionais.
  • Quando você instala dependências personalizadas do Python usando a API, todos os processos do Cloud Composer são executados com dependências PyPI recém-instaladas.
  • As dependências PyPI personalizadas podem entrar em conflito com as exigidas pelo Airflow, gerando instabilidade.
  • Antes de fazer implantações na produção, recomendamos que você teste os pacotes PyPI localmente em um contêiner de worker do Airflow.

Como instalar uma dependência do Python a partir do PyPI

Para adicionar, atualizar ou excluir as dependências do Python no ambiente, faça o seguinte:

Console

Determine o nome do pacote e os especificadores de versão, conforme mostrado:

  • "pi-python-client", "==1.1.post1"
  • "go-api-python-client", "==1.0.0.dev187"

Nos pacotes sem o especificador de versão, use uma string vazia como valor. Por exemplo, "glob2", " ".

Para acessar as dependências do Python de um ambiente, vá até a página Dependências do PyPI. Basta seguir estas etapas:

  1. Abra a página Ambientes no Console do Google Cloud Platform.

    Abrir a página "Ambientes"

  2. Clique no Nome do ambiente em que você quer instalar, atualizar ou excluir dependências do Python.

  3. Selecione a guia Dependências do PyPI.

  4. Clique no botão Editar.

  5. Para adicionar uma nova dependência, faça o seguinte:

    1. Clique no botão Adicionar dependência.

    2. Digite o nome e a versão da biblioteca nos campos respectivos.

  6. Para atualizar uma dependência atual, faça o seguinte:

    1. Selecione o campo Nome e/ou Versão da biblioteca que você quer atualizar.

    2. Insira um novo valor.

  7. Para excluir uma dependência, faça o seguinte:

    1. Passe o cursor do mouse sobre o nome da dependência que será excluída.

    2. Clique no ícone de lixeira exibido.

gcloud

Transmita um arquivo requirements.txt para a ferramenta de linha de comando gcloud. Formate o arquivo com cada especificador de requisito em uma linha separada.

Arquivo requirements.txt de amostra:

scipy>=0.13.3
scikit-learn
nltk[machine_learning]

Transmita o arquivo requirements.txt para o comando environments.set-python-dependencies para definir as dependências de instalação.

gcloud composer environments update ENVIRONMENT-NAME \\
--update-pypi-packages-from-file requirements.txt \\
--location LOCATION

O comando termina quando a operação é concluída. Para não ficar esperando, use a sinalização --async.

Se a atualização falhar por conta de um conflito de dependências, o ambiente continuará sendo executado com as dependências atuais. Se a operação for concluída, será possível usar as dependências recém-instaladas do Python nos DAGs.

rest

Use o método projects.locations.environments.patch, especificando config.softwareConfig.pypiPackages como o prefixo do parâmetro de consulta "updateMask".

Como instalar uma biblioteca local do Python

Para instalar uma biblioteca local ou interna do Python, faça o seguinte:

  1. Coloque as dependências em um subdiretório na pasta dags/. Para importar um módulo de um subdiretório, cada subdiretório no caminho do módulo precisa conter um arquivo de marcador de pacote __init__.py.

    Neste exemplo, a dependência é coin_module.py:

    dags/
      use_local_deps.py  # A DAG file.
      dependencies/
        __init__.py
        coin_module.py
    
  2. Importe a dependência do arquivo de definição do DAG.

    Por exemplo:

    from dependencies import coin_module

Como se conectar à interface da Web do Flower

O Flower é uma ferramenta baseada na Web para trabalhar com clusters do Celery. Ele vem pré-instalado no ambiente. É possível usar a IU da Web do Flower para monitorar os workers do Apache Airflow no ambiente.

Para acessar o Flower, faça o seguinte:

  1. Para determinar o cluster do Kubernetes Engine, visualize o ambiente:

    gcloud composer environments describe ENVIRONMENT-NAME /
        --location LOCATION

    O cluster é listado como gkeCluster. A zona em que o cluster é implantado aparece como location.

    Por exemplo:

          gcloud composer environments describe environment-name --location us-central1
          config:
            airflowUri: https://uNNNNe0aNNbcd3fff-tp.appspot.com
            dagGcsPrefix: gs://us-central1-may18-test-00a47695-bucket/dags
            gkeCluster: projects/example-project/zones/us-central1-a/clusters/us-central1-environment-name-00a47695-gke
            nodeConfig:
              diskSizeGb: 100
              location: projects/example-project/zones/us-central1-a

    No exemplo, o cluster é us-central1-environment-name-00a47695-gke, e a zona é us-central1-a. Essas informações também estão disponíveis na página de Detalhes do ambiente no Console do GCP.

  2. Conecte-se ao cluster do Kubernetes Engine:

    gcloud container clusters get-credentials CLUSTER_NAME /
    --zone CLUSTER_ZONE

    Por exemplo:

    gcloud container clusters get-credentials us-central1-environment-name-00a47695-gke --zone us-central1-a
    Fetching cluster endpoint and auth data.
    kubeconfig entry generated for us-central1-environment-name-00a47695-gke.
  3. Visualize os pods do worker e selecione aquele em que o Flower será executado:

    kubectl get pods

    Por exemplo:

    kubectl get pods
    NAME                                 READY     STATUS    RESTARTS   AGE
    airflow-redis-67f555bdb8-n6m9k       1/1       Running   0          13d
    airflow-scheduler-6cdf4f4ff7-dm4dm   2/2       Running   0          1h
    airflow-sqlproxy-54497bd557-nlqtg    1/1       Running   0          13d
    airflow-worker-c5c4b58c7-bl5bf       2/2       Running   0          1h
    airflow-worker-c5c4b58c7-szqhm       2/2       Running   0          1h
    airflow-worker-c5c4b58c7-zhmkv       2/2       Running   0          1h

    Os nomes do pod correspondem ao regex "airflow-(worker|scheduler)-[-a-f0-9]+").

  4. Execute o Flower no pod do worker:

    kubectl exec -it POD_NAME -c airflow-worker -- celery flower /
        --broker=redis://airflow-redis-service:6379/0 --port=5555

    Por exemplo:

    kubectl exec -it airflow-worker-c5c4b58c7-zhmkv -c airflow-worker -- celery flower
    --broker=redis://airflow-redis-service:6379/0 --port=5555
    [I 180601 20:35:55 command:139] Visit me at http://localhost:5555
    [I 180601 20:35:55 command:144] Broker: redis://airflow-redis-service:6379/0
  5. Em uma sessão de terminal separada, encaminhe a porta local para o Flower:

    kubectl port-forward POD_NAME 5555

    Por exemplo:

    kubectl port-forward airflow-worker-c5c4b58c7-zhmkv 5555
    Forwarding from 127.0.0.1:5555 -> 5555
  6. Para acessar a IU da Web, visite http://localhost:5555 no navegador local.

Como instalar o SQLAlchemy para acessar o banco de dados do Airflow

O SQLAlchemy é um mapeador objeto-relacional (ORM, na sigla em inglês) e kit de ferramentas SQL do Python. É possível instalá-lo e usá-lo para acessar a instância do Cloud SQL do Cloud Composer. Durante a instalação, o Cloud Composer configura a variável de ambiente AIRFLOW__CORE__SQL_ALCHEMY_CONN do Airflow.

Para instalar o SQLAlchemy, faça o seguinte:

  1. Instale o sqlalchemy no ambiente.

    gcloud composer environments update ENVIRONMENT-NAME /
        --location LOCATION /
        --update-pypi-package "sqlalchemy"
    
  2. Para determinar o cluster do Kubernetes Engine, visualize o ambiente:

    gcloud composer environments describe ENVIRONMENT-NAME /
        --location LOCATION
  3. Conecte-se ao cluster do Kubernetes Engine:

    gcloud container clusters get-credentials CLUSTER_NAME /
        --zone CLUSTER_LOCATION
  4. Visualize os pods do worker e selecione aquele a que você se conectará:

    kubectl get pods
  5. Execute o SSH para o pod do worker:

    kubectl exec -it POD_NAME `-- /bin/bash`

    Por exemplo:

    kubectl exec -it airflow-worker-54c6b57789-66pnr -- /bin/bash
    Defaulting container name to airflow-worker.
    Use 'kubectl describe pod/airflow-worker-54c6b57789-66pnr' to see all of the containers in this pod.
    airflow@airflow-worker-54c6b57789-66pnr:/$

  6. Use a biblioteca sqlalchemy para interagir com o banco de dados do Airflow:

    python
    import airflow.configuration as config
    config.conf.get('core', 'sql_alchemy_conn')
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…