導航:首頁 > 文件類型 > hdfs下載文件夾到linux

hdfs下載文件夾到linux

發布時間:2024-09-16 12:32:10

『壹』 linux下常用的分布式文件系統有哪些

常見的分布式文件系統有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各自適用於不同的領域。它們都不是系統級的分布式文件系統,而是應用級的分布式文件存儲服務。
GFS(Google File System)
--------------------------------------
Google公司為了滿足本公司需求而開發的基於Linux的專有分布式文件系統。。盡管Google公布了該系統的一些技術細節,但Google並沒有將該系統的軟體部分作為開源軟體發布。
下面分布式文件系統都是類 GFS的產品。

HDFS
--------------------------------------
Hadoop 實現了一個分布式文件系統(Hadoop Distributed File System),簡稱HDFS。 Hadoop是Apache Lucene創始人Doug Cutting開發的使用廣泛的文本搜索庫。它起源於Apache Nutch,後者是一個開源的網路搜索引擎,本身也是Luene項目的一部分。Aapche Hadoop架構是MapRece演算法的一種開源應用,是Google開創其帝國的重要基石。

Ceph
---------------------------------------
是加州大學聖克魯茲分校的Sage weil攻讀博士時開發的分布式文件系統。並使用Ceph完成了他的論文。
說 ceph 性能最高,C++編寫的代碼,支持Fuse,並且沒有單點故障依賴, 於是下載安裝, 由於 ceph 使用 btrfs 文件系統, 而btrfs 文件系統需要 Linux 2.6.34 以上的內核才支持。
可是ceph太不成熟了,它基於的btrfs本身就不成熟,它的官方網站上也明確指出不要把ceph用在生產環境中。

Lustre
---------------------------------------
Lustre是一個大規模的、安全可靠的,具備高可用性的集群文件系統,它是由SUN公司開發和維護的。
該項目主要的目的就是開發下一代的集群文件系統,可以支持超過10000個節點,數以PB的數據量存儲系統。
目前Lustre已經運用在一些領域,例如HP SFS產品等。

『貳』 Linux裡面hdfs作用是什麼

Hadoop分布式文件系統(HDFS)是指被設計成適合運行在通用硬體(commodity hardware)上的分布式文件系統(Distributed File System)。它和現有的分布式文件系統有很多共同點。但同時,它和其他的分布式文件系統的區別也是很明顯的。HDFS是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,非常適合大規模數據集上的應用。HDFS放寬了一部分POSIX約束,來實現流式讀取文件系統數據的目的。HDFS在最開始是作為Apache Nutch搜索引擎項目的基礎架構而開發的。HDFS是Apache Hadoop Core項目的一部分。
HDFS有著高容錯性(fault-tolerant)的特點,並且設計用來部署在低廉的(low-cost)硬體上。而且它提供高吞吐量(high throughput)來訪問應用程序的數據,適合那些有著超大數據集(large data set)的應用程序。HDFS放寬了(relax)POSIX的要求(requirements)這樣可以實現流的形式訪問(streaming access)文件系統中的數據。

『叄』 Linux的hadoop運行hadoop的時候出現錯誤:找不到或者無法載入主類 org.apache.hadoop.fs.FsShell

Linux的hadoop運行hadoop的時候出現錯誤:找不到或者無法載入主類 org.apache.hadoop.fs.FsShell是設置錯誤造成的,解決方法為:

1、打開Vmware虛擬機,打開三個虛擬機。

『肆』 如何將hdfs上的文件存儲到db2

HDFS是一種文件系統,存儲著Hadoop應用將要處理的數據,類似於普通的Unix和linux文件系統,不同的是他是實現了google的GFS文件系統的思想,是適用於大規模分布式數據處理相關應用的、可擴展的分布式文件系統。它有以下優點:
1、在分布式存儲中,經常會出現節點失效的情況,HDFS可以持續監視,錯誤檢查,容錯處理,自動恢復;
2、分布式存儲的文件都是非常巨大的,HDFS重新規定了每次I/O的塊的大小;
3、對於搜索引擎的業務,大部分都只會在文件尾添加新數據,很少修改已有數據。HDFS做了優化;
4、與應用一起設計的文件系統API對整個系統的彈性和適用性有很大好處;
5、有效的支持多個客戶端並行添加同一個文件。
雖然HDFS實現了這么多的功能,但是因為它已經實現為一個開源框架,所以對於程序開發者來說,並不需要了解其底層的文件操作,我們可以通過其提供的一套與linux文件命令類似的命令行工具來進行文件操作。

基本文件命令:
格式為:hadoop fs -cmd <args>
cmd的命名通常與unix對應的命令名相同。例如,文件列表命令: hadoop fs -ls
1、添加目錄和文件
HDFS有一個默認的工作目錄 /user/$USER,其中$USER是你的登錄用戶名。不過目錄不會自動建立,我們現在用mkdir建立它,我使用的是chen作為用戶名。
hadoop fs -mkdir /user/chen
(hadoop的mkdir命令會自動創建父目錄,類似於帶-p的unix命令)
我們現在放本地文件系統的一個文件進去。
hadoop fs -put example.txt .
最後一個參數是句點,相當於放入了默認的工作目錄,等價於 hadoop fs -put example.txt /user/chen
當你把文件放入HDFS上後,你就可以運行Hadoop程序來處理它。

2、檢索文件
get命令與put命令相反,它從HDFS復制文件回到本地文件系統。
hadoop fs -get example.txt .
復制到本地的當前工作目錄中。
另一種是顯示數據,用cat
hadoop fs -cat example.txt

3、刪除文件
rm命令
hadoop fs -rm example.txt
也可以用來刪除空目錄

編程讀寫HDFS
利用HDFS給我們提供的API,我們同樣可以訪問它。
在Hadoop中用作文件操作的主類位於org.apache.hadoop.fs軟體包中。包括常見的open、read、write、close。Hadoop文件的API起點是FileSystem類,這是一個與文件系統交互的抽象類,我們通過調用factory的方法FileSystem.get(Configuration conf)來取得所需的FileSystem實例,如下我們可以獲得與HDFS介面的FileSystem對象:
Configuration conf = new Configuration();
FileSystem hdfs = FileSystem.get(conf);//獲得HDFS的FileSystem對象
如果我們要實現HDFS與本地文件系統的交互,我們還需要獲取本地文件系統的FileSystem對象
FileSystem local = FileSystem.getLocal(conf);//獲得本地文件系統的FileSystem對象
以下代碼講解了一個例子,我們開發一個PutMerge程序,用於合並本地文件後放入HDFS,因為大文件HDFS處理起來比較容易,所以這個程序經常會在以後的開發中用到
[java] view plain
import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class PutMerge {

public static void main(String[] args) throws IOException {
[java] view plain
Configuration conf = new Configuration();
FileSystem hdfs =FileSystem.get(conf); //獲得HDFS文件系統的對象
FileSystem local = FileSystem.getLocal(conf);//獲得本地文件系統的對象
[java] view plain
Path inputDir = new Path(args[0]);//設定輸入目錄
Path hdfsFile = new Path(args[1]);//設定輸出目錄

try{
FileStatus[] inputFiles = local.listStatus(inputDir);//FileStatus的listStatus()方法獲得一個目錄中的文件列表
FSDataOutputStream out = hdfs.create(hdfsFile);//生成HDFS輸出流

for(int i = 0; i < inputFiles.length; i ++){
System.out.println(inputFiles[i].getPath().getName());
[java] view plain
FSDataInputStream in = local.open(inputFiles[i].getPath());//打開本地輸入流
byte[] buffer = new byte[256];
int bytesRead = 0;
while((bytesRead = in.read(buffer))>0){
out.write(buffer,0,bytesRead);//通過一個循環來寫入
}
in.close();
}
out.close();

}catch (IOException e) {
e.printStackTrace();
}
}

『伍』 HDFS操作命令

HDFS命令基本格式:hadoop fs -cmd < args >

表格:

注意:以上表格中路徑包括hdfs中的路徑和linux中的路徑。對於容易產生歧義的地方,會特別指出「linux路徑」或者「hdfs路徑」。如果沒有明確指出,意味著是hdfs路徑。

HDFS有一個默認的工作目錄/user/$USER,其中$USER是用戶的登錄用戶名。不過目錄不會自動建立,需要mkdir建立它
命令格式:hadoop fs -mkdir

注意:支持級聯創建新目錄,Hadoop的mkdir命令會自動創建父目錄,類似於帶-p的linux命令

put命令從本地文件系統中 復制單個或多個 源路徑到目標文件系統,也支持從標准輸入設備中讀取輸飢孫斗入並寫入目標文件系統。分為本地上傳和上傳到HDFS中。
命令格式:hadoop fs -put filename

最後一個參數是句點,相當於放入了默認的工作目錄,等價於 hadoop fs -put example.txt /user/chen

上傳文件時,文件首先復制到DataNode上,只有所有的DataNode都成功接收完數據,文件上傳才是成功的凱物。
命令格式:hadoop dfs put filename newfilename

從本地文件系統中復制單個或多個源路徑到目標文件系統。也支持從 標准輸入 中讀取輸入寫入目標文件系統。

採用-ls命令列出HDFS上的文件。在HDFS中未帶參數的-ls命令沒有返回任何值,它默認返回HDFS的home目錄下
的內容。在HDFS中,沒有當前工作目錄這樣一個概念,也沒有cmd這樣的命令。
命令格式:user@NameNode:hadoop$ bin/hadoop dfs -ls
如:

通過「-ls 文件夾名」 命令瀏覽HDFS下文件夾中的文件
命令格式:hadoop dfs -ls 文件夾名

通過該命令可以查看in文件夾中的所有文檔文件

通過「-cat 文件名」命令查看HDFS下文件夾中某個文件的內容
命令格式:hadoop$ bin/hadoop dfs -cat 文件名

通過這個命令可以查看in文件夾中所有文件的內容

通過「-get 文件按1 文件2」命令將HDFS中某目錄下的文件復制到本地系統的某文件中,並對該文件重新命名。
命令格式:hadoop dfs -get 文件名 新文件名

-get 命令與-put命令一樣,既可以操作目錄,也可以操作文件

通過「-rmr 文件」命令刪除HDFS下的文件
命令格式:hadoop$ bin/hadoop dfs -rmr 文件

-rmr 刪除文檔命令相當於delete的遞歸版本

通過-format命令實現HDFS格式化
命爛磨令格式:user@NameNode:hadoop$ bin/hadoop NameNode -format

通過運行start-dfs.sh,就可以啟動HDFS了
命令格式:user@NameNode:hadoop$ bin/ start-dfs.sh

當需要退出HDFS時,通過stop-dfs.sh 就可以關閉HDFS
命令格式:user@NameNode:hadoop$ bin/ stop-dfs.sh

HDFS的命令遠不止這些,對於其他操作,可以通過-help commandName 命令列出清單。下面列舉一些命令進行說明。

(1)chgrp改變文件所屬的組命令
chgrp命令的用途是:更改文件或目錄的組所有權。
語法格式:hadoop fs -charg [-R] GROUP URL .....
使用-R將使改變在目錄結構下遞歸進行。命令的使用者必須是文件的所有者或者超級用戶。

(2)chmod改變文件的許可權
chmod用於改變文件或目錄的訪問許可權,這個Linux系統管理員最常用的命令之一。
使用方法:hadoop fs -chmod [-R] ...
使用-R將使改變在目錄結構下遞歸進行。命令的使用者必須是文件的所有者或者是超級用戶

(3)chown改變文件的擁有者
chown命令改變文件的擁有者。
使用方法:hadoop fs -chown [-R]....
使用-R將使改變在目錄結構下遞歸進行。命令的使用者必須是超級用戶。

(4)FromLocal命令
除了限定 源路徑 是只能是一個 本地文件 外,其他方面和put命令相似。
使用方法:hadoop fs -FromLocal <localsrc> URI

(5)ToLocal命令
除了限定 目標路徑 是一個 本地文件 外,其他方面和get命令類似。
使用方法:hadoop fs -ToLocal {-ignorecrc} {-crc} URI <localdst>

(6)cp命令
cp命令是將文件從源路徑復制到目標路徑。這個命令允許有多個源路徑,此時目標路徑必須是一個目錄。
使用方法:hadoop fs -cp URI [URI....] <dest>

返回值:成功返回0 ,失敗返回-1

(7)命令
命令顯示目錄中 所有文件的大小 ,或者當只指定一個文件時,顯示此文件的大小
使用方法:hadoop fs - URI [URI........]

返回值
成功返回0,失敗返回-1

(8)s命令
s是顯示 文件大小 的命令。
使用方法:hadoop fs -s <args>

(9)expunge命令
expunge是清空回收站的命令
使用方法:hadoop fs -expunge

(10)get命令
get是復制文件到本地文件系統的命令
使用方法:hadoop fs -get [-ignorecrc] [-crc] <localdst>
可用-ignorecrc選項復制CRC校驗失敗的文件:使用-CRC選項復制文件以及CRC信息。

返回值
成功返回0,失敗返回-1

(11)getmerge命令
getmerge命令用於接受一個源目錄和一個目標文件作為輸入,並且將源目錄中所有的文件合並成本地目標文件。
使用方法:hadoop fs -getmerge <src> <localdst> [addnl]
參數說明:addl是可選的,用於指定在每個文件結尾添加一個換行符;

假設在你的hdfs集群上有一個/user/hadoop/output目錄
裡面有作業執行的結果(多個文件組成)part-000000,part-000001,part-000002

然後就可以在本地使用vi local_file查看內容了

(12)ls命令
ls命令查看當前目錄下的信息
使用方法:hadoop fs -ls <args>
如果是 文件 ,則按照如下格式返迴文件信息:
文件名 <副本數>文件大小 修改日期 修改時間 許可權 用戶ID 組ID

如果是 目錄 ,則返回它直接子文件的一個列表,就像在UNIX中一樣。目錄返回i額表的信息如下:
目錄名<dir>修改日期 修改時間 許可權 用戶ID 組ID

返回值
成功返回0,失敗返回-1

(13)lsr命令
lsr命令是-ls命令的遞歸版,類似於UNIX中的ls-r。
使用方法:hadoop fs -lsr <args>

(14)movefromLocal命令
復制一份本地文件到hdfs,當成功後,刪除本地文件
使用方法:dfs -moveFromLocal <src> <dst>

(14.5)moveToLocal命令
類似於-get,但是當復制完成後,會刪除hdfs上的文件
使用方法:moveToLocal <src> <localDest>

(15)mv命令
將文件從源路徑移動到目標路徑。這個命令允許有多個源路徑,此時目標路徑必須是一個目錄
使用方法:hadoop fs -mv URI [URI.....] <dest>
備註:不允許在不同的文件系統間移動文件。

返回值
成功返回0,失敗返回-1

(16)put 命令
put命令從本地文件系統中復制單個或多個源路徑到目標文件系統,也支持從標准輸入中讀取輸入寫入目標文件系統
使用方法:hadoop fs -put <localsrc> .... <dst>

(17)rm命令
rm命令刪除指定的文件,只刪除非空目錄和文件。
使用方法:hadoop fs -rm URI [URI......]
請參考rmr命令了解遞歸刪除。

(18)rmr命令
rmr命令是delete命令的遞歸版本
使用方法:hadoop fs -rmr URI [URI.......]

返回值
成功返回0,失敗返回-1

(19)setrep命令
setrep命令可以改變一個文件的副本系數。
使用方法:hadoop fs -setrep [-R] <path>
參數說明:-R 選項用於遞歸改變目錄下所有文件的副本系數

返回值
成功返回0,失敗返回-1

(20)stat命令
stat命令用於返回指定路徑的統計信息
使用方法:hadoop fs -stat URI [URI......]

返回值
成功返回0,失敗返回-1

(21)tail命令
tail命令將文件尾部1KB的內容輸出到stdout。支持-f選項,行為和UNIX中一致
使用方法:hadoop fs -tail [-f] URI

返回值
成功返回0,失敗返回-1

(22)test命令
test命令是檢查命令,可以檢查文件是否存在、文件的大小等。
使用方法:hadoop fs -test -[ezd] URI

(23)text命令
text命令用於將源文件輸出問文本格式
使用方法:hadoop fs -text <src>
允許的格式是zip和TextRecordInputStream。

(24)touchz 命令
touchz命令用於創建一個0位元組的空文件。
使用方法: hadoop fs -touchz URI [URI....]

返回值
成功返回0,失敗返回-1

閱讀全文

與hdfs下載文件夾到linux相關的資料

熱點內容
口袋腕力升級 瀏覽:436
word刻錄到光碟刻錄大師 瀏覽:124
更改壓縮文件後卡死是什麼原因 瀏覽:201
電腦上如何發qq紅包 瀏覽:230
如何刪除word的空白頁 瀏覽:822
創建swap文件 瀏覽:468
數控銑床編程在哪裡編寫 瀏覽:544
iphone文藝軟體 瀏覽:938
紀元1404人口升級 瀏覽:527
公司網路如何設置自己路由器 瀏覽:649
引用extjs 瀏覽:463
linux默認顯示隱藏文件 瀏覽:402
板繪水彩上色教程 瀏覽:634
itunes升級固件在哪個文件夾 瀏覽:210
win10桌面壁紙固定 瀏覽:993
手機怎麼改我word文件名 瀏覽:408
linux如何分屏 瀏覽:248
ps4解壓出多個pkg文件 瀏覽:247
哪些學校開設基因編程專業 瀏覽:542
亂斗西遊升級最快的速度 瀏覽:996

友情鏈接