1. 程式人生 > >hdfs叢集第一個客戶端程式

hdfs叢集第一個客戶端程式

  • 在叢集實體機中,我們可以直接通過實體機操作hdfs系統,直接使用hdfs命令將實體機中的檔案上傳至叢集檔案系統中,但實際應用中叢集會面向客戶端操作,不再是傳統命令操作,而是通過相應的客戶端程式來執行

測試之前先注意一下幾點:
  • 1.叢集啟動狀況,是否正常
  • 2.測試環境是否搭好(這裡使用的eclipse匯入jar方式,也可以使用pom配置,intellij搭建也可以)
  • 3.測試的檔案在客戶端磁碟路徑中不要帶中文字元(檔案內容可以帶中文)
  • 4.檔案路徑不能寫錯,上傳之後支援不會報錯,但叢集檔案不存在
  • 5.下面URL中用主機名代替的ip,因為做了hosts對映,windows端和叢集中各個節點最好都給hosts檔案中做主機對映(不配置hosts也可以直接寫ip,但相對繁瑣)

測試檔案內容:
在這裡插入圖片描述
測試原始碼如下:

package hdfs0508;


import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class HDFSClient {

	public static void main(String[] args) throws Exception {

		//0.獲取系統配置資訊
		Configuration conf = new Configuration();
		//conf.set("fs.defaultFS", "hdfs://hadoop18020");此方法需要走後門連線叢集,
		//1.獲取HDFS檔案系統,
		FileSystem fileSystem = FileSystem.get(new URI("hdfs://hadoop1:8020") , conf, "york");
		//2.拷貝檔案到叢集,true表示檔案上傳成功後自動刪除原始檔,即刪除客戶端下的原始檔
		fileSystem.copyFromLocalFile(true,new Path("C:/win10Hadoop/xiyou.txt"),new Path("/user/york/input"));
		//3.關閉fileSystem
		fileSystem.close();
	}

}

執行結果:

  • 1.日誌資訊(未加log4j日誌包,出現警告提醒,匯入即可):
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
  • 叢集命令檢視上傳的檔案:
    在這裡插入圖片描述
  • 網頁檢視
    在這裡插入圖片描述
    可支援下載:
    在這裡插入圖片描述