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

Nesta página, descrevemos como usar buckets ativados por namespace hierárquico para cargas de trabalho do Hadoop.

Visão geral

Ao usar um bucket do Cloud Storage com namespace hierárquico, é possível configurar o conector do Cloud Storage para usar a operação renomear pasta em cargas de trabalho como Hadoop, Spark e Hive.

Em um bucket sem namespace hierárquico, uma operação de renomeação no Hadoop, Spark e Hive envolve vários jobs de cópia e exclusão de objetos, impactando no desempenho e na consistência. Renomear uma pasta usando o Cloud Storage otimiza o desempenho e garante consistência ao lidar com pastas com um grande número de objetos.

Dataproc

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

  1. Instale ou atualize o conector do Cloud Storage versão 2.2.23 ou posterior (exceto a versão 3.0.0).

  2. Crie um cluster do Dataproc 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. Instale ou atualize o conector do Cloud Storage versão 2.2.23 ou posterior (exceto a versão 3.0.0).

  2. 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: os recursos de pasta não são excluídos. 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 gratuita do Cloud Storage