hdfs文件系统FileSystem.rename异常

原创 2013年12月04日 17:30:51
org.apache.hadoop.ipc.RemoteException: java.io.IOException: java.lang.ClassCastException: org.apache.hadoop.hdfs.server.namenode.INodeFileUnderConstruction cannot be cast to org.apache.hadoop.hdfs.server.namenode.INodeDirectory
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.addChild(FSDirectory.java:1132)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.addChildNoQuotaCheck(FSDirectory.java:1152)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.unprotectedRenameTo(FSDirectory.java:457)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.renameTo(FSDirectory.java:375)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.renameToInternal(FSNamesystem.java:1999)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.renameTo(FSNamesystem.java:1969)
at org.apache.hadoop.hdfs.server.namenode.NameNode.rename(NameNode.java:847)
at sun.reflect.GeneratedMethodAccessor117.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:557)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1439)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1435)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1278)

at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1433)

今天运行 一个FileSystem.rename的时候报错了。后来发现应该是文件的父目录不存在,创建好就ok了。具体原理还有待查看源码

关键代码

/**
	 * 删除目录或者文件到指定文件
	 * @param filePath
	 * @return
	 * @throws IOException
	 */
	public static boolean deleteFileToTrash(FileSystem fs,String filePath) throws IOException{
		
		if(!checkedUserAuthority(filePath)){
			//操作其他的用户下的文件属于非法操作
			return false;
		}
		Path dstPath=getDstPath(filePath);
		Path parentPath=dstPath.getParent();
		String fileName=dstPath.getName();
		//处理逻辑 如果不存在就创建,如果存在并且是非目录
		if (!fs.exists(parentPath)) {
			fs.mkdirs(parentPath);
		}else if (!fs.getFileStatus(parentPath).isDir()) {
			parentPath=handlerRepeatFileDirSameName(0, fs, parentPath);
			fs.mkdirs(parentPath);
		}
		dstPath=new Path(parentPath,fileName);
		if (fs.exists(dstPath)) {
			dstPath=handlerRepeatFile(0,fs,dstPath);
		}
		return fs.rename(new Path(filePath),dstPath);
	}


About hadoop hdfs filesystem rename

Question: I am storing lots of data into hdfs. And I need to move the files from one folder to ...
  • Mrknowledge
  • Mrknowledge
  • 2014年02月13日 17:28
  • 1007

hadoop,hive中的mv(rename)操作

系统环境:hadoop2.7.2+hive1.2.1        大约一年多之前,将hive版本从0.14升级到了1.2.1。之后发现新版本在最后一步写入数据的时候,会比以前慢很多。最后发现是由于...
  • zhoudetiankong
  • zhoudetiankong
  • 2017年02月07日 17:38
  • 1264

HDFS文件常用操作

弄了段时间hadoop的HDFS,用了些常用的HDFS文件操作,记录如下,以作Memo:       /** * @Title: uploadLocalFileToHDFS * @Descrip...
  • vtopqx
  • vtopqx
  • 2013年02月25日 12:06
  • 4144

HDFS异步访问模式

前言 在现有HDFS的RPC调用方式上,采用的基本是blocking call的形式,也就是阻塞式的调用方式.阻塞方式的一个明显的缺点是它的请求过程是同步的,也就是说,客户端必须等待当前请求结果...
  • Androidlushangderen
  • Androidlushangderen
  • 2016年09月07日 19:32
  • 956

JAVA API操作HDFS文件系统

一个通过JAVA API操作HDFS文件系统的例子,本例子使用的是hadoop0.20的版本,在windows的eclipse下运行的时候,需要将core-site.xml和hdfs-site.xml...
  • kkdelta
  • kkdelta
  • 2014年02月25日 13:55
  • 11792

[Hadoop]HDFS文件的相关操作(上传、新建、删除和重命名)

package com.hadooplearn.test; import java.io.FileOutputStream; import java.io.IOException; import o...
  • rongyongfeikai2
  • rongyongfeikai2
  • 2015年04月14日 22:39
  • 5311

Hadoop——重命名文件

import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.f...
  • QQ331948781
  • QQ331948781
  • 2015年04月06日 10:45
  • 1778

分布式文件系统架构GFS、HDFS、TFS、Haystack

分布式文件系统架构GFS、HDFS、TFS、Haystack 分布式文件系统很多,包括GFS,HDFS,淘宝开源的TFS,Tencent用于相册存储的TFS (Tencent...
  • yujin753
  • yujin753
  • 2015年01月28日 20:12
  • 4467

后端分布式系列:分布式存储-HDFS 异常处理与恢复

在前面的文章 《HDFS DataNode 设计实现解析》中我们对文件操作进行了描述,但并未展开讲述其中涉及的异常错误处理与恢复机制。本文将深入探讨 HDFS 文件操作涉及的错误处理与恢复过程。读异常...
  • mindfloating
  • mindfloating
  • 2015年09月02日 10:26
  • 3108

HDFS文件系统的优缺点

1)处理超大文件   这里的超大文件通常是指百MB、设置数百TB大小的文件。目前在实际应用中,HDFS已经能用来存储管理PB级的数据了。 2)流式的访问数据   HDFS的设计建立在更多地响应"...
  • u010159842
  • u010159842
  • 2015年08月19日 23:06
  • 1143
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdfs文件系统FileSystem.rename异常
举报原因:
原因补充:

(最多只允许输入30个字)