CDH开启kerberos后,HDFS连接的Java——API参数配置
2017-01-07 18:27
1031 查看
大数据平台的安全认证Kerberos是一个比较麻烦的东西,但往往为了平台的安全需要开启,开启后使用JavaAPI操作HDFS,需要进行用户登陆认证。
1. 首先需要开启CDH的kerberos,开启Kerberos可以参考_CDH配置kerberos_。
2.开启后,下载 krb5.conf、hdfs-site.xml(hdfs的配置文件)和认证用户的.keytab文件
3.下面贴出来测试使用的代码
1. 首先需要开启CDH的kerberos,开启Kerberos可以参考_CDH配置kerberos_。
2.开启后,下载 krb5.conf、hdfs-site.xml(hdfs的配置文件)和认证用户的.keytab文件
3.下面贴出来测试使用的代码
import org.apache.commons.io.filefilter.FileFileFilter; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.LocatedFileStatus; import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.RemoteIterator; import org.apache.hadoop.hdfs.DistributedFileSystem; import org.apache.hadoop.hdfs.HdfsConfiguration; import org.apache.hadoop.hdfs.protocol.DatanodeInfo; import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.security.SecurityUtil; import org.apache.hadoop.security.UserGroupInformation; import org.apache.log4j.Logger; /** * @Description: HDFS的操作类 * @author: WH * @date: 2016-8-8 下午7:13:11 */ public class HdfsService { // 日志 private static Logger log =Logger.getLogger(HdfsService.class); private static Configuration conf = null; public String defaultAddress = "webhdfs://10.134.161.108:50070/";//设置hdfs的连接方式为webhdfs,通过HTTP访问hdfs private HdfsService() { // TODO Auto-generated method stub conf = new Configuration(); System.setProperty("java.security.krb5.conf","C:/Users/user/Desktop/pwmx/krb5.conf");//设置kerberos配置信息 conf.set("fs.defaultFS", defaultAddress);//namenode地址 conf.set("fs.hdfs.impl",org.apache.hadoop.hdfs.DistributedFileSystem.class.getName()); conf.set("fs.file.impl",org.apache.hadoop.fs.LocalFileSystem.class.getName()); conf.set("fs.webhdfs.impl",org.apache.hadoop.hdfs.web.WebHdfsFileSystem.class.getName()); conf.setBoolean("hadoop.security.authentication",true); conf.set("hadoop.security.authentication","kerberos"); conf.set("dfs.namenode.kerberos.principal","hdfs/_HOST@TEST.COM");//hdfs-site.xml中配置信息 conf.set("dfs.datanode.kerberos.principal","hdfs/_HOST@TEST.COM");//hdfs-site.xml中配置信息 UserGroupInformation.setConfiguration(conf); try { UserGroupInformation.loginUserFromKeytab("YJ100001","C:/Users/user/Desktop/pwmx/YJ100001.keytab");//kerberos 认证 UserGroupInformation.getLoginUser(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * @param path * @return * @throws IOException */ public boolean exits(String path) throws Exception { FileSystem fs = FileSystem.get(conf); return fs.exists(new Path(path)); } public static void main(String[] args){ HdfsService hd = new HdfsService(); try { System.out.println(hd.exits("/")); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
相关文章推荐
- java连接HDFS+Kerberos配置参数示例
- CDH开启Kerberos,Java连接impala
- java连接Hbase+Kerberos配置参数示例
- javaAPI 连接 HDFS 高可用配置
- CDH开启kerberos,Java连接Hbase
- java中使用jdbc配置连接串时mysql 5.6与5.7版本“编码”参数有区别!
- Java通过认证kerberos连接HDFS
- 学习日志---本地javaApi连接集群hdfs
- 使用API访问开启kerberos集群下的HDFS
- Java 操作HDFS 简单案例 (Kerberos已开启)
- java 连接 kerberos 认证的 HBase 和 HDFS
- java连接各种数据库的配置文件写法(转)
- spring 配置文件中datasource 从properties文件中获取mysql数据库连接参数遇到的问题
- Java连接各种数据库的配置方法
- oracle 通过配置参数文件profle控制用户连接数
- java 开发+运行环境配置+连接 sql 2008
- Java程序数据库连接,数据源配置,数据库连接池
- Java中,不用配置数据源,通过JDBC-ODBC与Access数据库建立连接
- JDK核心API--Java中配置信息的存取
- JavaWeb:Tomcat下配置数据源连接数据库