如果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个都加上,才有效。