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:
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:
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:
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.
- Enterprise Linux 9
- Enterprise Linux 8
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.
- Faça o download da correção utilizando os comandos
wget
oucurl
:
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
Substitua USUARIO
e SENHA
pelo seu usuário e senha de acesso ao repositório de pacotes público da Tecnisys.
- Instale o fix:
sudo dnf install ozone-1.4.0-fix-202507001-0.el9.noarch.rpm
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.
- 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.
- Faça o download do RPM do plugin utilizando os comandos
wget
oucurl
:
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
Substitua USUARIO
e SENHA
pelo seu usuário e senha de acesso ao repositório de pacotes público da Tecnisys.
- Instale o plugin:
sudo dnf install ranger_2_3-ozone-plugin-2.4.0-2.x86_64.rpm
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.
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.
- Faça o download da correção utilizando os comandos
wget
oucurl
:
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.el8.noarch.rpm
Substitua USUARIO
e SENHA
pelo seu usuário e senha de acesso ao repositório de pacotes público da Tecnisys.
- Instale o fix:
sudo dnf install ozone-1.4.0-fix-202507001-0.el8.noarch.rpm
Não se esqueça de instalar este fix em todas as máquinas (nós do cluster) que possuem componentes do serviço Apache Ozone instalados.
- 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.
- Faça o download do RPM do plugin utilizando os comandos
wget
oucurl
:
wget --user USUARIO --password SENHA https://repo.tecnisys.com.br/repository/yum-tdp/tdp/components/2.3.0/el-8-x86_64/ranger/ranger_2_3-ozone-plugin-2.4.0-2.x86_64.rpm
Substitua USUARIO
e SENHA
pelo seu usuário e senha de acesso ao repositório de pacotes público da Tecnisys.
- Instale o plugin:
sudo dnf install ranger_2_3-ozone-plugin-2.4.0-2.x86_64.rpm
Não esqueça de instalar este plugin em todas as máquinas (nós do cluster) que possuem o componente Ozone Manager instalado.