hdfs与java API的问题

时间:2015-03-03 12:14:36

标签: java hadoop

我使用以下代码删除hdfs文件系统上的文件

    conf = new org.apache.hadoop.conf.Configuration();
    // TODO: Change IP
    conf.set("fs.defaultFS", "hdfs://aaa.bbb.com:1234/user/hdfs");
    conf.set("hadoop.job.ugi", "hdfs");
    conf.set("fs.hdfs.impl", 
        org.apache.hadoop.hdfs.DistributedFileSystem.class.getName()
    );
    conf.set("fs.file.impl",
        org.apache.hadoop.fs.LocalFileSystem.class.getName()
    );
fs = FileSystem.get(conf);
fs.delete(new Path("/user/hdfs/file.copy"), true);

我创建了一个名为" xyz "的用户在我的本地机器上,令我惊讶的是,我能够删除hdfs文件系统中的文件( file.copy ),其中所有者名为 xyz 的namenode。这意味着有权访问namenode url的人可以通过创建hdfs或root用户来删除任何文件吗?

我知道Java API有一种使用Kerberos对用户进行身份验证的方法,我相信我们的hadoop系统配置有问题。有人可以帮我正确设置安全性吗?我相信远程用户应该提供一些密钥或密钥文件来验证自己。只是用户名不会做!

PS:我正在使用Cloudera 5.3.1

1 个答案:

答案 0 :(得分:1)

是的,如果您没有在群集上启用Kerberos身份验证,那么您根本就没有身份验证。如果您关心数据,则绝对应该启用Kerberos身份验证。