HDFS Java API配置使用者(遠端使用者)
阿新 • • 發佈:2018-11-23
2018.10.26
文章目錄
前言
某專案使用HDFS Java API操作HDFS,但在本地機器執行單元測試時發現會出現permission denied的問題,原因是該單元測試是直接操作HDFS叢集,而本地執行單測時預設會使用本地機器的登入使用者去操作HDFS。為了保證單測在不同機器上執行結果一致,就需要在配置HDFS時設定叢集環境中的遠端使用者。
方法
參考Hadoop Java API Doc1,使用UserGroupInformation
建立一個遠端使用者:
UserGroupInformation ugi = UserGroupInformation.createRemoteUser('hdfsUser');
try {
ugi.doAs(new PrivilegedExceptionAction() {
public Void run() throws Exception {
try {
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "http://remoteServerIP");
conf.set("hadoop.job.ugi", "hdfsUser");
FileSystem fs = FileSystem.get(conf);
// ...
} catch (IOException e) {
e.printStackTrace();
}
}
});
} catch (Exception e) {
e.printStackTrace();
}