Saltar para o conteúdo principal
Version: 2.3.0

Fix 202507001

Descrição da Inconsistência ou Falha

Durante o uso do Apache Spark para escrita de dados em buckets do Apache Ozone via protocolo S3A, foram identificadas falhas distintas de acordo com o layout de bucket e configurações de integração com o Apache Iceberg. Essas falhas não permitiam a escrita de arquivos e conclusão de jobs Spark, mesmo com configurações válidas.

Além disso, foi identificado uma falha na visualização dos buckets e volumes do Apache Ozone através do Ozone Recon UI quando o plugin do Ranger estava habilitado.

Serviços e Componentes Afetados

  • Apache Ozone 1.4.0
  • Apache Spark 3.3.4

Issues Relacionadas

  • TDP-PATCH-9180
  • BIGTOP-9162

Impacto

Não é possível realizar a escrita em buckets do Apache Ozone através do Apache Spark utilizando o protocolo S3 e visualizar buckets e volumes do Apache Ozone através do Ozone Recon UI quando o plugin do Ranger está habilitado.

Detalhes Técnicos

Escrita em Bucket com Layout OBJECT_STORE

A execução do comando abaixo resultava em erro:

PySpark
df.write.mode("overwrite").text("s3a://bucket/keyfile")

Erro retornado:

javax.servlet.ServletException: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

Este bug foi mapeado no JIRA HDDS-10399, relacionado ao tratamento incorreto de requisições no S3 Gateway ao manipular diretórios em layout OBJECT_STORE.

Escrita em Bucket com Layout FILE_SYSTEM_OPTIMIZED

A execução do comando abaixo resultava em erro:

PySpark
df.write.mode("overwrite").text("s3a://bucket/keyfile")

Erro retornado:

DIRECTORY_NOT_EMPTY org.apache.hadoop.ozone.om.exceptions.OMException: Directory is not empty. Key:keyfile

Erro na operação de sobrescrita quando a chave já existe como diretório.

O Ozone OFS não lida adequadamente com deletions aninhadas e sobrescritas usando o driver S3A.

Escrita com Iceberg em Bucket OFS via S3A

A execução do comando abaixo resultava em erro:

PySpark
spark.sql.catalog.s3fs = org.apache.iceberg.spark.SparkCatalog
spark.sql.catalog.s3fs.type = hadoop
spark.sql.catalog.s3fs.warehouse = s3a://benchmark-iceberg-s3-fs/
df.writeTo("s3fs.benchmark_iceberg_s3_fs.customers").createOrReplace()}

Erro retornado:

DIRECTORY_NOT_EMPTY org.apache.iceberg.exceptions.CommitFailedException: Failed to commit changes using rename
java.io.FileNotFoundException: No such file or directory

Operações do Iceberg dependem do rename() atômico, que falha com o driver S3A em conjunto com Ozone OFS. O commit intermediário não é encontrado durante a finalização da operação.

Ações Requeridas

Siga as instruções abaixo, de acordo com a versão do sistema operacional Enterprise Linux (EL), para instalar o fix e corrigir tais falhas.

Instalação da Correção

Execute a instalação da correção (fix-202507001) em todas as máquinas (nós do cluster) que possuem componentes do serviço Apache Ozone instalados.

  1. Faça o download da correção utilizando os comandos wget ou curl:
Terminal
wget --user USUARIO --password SENHA https://repo.tecnisys.com.br/yum/tdp/fixes/ozone/1.4.0/202507/140-202507001/ozone-1.4.0-fix-202507001-0.el9.noarch.rpm
note

Substitua USUARIO e SENHA pelo seu usuário e senha de acesso ao repositório de pacotes público da Tecnisys.

  1. Instale o fix:
Terminal
sudo dnf install ozone-1.4.0-fix-202507001-0.el9.noarch.rpm
warning

Não esqueça de instalar este fix em todas as máquinas (nós do cluster) que possuem componentes do serviço Apache Ozone instalados.

  1. Através do Ambari Web, reinicie os serviços Apache Ozone e Apache Spark.

Reinstalação do Plugin do Ozone

Execute a reinstalação do plugin do Ozone para o Ranger em todas as máquinas (nós do cluster) que possuem o componente Ozone Manager instalado.

  1. Faça o download do RPM do plugin utilizando os comandos wget ou curl:
Terminal
wget --user USUARIO --password SENHA https://repo.tecnisys.com.br/repository/yum-tdp/tdp/components/2.3.0/el-9-x86_64/ranger/ranger_2_3-ozone-plugin-2.4.0-2.x86_64.rpm
note

Substitua USUARIO e SENHA pelo seu usuário e senha de acesso ao repositório de pacotes público da Tecnisys.

  1. Instale o plugin:
Terminal
sudo dnf install ranger_2_3-ozone-plugin-2.4.0-2.x86_64.rpm
warning

Não se esqueça de instalar este plugin em todas as máquinas (nós do cluster) que possuem o componente Ozone Manager instalado.