Conetor do Cloud Storage

O conetor do Cloud Storage biblioteca Java de código aberto permite-lhe executar tarefas do Apache Hadoop ou Apache Spark diretamente em dados no Cloud Storage.

Vantagens do conetor do Cloud Storage

  • Acesso direto aos dados: armazene os seus dados no Cloud Storage e aceda aos mesmos diretamente. Não precisa de transferi-lo primeiro para o HDFS.
  • Compatibilidade com HDFS: pode aceder aos seus dados no Cloud Storage através do prefixo gs:// em vez de hdfs://.
  • Interoperabilidade: o armazenamento de dados no Cloud Storage permite a interoperabilidade perfeita entre o Spark, o Hadoop e os serviços Google.
  • Acessibilidade dos dados: quando encerra um cluster do Hadoop, ao contrário do HDFS, continua a ter acesso aos seus dados no Cloud Storage.
  • Elevada disponibilidade de dados: os dados armazenados no Cloud Storage estão altamente disponíveis e são replicados globalmente sem perda de desempenho.
  • Sem sobrecarga de gestão de armazenamento: ao contrário do HDFS, o Cloud Storage não requer manutenção de rotina, como verificar o sistema de ficheiros, ou atualizar ou reverter para uma versão anterior do sistema de ficheiros.
  • Início rápido: no HDFS, uma tarefa MapReduce não pode ser iniciada até que o NameNode esteja fora do modo de segurança, um processo que pode demorar alguns segundos a vários minutos, consoante a dimensão e o estado dos seus dados. Com o Cloud Storage, pode iniciar o seu trabalho assim que os nós de tarefas forem iniciados, o que gera uma poupança de custos significativa ao longo do tempo.

Configuração do conetor em clusters do Dataproc

O conetor do Cloud Storage é instalado por predefinição em todos os nós do cluster do Dataproc no diretório /usr/local/share/google/dataproc/lib/. As subsecções seguintes descrevem os passos que pode seguir para concluir a configuração do conetor em clusters do Dataproc.

Conta de serviço da VM

Quando executa o conetor em nós do cluster do Dataproc e noutras VMs do Compute Engine, a propriedade google.cloud.auth.service.account.enable é definida como false por predefinição, o que significa que não precisa de configurar as credenciais da conta de serviço da VM para o conetor. As credenciais da conta de serviço da VM são fornecidas pelo servidor de metadados da VM.

A conta de serviço da VM do Dataproc tem de ter autorização para aceder ao seu contentor do Cloud Storage.

Versões de conetores selecionadas pelo utilizador

As versões predefinidas do conetor do Cloud Storage usadas nas imagens mais recentes instaladas em clusters do Dataproc estão listadas nas páginas de versão de imagem. Se a sua aplicação depender de uma versão do conector não predefinida implementada no seu cluster, pode realizar uma das seguintes ações para usar a versão do conector selecionada:

  • Crie um cluster com a flag --metadata=GCS_CONNECTOR_VERSION=x.y.z, que atualiza o conetor usado pelas aplicações em execução no cluster para a versão do conetor especificada.
  • Inclua e mude a localização das classes de conetores e das dependências de conetores para a versão que está a usar no JAR da sua aplicação. A mudança de localização é necessária para evitar um conflito entre a versão do conector implementada e a versão do conector predefinida instalada no cluster do Dataproc. Consulte também o exemplo de mudança de localização das dependências do Maven.

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

Pode seguir os passos abaixo para configurar o conetor do Cloud Storage num cluster que não seja do Dataproc, como um cluster do Apache Hadoop ou Spark, que usa para mover dados do HDFS no local para o Cloud Storage.

  1. Transfira o conetor.

  2. Instale o conetor.

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

Utilização do conetor

Pode usar o conetor para aceder aos dados do Cloud Storage das seguintes formas:

Utilização de Java

O conetor do Cloud Storage requer o Java 8.

Segue-se uma secção de gestão de dependências do POM do Maven de exemplo para o conetor do Cloud Storage. Para mais informações, consulte o artigo Gestão 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>

Apoio técnico de conetores

O conetor do Cloud Storage é suportado pela Google Cloud para utilização com Google Cloud produtos e exemplos de utilização. Quando usado com o Dataproc, é suportado ao mesmo nível que o Dataproc. Para mais informações, consulte Obtenha apoio técnico.

Ligue-se ao Cloud Storage através do gRPC

Por predefinição, o conetor do Cloud Storage no Dataproc usa a API JSON do Cloud Storage. Esta secção mostra-lhe como ativar o conetor do Cloud Storage para usar o gRPC.

Considerações de utilização

A utilização do conetor do Cloud Storage com gRPC inclui as seguintes considerações:

  • Localização do contentor regional: o gRPC pode melhorar as latências de leitura apenas quando as VMs do Compute Engine e os contentores do Cloud Storage estão localizados na mesma região do Compute Engine.
  • Tarefas com muitas leituras: o gRPC pode oferecer latências de leitura melhoradas para leituras de longa duração e pode ajudar em cargas de trabalho com muitas leituras. Não é recomendado para aplicações que criam um canal gRPC, executam um cálculo curto e, em seguida, fecham o canal.
  • Pedidos não autenticados: o gRPC não suporta pedidos não autenticados.

Requisitos

Os seguintes requisitos aplicam-se quando usa o gRPC com o conector do Cloud Storage:

  • A rede VPC do cluster do Dataproc tem de suportar a conetividade direta. Isto significa que as rotas e as regras de firewall da rede têm de permitir que o tráfego de saída alcance 34.126.0.0/18 e 2001:4860:8040::/42.

  • Quando criar um cluster do Dataproc, tem de usar a versão 2.2.23 ou posterior do conetor do Cloud Storage com a versão 2.1.56+ da imagem, ou a versão v3.0.0 ou posterior do conetor do Cloud Storage com a versão 2.2.0 ou posterior da imagem. A versão do conetor do Cloud Storage instalada em cada versão da imagem do Dataproc está listada nas páginas da versão da imagem do Dataproc.

    • Se criar e usar um cluster virtual do Dataproc no GKE para os seus pedidos do gRPC Cloud Storage, recomenda-se a versão 1.28.5-gke.1199000 do GKE com o gke-metadata-server 0.4.285. Esta combinação suporta a conetividade direta.
  • O administrador da sua organização ou si tem de conceder funções de gestão de identidades e acessos que incluam as autorizações necessárias para configurar e fazer pedidos gRPC ao conector do Cloud Storage. Estas funções podem incluir o seguinte:

Ative o gRPC no conetor do Cloud Storage

Pode ativar o gRPC no conetor do Cloud Storage ao nível do cluster ou da tarefa. Depois de ativado no cluster, os pedidos de leitura do conector do Cloud Storage usam o gRPC. Se estiver ativado numa tarefa em vez de ao nível do cluster, os pedidos de leitura do conetor do Cloud Storage usam gRPC apenas para a tarefa.

Ative um cluster

Para ativar o gRPC no conetor do Cloud Storage ao nível do cluster, defina a propriedade core:fs.gs.client.type=STORAGE_CLIENT quando criar um cluster do Dataproc. Assim que o gRPC estiver ativado ao nível do cluster, os pedidos de leitura feitos pelo conetor do Cloud Storage e executados 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 o seguinte:

  • CLUSTER_NAME: especifique um nome para o seu cluster.
  • PROJECT_NAME: o ID do projeto onde o cluster está localizado. Os IDs dos projetos estão listados na secção Informações do projeto no Google Cloud painel de controloda consola.
  • REGION: especifique uma região do Compute Engine onde o cluster vai estar localizado.

Ative um trabalho

Para ativar o gRPC no conetor do Cloud Storage para uma tarefa específica, inclua --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT quando enviar uma tarefa.

Exemplo: execute uma tarefa num cluster existente que use o gRPC para ler a partir do Cloud Storage.

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

    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 /tmp/line-count-sample.txt ficheiro de texto local.

    cat <<EOF >"/tmp/line-count-sample.txt"
    Line 1
    Line 2
    line 3
    EOF
    
  3. Carregue ficheiros /tmp/line-count.py e /tmp/line-count-sample.txt locais para o seu contentor no Cloud Storage.

    gcloud storage cp /tmp/line-count* gs://BUCKET
    
  4. Execute a tarefa line-count.py no seu cluster. Defina --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT como para ativar o gRPC para pedidos de leitura do conetor 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 o seguinte:

    • CLUSTER_NAME: o nome de um cluster existente.
    • PROJECT_NAME: o ID do seu projeto. Os IDs dos projetos estão listados na secção Informações do projeto no Google Cloud painel de controlo da consola.
    • REGION: a região do Compute Engine onde o cluster está localizado.
    • BUCKET: o seu contentor do Cloud Storage.

Gere métricas do lado do cliente gRPC

Pode configurar o conetor do Cloud Storage para gerar métricas relacionadas com gRPC no Cloud Monitoring. As métricas relacionadas com o gRPC podem ajudar a fazer o seguinte:

  • Monitorize e otimize o desempenho dos pedidos gRPC para o Cloud Storage
  • Resolva e depure problemas
  • Obtenha estatísticas sobre a utilização e o comportamento das aplicações

Para ver informações sobre como configurar o conector do Cloud Storage para gerar métricas relacionadas com gRPC, consulte Use métricas do lado do cliente gRPC.

Recursos