2015-03-03 89 views
0

我用下面的代碼刪除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); 

文件與Java API HDFS我創建了一個在我的本地機器被稱爲「XYZ」的用戶,很讓我驚訝,我能夠刪除hdfs文件系統中的文件(file.copy),該文件的所有者爲xyz。這意味着有人可以通過創建hdfs或root用戶來刪除任何文件。

我知道Java API有一種使用Kerberos對用戶進行身份驗證的方法,我相信我們的hadoop系統配置有問題。有人能幫我正確設置安全嗎?我相信遠程用戶應該提供一些密鑰或密鑰文件來驗證自己。只有相同的用戶名不會!

PS:我使用了Cloudera 5.3.1

回答

1

是的,如果你沒有你的羣集上啓用Kerberos身份驗證不那麼你真的沒有認證可言。如果您關心數據,那麼您絕對應該啓用Kerberos身份驗證。