1 package com.imooc.bigdata.hadoop.hdfs; 2 3 import org.apache.hadoop.conf.Configuration; 4 import org.apache.hadoop.fs.FSDataInputStream; 5 import org.apache.hadoop.fs.FileSystem; 6 import org.apache.hadoop.fs.Path; 7 import org.apache.hadoop.io.IOUtils; 8 import org.junit.After; 9 import org.junit.Before; 10 import org.junit.Test; 11 12 import java.net.URI; 13 14 /** 15 * 使用Java API操作HDFS文件系統 16 * 17 * 因為是放在test下面,所以最好使用單元測試的方式 18 * 在pom中引入的jUnit單元測試的方式 19 * 單元測試有兩個方法:(1)在單元測試之前進行;(2)在單元測試之后進行 20 * 21 * 關鍵點: 22 * 1)創建Configuration 23 * 2)獲取FileSystem 24 * 3)剩下的是HDFS API的操作 25 */ 26 27 public class HDFSApp { 28 29 public static final String HDFS_PATH = "hdfs://hadoop000:8020"; 30 //Configuration、FileSystem是每一個方法使用之前必須構建的 31 Configuration configuration = null; 32 FileSystem fileSystem = null; 33 34 @Before 35 public void setup() throws Exception{ 36 System.out.println("-----setup-----"); 37 38 configuration = new Configuration(); 39 /* 40 *構造一個訪問指定HDFS系統的客戶端對象 41 * 第一個參數:HDFS的URI 42 * 第二個參數:客戶端指定的配置參數 43 * 第三個參數:客戶的用戶名 44 */ 45 fileSystem = FileSystem.get(new URI("hdfs://hadoop000:8020"), configuration, "hadoop"); 46 } 47 48 /* 49 * 查看HDFS文件夾內容 50 */ 51 @Test 52 public void text()throws Exception{ 53 FSDataInputStream in = fileSystem.open(new Path("/cdh_version.properties")); 54 //IOUtils(org.apache.hadoop.io) 55 IOUtils.copyBytes(in, System.out, 1024); 56 } 57 58 @After 59 public void tearDown(){ 60 System.out.println("-----tearDown-----"); 61 62 //置空 63 configuration = null; 64 fileSystem = null; 65 } 66 }