HDFS 파일 업로드 및 모드 --Kerberos 인증을 --client 다운로드

 

수입 org.apache.hadoop.conf.Configuration;
수입 org.apache.hadoop.fs.FileSystem;
수입 org.apache.hadoop.fs.Path;
수입 org.apache.hadoop.io.IOUtils;
수입 org.apache.hadoop.security.UserGroupInformation;
수입 org.slf4j.Logger;
수입 org.slf4j.LoggerFactory; 

수입 java.io.File에;
수입 java.io.FileOutputStream의;
수입 때 java.io.IOException;
수입 java.io.InputStream를;
수입 java.io.OutputStream에; 

공공  클래스 FileSystemConnection {
     개인  정적문자열 HDFS_URI = "HDFS : //10.46.0.213 : 8020" ;
    개인  정적 문자열 KERBEROS_PRINC = "관리자 @의 TDH" ;
    개인  정적 문자열 KERBEROS_PRINC_KEYTAB_PATH = 
            "D : \\ 리포 \\ codeRepo \\ 자식 \\ 데이터 서비스 \\ 데이터 서비스 - 서비스 IMPL \\ SRC \\ 주요 \\ 자원 \\ admin.keytab" ;
    공용  정적  최종 로거 로거 = LoggerFactory.getLogger (FileSystemConnection. 클래스 ); 

    공공  정적 파일 시스템 getHdfsConnection는 () {
         시도 { 
            구성의 conf = ) (구성; 
            conf.set ("fs.defaultFS" , HDFS_URI); 
            conf.set ( "hadoop.security.authentication", "Kerberos를" ); 
            conf.set ( "hadoop.security.authorization", "진정한" ); 
            conf.set ( "dfs.datanode.address", "0.0.0.0:50010" );
//             conf.set ( "dfs.datanode.ipc.address", "0.0.0.0:50020");
            // 没开커버 로스,下面两行注释 
            Logger.INFO로 ( "Kerberos를 교장 : {}, 키 탭 경로 : {}" , KERBEROS_PRINC, KERBEROS_PRINC_KEYTAB_PATH); 
            UserGroupInformation.setConfiguration (conf의); 
            UserGroupInformation.
            파일 시스템 FS = FileSystem.get (conf의);
            반환FS; 
        } 캐치 (예외 전자) {
             던져  새로운 RuntimeException을을 ( "HDFS 연결 실패를 얻을" , 전자); 
        } 
    } 

    개인  정적  무효 downLoadFile ()이 발생 IOException이 { 
     파일 시스템 DFS getHdfsConnection = (); 문자열 SRC = "HDFS : //10.46.0.213 : / TDT 8020 / tmp를" ; 문자열 이명 령 = "D : \\ TestFs" ; 경로 경로 = 새로운 경로 (SRC); 시도 { 경우 (dfs.exists (경로)) { 파일 파일 = 새로운 파일 (이명 령 + Win32 시스템 + path.getName ()); file.createNewFile (); 에서의 InputStream = dfs.open (경로); 밖으로의 OutputStream = 새로운 FileOutputStream에 (파일); IOUtils.copyBytes (에서 밖으로, conf의); 넣다(); out.close (); } } 캐치 (예외 전자) { e.printStackTrace (); } } }

 

추천

출처www.cnblogs.com/jvStarBlog/p/11416096.html