hadoop系列三 HDFS操作

2021-09-27 01:34:53 字數 3886 閱讀 4358

0、檢視hdfs中的目錄資訊

hadoop fs -ls /hdfs路徑

1、上傳檔案到hdfs中

hadoop fs -put /本地檔案 /aaa

hadoop fs -copyfromlocal /本地檔案 /hdfs路徑 ## copyfromlocal等價於 put

hadoop fs -movefromlocal /本地檔案 /hdfs路徑 ## 跟copyfromlocal的區別是:從本地移動到hdfs中

3、在hdfs中建立資料夾

hadoop fs -mkdir -p /aaa/***

4、移動hdfs中的檔案(更名)

hadoop fs -mv /hdfs的路徑 /hdfs的另乙個路徑

5、刪除hdfs中的檔案或資料夾

hadoop fs -rm -r /aaa

6、修改檔案的許可權

hadoop fs -chown user:group /aaa

hadoop fs -chmod 700 /aaa

8、顯示文字檔案的內容

hadoop fs -cat /hdfs中的檔案

hadoop fs -tail /hdfs中的檔案

…]

[-cp [-f] [-p | -p[topax]] [-d] … ]

[-createsnapshot ]

[-deletesnapshot ]

[-df [-h] [

…]][-du [-s] [-h] [-x]

…][-expunge]

[-find

… …]

[-get [-f] [-p] [-ignorecrc] [-crc] … ]

[-getfacl [-r]

][-getfattr [-r] [-e en]

][-getmerge [-nl] [-skip-empty-file] ]

[-help [cmd …]]

[-ls [-c] [-d] [-h] [-q] [-r] [-t] [-s] [-r] [-u] [

…]][-mkdir [-p]

…][-movefromlocal … ]

[-movetolocal ]

[-mv … ]

[-put [-f] [-p] [-l] [-d] … ]

[-renamesnapshot ]

[-rm [-f] [-r|-r] [-skiptrash] [-safely] …]

[-rmdir [–ignore-fail-on-non-empty]

…][-setfacl [-r] [

]|[–set ]]

[-setfattr

][-setrep [-r] [-w]

…][-stat [format]

…][-tail [-f] ]

[-test -[defsz]

][-text [-ignorecrc] …]

[-touchz

…][-truncate [-w]

…][-usage [cmd …]]

configuration引數物件的機制: 構造時,會載入jar包中的預設配置 xx-default.xml 再載入

使用者配置xx-site.xml ,覆蓋掉預設引數 構造完成之後,還可以conf.set(「p」,「v」),會再次覆蓋使用者配置檔案中的引數值

建立乙個configuration物件時,其構造方法會預設載入hadoop中的兩個配置檔案,分別是hdfs-site.xml以及core-site.xml,這兩個檔案中會有訪問hdfs所需的引數值,主要是fs.default.name,指定了hdfs的位址,有了這個位址客戶端就可以通過這個位址訪問hdfs了。即可理解為configuration就是hadoop中的配置資訊。通過根據這個類,可以根據這個類的引數設定,更改對hdfs的引數和設定。

//會從專案的classpath中載入core-default.xml hdfs-default.xml,根據這個類

configuration conf = new configuration();

// 指定本客戶端上傳檔案到hdfs時需要儲存的副本數為:2

conf.set("dfs.replication", "2");

// 指定本客戶端上傳檔案到hdfs時切塊的規格大小:64m

conf.set("dfs.blocksize", "64m");

// 構造乙個訪問指定hdfs系統的客戶端物件:

fs = filesystem.get(new uri("hdfs://hdp-01:9000/"), conf, "root");

// 引數1:——hdfs系統的uri,引數2:——客戶端要特別指定的引數,引數3:客戶端的身份(使用者名稱)

//------------------------------------------常用api-----------------------------------------------

// 上傳乙個檔案到hdfs中

fs.copyfromlocalfile(new path("d:/install-pkgs/hbase-1.2.1-bin.tar.gz"), new path("/aaa/"));

fs.copytolocalfile(new path("/hdp20-05.txt"), new path("f:/"));

//在hdfs內部移動檔案\修改名稱

fs.rename(new path("/install.log"), new path("/aaa/in.log"));

//在hdfs中建立資料夾

fs.mkdirs(new path("/xx/yy/zz"));

//在hdfs中刪除檔案或資料夾

fs.delete(new path("/aaa"), true);

//查詢hdfs指定目錄下的檔案資訊

remoteiteratoriter = fs.listfiles(new path("/"), true);

// 只查詢檔案的資訊,不返回資料夾的資訊

while (iter.hasnext())

fs.close();

//查詢hdfs指定目錄下的檔案和資料夾資訊

public void testls2() throws exception

fs.close();

//讀取hdfs中的檔案的內容

fsdatainputstream in = fs.open(new path("/test.txt"));

bufferedreader br = new bufferedreader(new inputstreamreader(in, "utf-8"));

string line = null;

while ((line = br.readline()) != null)

br.close();

in.close();

fs.close();

//往hdfs中的檔案寫內容

Hadoop系列一HDFS簡介

namenode nn namenode的metadata資訊在啟動後會載入到記憶體中,metadata資訊儲存在磁碟檔案fsimage,edits檔案記錄對metadata的操作日誌,block位置資訊只存在記憶體,不儲存到fsimage。secondarynamenode snn 不是nn的備份...

Hadoop操作HDFS命令

hadoop操作hdfs命令如下所示 hadoop fs 檢視hadoop hdfs支援的所有命令 hadoop fs ls 列出目錄及檔案資訊 hadoop fs lsr 迴圈列出目錄 子目錄及檔案資訊 hadoop fs put test.txt user sunlightcs 將本地檔案系統的...

Hadoop操作HDFS命令

hadoop操作hdfs命令如下所示 hadoop fs 檢視hadoop hdfs支援的所有命令 hadoop fs ls 列出目錄及檔案資訊 hadoop fs lsr 迴圈列出目錄 子目錄及檔案資訊 hadoop fs put test.txt user sunlightcs 將本地檔案系統的...