想在一台搞了小半天,终于调通了,感觉有些地方和网上说的不太一样,mark一下。
目的:在java程序中访问hdfs数据,用作后续处理。
主要在配置,要加载hadoop下面的core-site.xml和hdfs-site.xml这两个文件,还要自己手动添加一个配置文件(因为在客户端访问需要秘钥)。
贴一下比较重要的部分的代码:
configuration.addResource(new FileInputStream("你自己的目录/core-site.xml")); configuration.addResource(new FileInputStream("/你自己的目录/hdfs-site.xml")); configuration.addResource(new FileInputStream("userDefine-site.xml"));
if (configuration.get("hadoop.security.authorization").equals("true")) { System.out.println("aaaa"); UserGroupInformation.setConfiguration(configuration); UserGroupInformation.loginUserFromKeytab(configuration.get("login.kerberos.principal"), configuration.get("login.keytab.file")); }
这个userDefine-site.xml是自己写的,里面主要提供了login.kerberos.principal和login.keytab.file
根据自己的情况定。