Hadoop Archives 小資料處理

Zero麒麟發表於2016-07-07

什麼是Hadoop archives?

Hadoop archives是特殊的檔案格式。一個Hadoop archive對應一個檔案系統目錄。 Hadoop archive的副檔名是*.har。Hadoop archive包含後設資料(形式是_index和_masterindx)和資料(part-*)檔案。_index檔案包含了檔案中的檔案的檔名和位置資訊。

如何建立archive?

用法: hadoop archive -archiveName name <src>* <dest>

由-archiveName選項指定你要建立的archive的名字。比如foo.har。archive的名字的副檔名應該是*.har。輸入是檔案系統的路徑名,路徑名的格式和平時的表達方式一樣。建立的archive會儲存到目標目錄下。注意建立archives是一個Map/Reduce job。你應該在map reduce叢集上執行這個命令。下面是一個例子:

hadoop archive -archiveName foo.har /user/hadoop/dir1 /user/hadoop/dir2 /user/zoo/

在上面的例子中, /user/hadoop/dir1 和 /user/hadoop/dir2 會被歸檔到這個檔案系統目錄下 -- /user/zoo/foo.har。當建立archive時,原始檔不會被更改或刪除。

如何檢視archives中的檔案?

archive作為檔案系統層暴露給外界。所以所有的fs shell命令都能在archive上執行,但是要使用不同的URI。 另外,archive是不可改變的。所以重新命名,刪除和建立都會返回錯誤。Hadoop Archives 的URI是

har://scheme-hostname:port/archivepath/fileinarchive

如果沒提供scheme-hostname,它會使用預設的檔案系統。這種情況下URI是這種形式

har:///archivepath/fileinarchive

這是一個archive的例子。archive的輸入是/dir。這個dir目錄包含檔案filea,fileb。 把/dir歸檔到/user/hadoop/foo.bar的命令是

hadoop archive -archiveName foo.har /dir /user/hadoop

獲得建立的archive中的檔案列表,使用命令

hadoop dfs -lsr har:///user/hadoop/foo.har

檢視archive中的filea檔案的命令-

hadoop dfs -cat har:///user/hadoop/foo.har/dir/filea

相關文章