如果hadoop沒有啟Kerberos或者從Kerberos獲取的用戶為null,那么獲取HADOOP_USER_NAME環境變量,并將它的值作為Hadoop執行用戶。如果我們沒有設置HADOOP_USER_NAME環境變量,那么程序將調用whoami來獲取當前用戶,并用groups來獲取用戶所在組。
所以可以設置環境變量:
export HADOOP_USER_NAME=hdfs
或者在程序中設置:
System.setProperty("HADOOP_USER_NAME", "hdfs");
但是,實驗后,發現好像要以上2個都加上,才有效。