windows 连接Ubuntu 中HDFS的权限错误:Permission denied
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class FSOperation {
/**
* 判断文件或目录是否存在
* @param conf
* @param path
* @return
*/
public static boolean isExists(Configuration conf, String path){
FileSystem fs = null;
boolean result = false;
try {
fs = FileSystem.newInstance(conf);
System.out.println("fs:path"+fs.getUri().getPath());
result = fs.exists(new Path(path));
} catch (Exception e) {
e.printStackTrace();
}
finally {
if(fs !=null)
try {
fs.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
/**
* 创建文件目录
* @param conf
* @param dir
*/
public static void createDir(Configuration conf, String dir){
FileSystem fs = null;
try {
fs = FileSystem.get(conf);
if(!fs.exists(new Path(dir))){
fs.mkdirs(new Path(dir));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(fs!= null)fs.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 创建文件
* @param conf 配置
* @param filePath 文件路径
* @param contents 内容
*/
public static void createFile(Configuration conf , String filePath, String contents){
FileSystem fs = null;
FSDataOutputStream fsDataOutputStream = null;
try {
fs = FileSystem.newInstance(conf);
fsDataOutputStream = fs.create(new Path(filePath));
fsDataOutputStream.write(contents.getBytes());
} catch (Exception e) {
e.printStackTrace();
}
finally {
try {
if(fsDataOutputStream != null)fsDataOutputStream.close();
if(fs != null)fs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
在windows下 Eclipse连接ubtutu下hdfs时,操作会出现permission denied如下上传文件时,出现:
说明是权限的问题。
解决方法(测试环境):
1、在hdfs的配置文件中,将dfs.permissions修改为False
2、执行这样的操作 hadoop fs -chmod 777 /