Saltar para o conteúdo principal
Version: 2.3.0

Fix 202507001

Descrição da Inconsistência ou Falha

Durante a utilização do Apache Spark para escrita de dados em contentores do Apache Ozone através do protocolo S3A, foram identificadas falhas distintas de acordo com o esquema do contentor e configurações de integração com o Apache Iceberg. Estas falhas impediam a escrita de ficheiros e a conclusão de trabalhos Spark, mesmo com configurações válidas.

Adicionalmente, foi identificado um problema na visualização dos contentores e volumes do Apache Ozone através da interface Ozone Recon quando o plugin do Ranger estava ativado.

Serviços e Componentes Afetados

  • Apache Ozone 1.4.0
  • Apache Spark 3.3.4

Questões Relacionadas

  • TDP-PATCH-9180
  • BIGTOP-9162

Impacto

Não é possível efetuar a escrita em contentores do Apache Ozone através do Apache Spark utilizando o protocolo S3, nem visualizar contentores e volumes do Apache Ozone através da interface Ozone Recon quando o plugin do Ranger está ativado.

Detalhes Técnicos

Escrita em Contentor com Esquema OBJECT_STORE

A execução do seguinte comando resultava num erro:

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

Erro retornado:

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

Este erro foi mapeado no JIRA HDDS-10399, relacionado com o processamento incorreto de pedidos no S3 Gateway ao gerir diretórios no esquema OBJECT_STORE.

Escrita em Contentor com Esquema FILE_SYSTEM_OPTIMIZED

A execução do seguinte comando resultava num 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 sobreposição quando a chave já existe como diretório.

O Ozone OFS não processa corretamente eliminações aninhadas e sobreposições ao utilizar o controlador S3A.

Escrita com Iceberg em Contentor OFS via S3A

A execução do seguinte comando resultava num 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

As operações do Iceberg dependem da função rename() atómica, que falha com o controlador S3A em conjunto com o Ozone OFS. O commit intermédio não é encontrado durante a finalização da operação.

Ações Necessárias

Siga as instruções abaixo, de acordo com a versão do sistema operativo Enterprise Linux (EL), para instalar a correção e resolver estes problemas.

Instalação da Correção

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

  1. Descarregue a correção utilizando os comandos wget ou curl:
Terminal
wget --user UTILIZADOR --password PALAVRA-PASSE 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 UTILIZADOR e PALAVRA-PASSE pelas suas credenciais de acesso ao repositório público de pacotes da Tecnisys.

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

Não se esqueça de instalar esta correção em todas as máquinas (nós do cluster) que tenham 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 Ozone

Reinstale o plugin Ozone para o Ranger em todas as máquinas (nós do cluster) que tenham o componente Ozone Manager instalado.

  1. Descarregue o RPM do plugin utilizando wget ou curl:
Terminal
wget --user UTILIZADOR --password PALAVRA-PASSE 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 UTILIZADOR e PALAVRA-PASSE pelas suas credenciais de acesso ao repositório público de pacotes 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 tenham o componente Ozone Manager instalado.