`

java 访问 kerberos hdfs

    博客分类:
  • HDFS
 
阅读更多
先从服务上下载krb5.conf和keytab文件到本地目录中


package java调用kerberostohdfs;

import java.io.IOException;  
import java.net.URI;  
  
import org.apache.hadoop.conf.Configuration;  
import org.apache.hadoop.fs.FileStatus;  
import org.apache.hadoop.fs.FileSystem;  
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.security.UserGroupInformation; 

public class HdfsKerberosDemo {
	static Configuration conf = new Configuration();  
	  
    static {  
    	System.setProperty("java.security.krb5.conf","E:/kerberosconf/krb5.conf");//设置kerberos配置信息
        conf.set("fs.defaultFS", "hdfs://cluster");  
        conf.set("dfs.nameservices", "cluster");  
        conf.set("dfs.ha.namenodes.cluster", "nn1,nn2");  
        conf.set("dfs.namenode.rpc-address.cluster.nn1", "xxx.xxx.xx.xx:8020");  
        conf.set("dfs.namenode.rpc-address.cluster.nn2", "xxx.xxx.xx.xx:8020");  
        conf.set("dfs.client.failover.proxy.provider.cluster","org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"); 
        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");  
        UserGroupInformation.setConfiguration(conf); 
        try {
			UserGroupInformation.loginUserFromKeytab("hq/master@HQGF.COM","E:/kerberosconf/hq.keytab");//kerberos 认证  
	        UserGroupInformation.getLoginUser(); 
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }  
      
    public static void  getDirectoryFromHdfs(String direPath){  
        try {  
            FileSystem fs = FileSystem.get(URI.create(direPath),conf);  
            FileStatus[] filelist = fs.listStatus(new Path(direPath));  
            for (int i = 0; i < filelist.length; i++) {  
                System.out.println("_________" + direPath + "目录下所有文件______________");  
                FileStatus fileStatus = filelist[i];  
                System.out.println("Name:"+fileStatus.getPath().getName());  
                System.out.println("Size:"+fileStatus.getLen());  
                System.out.println("Path:"+fileStatus.getPath());  
            }  
            fs.close();  
        } catch (Exception e){  
  
        }  
    }  
  
    public static void uploadFile(String src,String dst) throws IOException{  
          
        FileSystem fs = FileSystem.get(conf);  
        Path srcPath = new Path(src); //本地上传文件路径  
        Path dstPath = new Path(dst); //hdfs目标路径  
        //调用文件系统的文件复制函数,前面参数是指是否删除原文件,true为删除,默认为false  
        fs.copyFromLocalFile(false, srcPath, dstPath);  
  
        //打印文件路径  
        System.out.println("Upload to "+conf.get("fs.default.name"));  
        System.out.println("------------list files------------"+"\n");  
        FileStatus [] fileStatus = fs.listStatus(dstPath);  
        for (FileStatus file : fileStatus)  
        {  
            System.out.println(file.getPath());  
        }  
        fs.close();  
    }  
      
    public static void main(String[] args) throws IOException {  
  
//        String localFilePath = "D:\\Project\\eclipse\\workspace\\DataCenterChanger\\test\\20180108.txt";  
//        String hdfsFilePath = "/tmp/";  
//        System.out.println(localFilePath);  
//        System.out.println(hdfsFilePath);  
//        uploadFile(localFilePath,hdfsFilePath);  
        getDirectoryFromHdfs("/test/");  
  
    }  
}  

 

pom.xml

        <dependency>
	    <groupId>org.apache.hadoop</groupId>
	    <artifactId>hadoop-common</artifactId>
	    <version>2.7.3</version>
	</dependency>
	<dependency>
	    <groupId>org.apache.hadoop</groupId>
	    <artifactId>hadoop-hdfs</artifactId>
	    <version>2.7.3</version>
	</dependency>
	<dependency>
	    <groupId>org.apache.hadoop</groupId>
	    <artifactId>hadoop-maven-plugins</artifactId>
	    <version>2.7.3</version>
	</dependency>

 

分享到:
评论

相关推荐

    HDFSJavaAPI.tar.gz_HDFS JAVA API_hdfs

    9. **安全性**:在安全模式下,HDFS支持Kerberos认证,Java API提供了进行安全身份验证的机制。 10. **监控和诊断**:`FileSystem`类还提供了一些工具方法,如`exists()`检查文件是否存在,`getBlockSize()`获取...

    webhdfs-java-client-master

    WebHDFS支持Kerberos、SASL等认证机制,以确保只有授权的用户或服务能够访问数据。在Java客户端中,需要正确配置安全设置,如票证缓存、密钥tab等,以进行身份验证。 4. **异步操作**: 除了基本的同步操作,Web...

    java整合spring和hadoop HDFS全部jar

    首先,Java是编写应用程序的通用编程语言,它提供了丰富的库和框架来支持各种任务,包括与Spring框架的集成和对Hadoop HDFS的访问。 Spring是一个开源的应用程序框架,它主要用于简化Java企业级应用的开发。它提供...

    Kerbors协议 java版

    1. **票证授予服务(TGS)**:Kerberos的核心组件,负责颁发会话票证,允许客户端访问服务端。 2. **认证服务器(AS)**:客户端首先与AS交互,获取一个临时的票据-granting ticket(TGT)。 3. **密钥分发中心...

    基于HDFS的视频播放

    2. **流式访问**:HDFS设计时考虑了流式数据访问,适合视频播放这种连续读取大量数据的场景。通过HTTP或HTTPS协议,可以实现对HDFS上文件的读取,使得客户端可以连续接收数据进行播放。 3. **视频点播服务**:为了...

    大数据HDFS二次开发.pdf

    2. **开发环境准备**:在进行Java开发时,需要下载并安装HDFS客户端工具包,获取并解压样例工程,比如hdfs-example。同时,为了实现安全性认证,通常会使用keytab文件,这是一个包含用户信息密钥的文件,用以在...

    web中进行HDFS文件系统操作的demo

    它通过Java的Hadoop SDK与HDFS通信,然后将结果以Web友好的格式返回给用户。下面是一些关键组件和步骤: 1. **Hadoop SDK**:Java的Hadoop SDK包含了一系列的类和方法,如`FileSystem`、`DFSClient`等,用于实现...

    flink写入带kerberos认证的kudu connector

    当Flink需要与Kudu交互时,Kerberos认证机制的引入是为了增强系统的安全性,防止未授权的访问。本文将详细介绍如何在Flink中配置和使用带Kerberos认证的Kudu Connector。 ### 1. Kerberos认证简介 Kerberos 是一种...

    hdfs_video_jar.zip_HDFS video_Hadoop 文件_hdfs_hdfs下MP4视频播放

    - **安全性**:确保应用遵循Hadoop的安全模型,如Kerberos认证,支持安全的HDFS访问。 - **可扩展性**:设计成可扩展的架构,以便处理更多并发用户或更大规模的视频数据。 总的来说,`hdfs_video_jar.zip`提供的...

    hdfs client for ruby (just jruby) hdfs客户端 基于jruby.zip

    HDFS将大型文件分割成块,并将这些数据块分布在多台服务器上,提供了高可用性和高吞吐量的数据访问。 在这个压缩包中,"rhdfs-master"是源代码仓库的主分支,通常包含项目的源代码、构建脚本和其他相关文件。开发者...

    hadoop的HDFS

    7. HDFS API:HDFS提供了Java API供应用程序访问,同时支持其他的编程语言,如Python和C++,通过Hadoop的MapReduce框架或直接调用API进行数据读写。 8. 源码阅读:深入理解HDFS,可以阅读Hadoop源代码,了解其内部...

    HDFS实验手册

    7. **安全性**:如何在HDFS中实现权限控制和安全认证,如HDFS的Kerberos集成。 通过《HDFS实验手册》的学习,你可以逐步掌握HDFS的基本原理和实际操作,为深入理解和使用Hadoop生态系统打下坚实基础。该手册可能...

    flume所需要的hdfs包.zip

    - **配置安全设置**:如果 HDFS 集群启用了安全性(如 Kerberos),那么 Flume 需要相应的安全配置才能正确地认证并访问 HDFS。 - **容错和高可用**:Flume 支持配置多个 Sink 复制数据,以提高数据可靠性。当一个 ...

    apache-doris-0.12.0-incubating-src.tar.gz-hdfs_broker.zip 编译ok

    - **安全性**:HDFS Broker 可能集成了 HDFS 的安全特性,如 Kerberos 认证,确保数据访问的安全性。 - **容错机制**:HDFS Broker 可能具有故障切换和负载均衡功能,保证服务的高可用性。 3. **Java 8 编译**: ...

    HDFS相关问题.zip

    9. **HDFS安全**:HDFS支持Kerberos认证,以确保只有经过验证的用户才能访问文件系统。 10. **HDFS与其他技术的集成**:HDFS常与MapReduce、YARN、Spark等大数据处理框架配合使用,提供数据存储基础。 以上是对...

    hadoop快速集成kerberos认证

    Kerberos是一种网络认证协议,它提供了强大的身份验证服务,确保只有授权的用户和服务可以访问资源。本压缩包文件包含了实现Hadoop与Kerberos快速集成所需的所有必要组件和脚本,使得这个过程变得简单高效。 首先,...

    阿里云 专有云企业版 V3.8.1 文件存储HDFS 技术白皮书 20190910

    * 环境准备:准备HDFS的运行环境,包括安装Java、配置网络等。 * Namenode配置:配置Namenode的运行参数,包括名称空间、目录树等。 * Datanode配置:配置Datanode的运行参数,包括数据存储路径、数据复制因子等。 ...

    一个基于springboot和hdfs的大文件管理系统.zip

    5. **安全性**:实现身份验证和授权机制,例如使用Hadoop的安全特性如Kerberos,以确保只有经过认证的用户可以访问文件系统。 6. **性能优化**:通过批量操作、缓存策略、负载均衡等方式提高系统的性能和响应速度。...

    window客户端连接hadoop hdfs,完美解决障碍

    此外,对于大数据开发人员,图形化工具如Hue、Cloudera Manager等也可以提供友好的Web界面,方便在Windows客户端访问HDFS。这些工具通常集成了文件浏览器、SQL查询等功能,使得数据操作更加直观。 在实际操作中,...

Global site tag (gtag.js) - Google Analytics