Conector do Cloud Storage

O conector do Cloud Storage é uma biblioteca Java de código aberto que permite executar jobs do Apache Hadoop ou do Apache Spark diretamente nos dados no Cloud Storage.

Benefícios do conector do Cloud Storage

  • Acesso direto a dados:armazene seus dados no Cloud Storage. acessá-lo diretamente. Não é necessário transferi-lo para o HDFS primeiro.
  • Compatibilidade com HDFS: você pode acessar seus dados no Cloud Storage usando o prefixo gs:// em vez de hdfs://.
  • Interoperabilidade: armazenar dados no Cloud Storage permite interoperabilidade ininterrupta entre o Spark, o Hadoop e outros serviços do Google.
  • Acessibilidade de dados:quando você encerra um cluster do Hadoop, diferentemente HDFS, você continuará tendo acesso aos seus dados no Cloud Storage.
  • Alta disponibilidade de dados: os dados armazenados no Cloud Storage são altamente disponível e replicada globalmente sem prejudicar o desempenho.
  • Sem sobrecarga de gerenciamento de armazenamento: diferentemente do HDFS, o Cloud Storage não exija manutenção de rotina, como verificação do sistema de arquivos ou atualizar ou reverter para uma versão anterior do sistema de arquivos.
  • Inicialização rápida: no HDFS, um job MapReduce não pode ser iniciado até que o NameNode está fora do modo de segurança, um processo que pode levar alguns segundos ou muitos minutos, dependendo do tamanho e do estado dos dados. Com o Cloud Storage, inicie o job assim que os nós de tarefa começarem, o que gera uma economia significativa no longo prazo.

Configuração do conector em clusters do Dataproc

O conector do Cloud Storage é instalado por padrão em todos os nós do cluster do Dataproc no diretório /usr/local/share/google/dataproc/lib/. As subseções a seguir descrevem as etapas que você pode seguir para concluir a configuração do conector nos clusters do Dataproc.

Conta de serviço da VM

Ao executar o conector em nós de cluster do Dataproc e outras VMs do Compute Engine, a propriedade google.cloud.auth.service.account.enable é definida como false por padrão, o que significa que não é necessário configurar as credenciais da conta de serviço do VM para o conector. As credenciais da conta de serviço do VM são fornecidas pelo servidor de metadados do VM.

A conta de serviço da VM do Dataproc precisa ter permissão para acessar o bucket do Cloud Storage.

Versões do conector selecionadas pelo usuário

As versões padrão do conector do Cloud Storage usadas nas imagens mais recentes instalados nos clusters do Dataproc estão listados na páginas de versão de imagem. Se seu aplicativo depende de uma versão de conector não padrão implantada no seu cluster, execute uma das ações a seguir para usar o cluster selecionado versão do conector:

  • Crie um cluster com a flag --metadata=GCS_CONNECTOR_VERSION=x.y.z, que atualiza o conector usado pelos aplicativos em execução no cluster para a versão especificada do conector.
  • Inclua e reloque as classes e dependências do conector para a versão que você está usando no jar do aplicativo. A realocação é necessária para evitar um conflito entre a versão implantada do conector e a versão padrão do conector instalada no cluster do Dataproc. Consulte também o exemplo de realocação de dependências do Maven.

Configuração do conector em clusters que não são do Dataproc

Siga as etapas abaixo para configurar o conector do Cloud Storage no Um cluster que não seja do Dataproc, como um cluster do Apache Hadoop ou do Spark que você usa para mover dados HDFS locais para o Cloud Storage.

  1. Fazer o download do conector

  2. Instalar o conector.

    Siga as instruções do GitHub. para instalar, configurar e testar o conector do Cloud Storage.

Uso do conector

É possível usar o conector para acessar os dados do Cloud Storage das seguintes maneiras:

Uso do Java

O conector do Cloud Storage requer o Java 8.

Este é um exemplo de uma seção de gerenciamento de dependências POM do Maven para o conector do Cloud Storage. Para mais informações, consulte Gerenciamento de dependências.

<dependency>
    <groupId>com.google.cloud.bigdataoss</groupId>
    <artifactId>gcs-connector</artifactId>
    <version>hadoopX-X.X.XCONNECTOR VERSION</version>
    <scope>provided</scope>
</dependency>

Para uma versão sombreada:

<dependency>
    <groupId>com.google.cloud.bigdataoss</groupId>
    <artifactId>gcs-connector</artifactId>
    <version>hadoopX-X.X.XCONNECTOR VERSION</version>
    <scope>provided</scope>
    <classifier>shaded</classifier>
</dependency>

Compatibilidade com conectores

O conector do Cloud Storage tem o suporte do Google Cloud para uso com produtos e casos de uso do Google Cloud. Quando usado com o Dataproc, ele tem o mesmo suporte que o Dataproc. Para mais informações, consulte Receber suporte.

Conectar-se ao Cloud Storage usando o gRPC

Por padrão, o conector do Cloud Storage no Dataproc usa a API JSON do Cloud Storage. Esta seção mostra como ativar o conector do Cloud Storage para usar o gRPC.

Considerações de uso

O uso do conector do Cloud Storage com gRPC inclui as a seguir:

  • Local do bucket regional: o gRPC só pode melhorar as latências de leitura quando as VMs do Compute Engine e os buckets do Cloud Storage estão localizados na mesma região do Compute Engine.
  • Jobs de alta leitura: o gRPC pode oferecer latências de leitura aprimoradas para são leituras de longa duração e ajudam cargas de trabalho de leitura intensa. Ele não é recomendado para aplicativos que criam um canal gRPC, executar um cálculo breve e fechar o canal.
  • Solicitações não autenticadas:o gRPC não oferece suporte a solicitações solicitações.

Requisitos

Os requisitos a seguir se aplicam ao usar o gRPC com o conector do Cloud Storage:

  • A rede VPC do cluster do Dataproc precisa oferecer suporte à conectividade direta. Isso significa que as rotas e As regras de firewall precisam permitir o tráfego de saída para alcançar 34.126.0.0/18 e 2001:4860:8040::/42.

  • Ao criar um cluster do Dataproc, use a versão 2.2.23 ou mais recente do conector do Cloud Storage com a versão 2.1.56+ da imagem ou a versão v3.0.0 ou mais recente do conector do Cloud Storage com a versão 2.2.0 ou mais recente da imagem. A versão do conector do Cloud Storage instalada em cada versão da imagem do Dataproc está listada nas páginas de versão da imagem do Dataproc.

    • Se você criar e usar um Dataproc no cluster virtual do GKE para suas solicitações gRPC do Cloud Storage, versão do GKE Recomendamos usar 1.28.5-gke.1199000 com gke-metadata-server 0.4.285. Essa combinação oferece suporte à conectividade direta.
  • Você ou o administrador da organização precisam conceder papéis do Identity and Access Management que incluam as permissões necessárias para configurar e fazer solicitações gRPC ao conector do Cloud Storage. Esses papéis podem incluir o seguinte:

    • Função do usuário: Editor do Dataproc, função concedida aos usuários para permitir a criação de clusters e o envio de jobs
    • Papel da conta de serviço: Usuário do objeto do Storage concedido ao Dataproc, Conta de serviço de VM para permitir que aplicativos executados em VMs de cluster visualizem, leiam, criem e gravem objetos do Cloud Storage.

Ativar o gRPC no conector do Cloud Storage

É possível ativar o gRPC no conector do Cloud Storage na cluster ou do job. Depois de ativadas no cluster, as solicitações de leitura do conector do Cloud Storage usam o gRPC. Se a ativação for feita em um job em vez de no nível do cluster, as solicitações de leitura do conector do Cloud Storage vão usar o gRPC apenas para o job.

Ativar um cluster

Para ativar o gRPC no conector do Cloud Storage no nível do cluster, faça o seguinte: a propriedade core:fs.gs.client.type=STORAGE_CLIENT quando você Crie um cluster do Dataproc. Quando o gRPC é ativado no cluster, as solicitações de leitura do conector do Cloud Storage feitas por trabalhos em execução no cluster usam o gRPC.

Exemplo da CLI gcloud:

gcloud dataproc clusters create CLUSTER_NAME \
    --project=PROJECT_ID \
    --region=REGION \
    --properties=core:fs.gs.client.type=STORAGE_CLIENT

Substitua:

  • CLUSTER_NAME: especifique um nome para o cluster.
  • PROJECT_NAME: o ID do projeto em que o cluster está localizado. Os IDs dos projetos estão listados na seção Informações do projeto Painel do console do Google Cloud.
  • REGION: especifique uma região do Compute Engine onde o cluster vai ficar.

Ativar um job

Para ativar o gRPC no conector do Cloud Storage para um determinado job, inclua --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT quando você envia um job.

Exemplo: execute um job em um cluster que usa o gRPC para ler do Cloud Storage.

  1. Crie um script /tmp/line-count.py PySpark local que use o gRPC para ler um arquivo de texto do Cloud Storage e gerar o número de linhas no arquivo.

    cat <<EOF >"/tmp/line-count.py"
    #!/usr/bin/python
    import sys
    from pyspark.sql import SparkSession
    path = sys.argv[1]
    spark = SparkSession.builder.getOrCreate()
    rdd = spark.read.text(path)
    lines_counter = rdd.count()
    print("There are {} lines in file: {}".format(lines_counter,path))
    EOF
    
  2. Crie um arquivo de texto /tmp/line-count-sample.txt local.

    cat <<EOF >"/tmp/line-count-sample.txt"
    Line 1
    Line 2
    line 3
    EOF
    
  3. Faça upload dos arquivos locais /tmp/line-count.py e /tmp/line-count-sample.txt no bucket no Cloud Storage.

    gcloud storage cp /tmp/line-count* gs://BUCKET
    
  4. Execute o job line-count.py no cluster. Defina --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT para ativar o gRPC para solicitações de leitura do conector do Cloud Storage.

    gcloud dataproc jobs submit pyspark gs://BUCKET/line-count.py \
    --cluster=CLUSTER_NAME \
    --project=PROJECT_ID  \
    --region=REGION \
    --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT \
    -- gs://BUCKET/line-count-sample.txt
    

    Substitua:

    • CLUSTER_NAME: o nome de um cluster existente.
    • PROJECT_NAME: o ID do projeto. Os IDs dos projetos estão listados na seção Informações do projeto no Painel do console do Google Cloud.
    • REGION: a região do Compute Engine em que o cluster está localizado.
    • BUCKET: seu bucket do Cloud Storage.

Gerar métricas gRPC do lado do cliente

É possível configurar o conector do Cloud Storage para gerar métricas relacionadas ao gRPC no Cloud Monitoring. As métricas relacionadas ao gRPC podem ajudar faça o seguinte:

  • Monitorar e otimizar a performance das solicitações gRPC para o Cloud Storage
  • Solucionar e depurar problemas
  • Ter insights sobre o uso e o comportamento do aplicativo

Para saber como configurar o conector do Cloud Storage para gerar métricas relacionadas ao gRPC, consulte Usar métricas do lado do cliente do gRPC.

Recursos