llike90 发表于 2013-10-25 10:43:46

向HDFS写入文件时的权限问题

大家好,hadoop的集群我搭建好,hadoop -eclipse-pliugn配置好后, 我在用windows下利用Eclipse来对hadoop集群进行coding的时候,写了个程序:代码如下:public class FileTest {
public static void main(String[] args) throws Exception {
                String localSrc="C:/ftnstat.stat";
String dst="hdfs://10.10.102.40:9000/user/hadoop/fromLocal";
InputStream in=new BufferedInputStream(new FileInputStream(localSrc));
Configuration conf=new Configuration();
FileSystem fs=FileSystem.get(URI.create(dst),conf);
//方法1
OutputStream out=fs.create(new Path(dst),new FsPermission((short) 777
),false, 4096, (short) 3, 512, new Progressable(){
//方法2
//
OutputStream out=fs.create(new Path(dst),new Progressable(){
public void progress()
{
System.out.println(".");
}
});
IOUtils.copyBytes(in, out, 4096,true );
}
}
执行上面的程序时出现的错误是:两个方法同样的错误:Exception in thread "main" org.apache.hadoop.security.AccessControlException: Permission denied: user=Administrator, access=WRITE, inode="hadoop":hadoop:supergroup:rwxr-xr-x
如果我在配置文件中设置dfs.permission属性为false的时候可以不考虑验证,但是这样子我认为每个客户端都可以操作HDFS的文件不安全,所以就不打算设置这个属性为false,我想在程序中添加权限的验证,方法1中在fs.create方法中使用FsPermission来改变权限,但是使用777最高权限的时候,仍然提示上述错误,此外,我把new FsPermission((short) 777)改为new FsPermission("-rw-rw-rw-")的时候提示的错误是:Exception in thread "main" java.lang.IllegalArgumentException: -rw-rw-rw-
因为要用调用API让web客户端使用HDFS,该如何解决这个权限的,希望高手帮忙解答下!3Q..

poptang4 发表于 2013-10-25 10:43:46

文件的属主是Administrator,程序中使用Administrator用户链接hdfs应该可以吧:
conf。set("hadoop.job.ugi","Administrator")
页: [1]
查看完整版本: 向HDFS写入文件时的权限问题