Usar buckets hierárquicos ativados por namespace para cargas de trabalho do Hadoop

Neste documento, descrevemos como configurar o conector do Cloud Storage em um cluster para realizar operações de pasta e explicamos as considerações de compatibilidade para versões anteriores do conector.

Ao usar o conector do Cloud Storage em um cluster com um bucket com namespace hierárquico, você ativa as renomeações atômicas de pastas na configuração do cluster, o que melhora o desempenho e a consistência ao lidar com pastas grandes para cargas de trabalho do Hadoop, Spark e Hive. Em buckets sem namespace hierárquico, uma operação de renomeação envolve vários jobs de cópia e exclusão de objetos, o que pode afetar o desempenho e a consistência.

Antes de começar

Para usar os recursos de buckets de namespace hierárquico, use as seguintes versões do conector do Cloud Storage:

  • 2.2.23 ou posterior (se você estiver usando a versão 2.x.x)
  • 3.0.1 ou mais recente (se você estiver usando a versão 3.x.x)

As versões anteriores do conector (3.0.0 e anteriores à 2.2.23) têm limitações. Para mais informações sobre as limitações, consulte Compatibilidade com o conector do Cloud Storage versão 3.0.0 ou anteriores à 2.2.23.

Ativar o conector do Cloud Storage em um cluster

Nesta seção, descrevemos como ativar o conector do Cloud Storage em um cluster do Serviço Gerenciado para Apache Spark e em um cluster autogerenciado do Hadoop.

Serviço Gerenciado para Apache Spark

É possível usar a Google Cloud CLI para criar um cluster do Serviço Gerenciado para Apache Spark e permitir que o conector do Cloud Storage execute as operações da pasta.

  1. Crie um cluster do Serviço Gerenciado para Apache Spark usando o seguinte comando:

      gcloud dataproc clusters create CLUSTER_NAME
      --properties=core:fs.gs.hierarchical.namespace.folders.enable=true,
      core:fs.gs.http.read-timeout=30000
      

    Em que:

    • CLUSTER_NAME é o nome do cluster; Por exemplo, my-cluster
    • fs.gs.hierarchical.namespace.folders.enable é usado para ativar o namespace hierárquico em um bucket.
    • fs.gs.http.read-timeout é o tempo máximo permitido, em milissegundos, para ler dados de uma conexão estabelecida. Essa configuração é opcional.

Hadoop autogerenciado

É possível ativar o conector do Cloud Storage no cluster autogerenciado do Hadoop para executar as operações da pasta.

  1. Adicione o seguinte ao arquivo de configuração core-site.xml:

        <property>
          <name>fs.gs.hierarchical.namespace.folders.enable</name>
          <value>true</value>
        </property>
        <property>
          <name>fs.gs.http.read-timeout</name>
          <value>30000</value>
        </property>
      

    Em que:

    • fs.gs.hierarchical.namespace.folders.enable é usado para ativar o namespace hierárquico em um bucket.
    • fs.gs.http.read-timeout é o tempo máximo permitido, em milissegundos, para ler dados de uma conexão estabelecida. Essa configuração é opcional.

Compatibilidade com a versão 3.0.0 do conector do Cloud Storage ou versões anteriores à 2.2.23

Usar o conector do Cloud Storage versão 3.0.0 ou versões anteriores à 2.2.23 ou desativar operações de pasta para namespace hierárquico pode levar às seguintes limitações:

  • Renomeações ineficientes de pastas: operações de renomeação de pastas no Hadoop. ocorrem usando operações de copiar e excluir no objeto, que são mais lentas e menos eficiente do que a operação rename folder dedicada.

  • Acúmulo de pastas vazias: as pastas não são excluídas automaticamente, o que leva ao acúmulo de pastas vazias no bucket. O acúmulo de pastas vazias pode ter o seguinte impacto:

    • Aumentar os custos de armazenamento se não forem excluídas explicitamente.
    • Diminuir a velocidade das operações de lista e aumentar o risco de tempos limite da operação.

  • Problemas de compatibilidade: misturar o uso do conector mais antigo com as versões mais recentes ou ativar e desativar operações de pastas pode levar a problemas de compatibilidade ao renomear pastas. Considere o seguinte cenário que usa uma combinação de versões do conector:

    1. Use uma versão do conector do Cloud Storage anterior à 2.2.23 para executar as seguintes tarefas:

      1. Escrever objetos na pasta foo/.
      2. Renomear a pasta foo/ como bar/. A operação de renomeação copia e exclui os objetos em foo/, mas não exclui a pasta foo/ vazia.
    2. Use o conector do Cloud Storage versão 2.2.23 com as configurações de operações da pasta ativadas para renomear a pasta bar/ como foo/.

    O conector versão 2.2.23, com a operação de pasta ativada, detecta a pasta foo/ atual, causando um erro na operação de renomeação. A versão mais antiga do conector não excluiu a pasta foo/, porque a operação da pasta foi desativada.

A seguir

Faça um teste

Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho do Cloud Storage em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.

Faça uma avaliação sem custo financeiro do Cloud Storage