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:
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:
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:
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.
- Enterprise Linux 9
- Enterprise Linux 8
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.
- Descarregue a correção utilizando os comandos
wget
oucurl
:
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
Substitua UTILIZADOR
e PALAVRA-PASSE
pelas suas credenciais de acesso ao repositório público de pacotes da Tecnisys.
- Instale a correção:
sudo dnf install ozone-1.4.0-fix-202507001-0.el9.noarch.rpm
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.
- 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.
- Descarregue o RPM do plugin utilizando
wget
oucurl
:
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
Substitua UTILIZADOR
e PALAVRA-PASSE
pelas suas credenciais de acesso ao repositório público de pacotes 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 tenham o componente Ozone Manager instalado.
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.
- Descarregue a correção utilizando os comandos
wget
oucurl
:
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.el8.noarch.rpm
Substitua UTILIZADOR
e PALAVRA-PASSE
pelas suas credenciais de acesso ao repositório público de pacotes da Tecnisys.
- Instale a correção:
sudo dnf install ozone-1.4.0-fix-202507001-0.el8.noarch.rpm
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.
- 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.
- Descarregue o RPM do plugin utilizando
wget
oucurl
:
wget --user UTILIZADOR --password PALAVRA-PASSE 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 UTILIZADOR
e PALAVRA-PASSE
pelas suas credenciais de acesso ao repositório público de pacotes 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 tenham o componente Ozone Manager instalado.