HDFS append File 出现AlreadyBeingCreatedException

在重构项目后,使用HDFS的append File功能时遇到了AlreadyBeingCreatedException,导致操作被禁止。经过调查发现此问题并非代码改动引起,而是HDFS的append功能本身存在一些问题。文章探讨了HDFS的append File功能,并引用了相关设计文档和问题报告。
摘要由CSDN通过智能技术生成

前述

前段时间,公司刚开始往HDFS append File时,用的是hadoop-hdfs-WebHDFS API 进行的,运行了3个多月一切正常,当我对项目进行重构时,上线不到两周就出现了

AlreadyBeingCreatedException,append File一直被Forbidden,老大以为是我改代码的问题,开始问题没有确认,只好背着黑锅,硬着头皮看代码,找错误。后来发现HDFS

的append功能确实存在问题,其他公司也出现过这个问题。这样我总算松了口气,不多说,切入正题。

HDFS Append File 功能

这个功能也是最近才提出来的。设计文档,问题见JIRA Issue  

Further investigation revealed that the following sequence leads to AlreadyBeingCreatedExcepti
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
HdfsFile是一个Java类,用于操作Hadoop分布式文件系统(HDFS)中的文件。它提供了一系列方法,例如创建、删除、读取、写入和移动文件等。以下是一个简单的HdfsFile类示例: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; public class HdfsFile { private final Configuration conf; private final FileSystem fs; public HdfsFile() throws IOException { conf = new Configuration(); fs = FileSystem.get(conf); } public void createFile(String filePath, String content) throws IOException { Path path = new Path(filePath); try (FSDataOutputStream outputStream = fs.create(path)) { outputStream.write(content.getBytes()); outputStream.flush(); } } public String readFile(String filePath) throws IOException { Path path = new Path(filePath); try (FSDataInputStream inputStream = fs.open(path)) { return new String(inputStream.readAllBytes()); } } public boolean deleteFile(String filePath) throws IOException { Path path = new Path(filePath); return fs.delete(path, false); } public void moveFile(String sourcePath, String targetPath) throws IOException { Path source = new Path(sourcePath); Path target = new Path(targetPath); fs.rename(source, target); } } ``` 上述HdfsFile类中的createFile方法用于在HDFS中创建一个新文件,readFile方法用于读取指定路径下的文件,deleteFile方法用于删除指定路径下的文件,moveFile方法用于将指定路径下的文件移动到另一个路径下。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值