수입 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 (); } } }