三 HDFS Hadoop分布式檔案系統

2022-08-03 05:45:07 字數 3202 閱讀 9181

一、hdfs的設計目標

1.1、硬體錯誤是常態而不是異常。hadoop的設計理念之一就是它可以執行在廉價的普通pc機上,因而硬體故障是常態。在硬體故障時,可通過容錯機制保證資料的正確性、完整性,從而保證系統的正常執行。

1.2、大檔案儲存。hdfs儲存的檔案大小一般在gb~tb的級別。

1.3、流式資料訪問。由於hadoop處理的都是大檔案,因此流式資料訪問方式更適合。流式資料訪問是指一次性地讀取一大塊檔案後再做處理,其特點是吞吐率高,延遲高;與之相反的是隨機資料訪問,特點是隨機性地讀取資料,延遲低。

1.4、一次寫入、多次讀取。使用者需要對檔案實行一次寫、多次讀的訪問模式。檔案一旦上傳到hdfs,便不能再做修改,如需修改,需刪除檔案重新上傳。在上傳完資料之後,便在該資料集上進行長時間的資料分析,也避免了資料一致性的問題。

二、hdfs的缺點

2.1、高延遲。

2.2、不適合儲存大量小檔案。

三、hdfs的基本架構圖

3.1、幾個重要概念

(1)namenode。namenode負責管理整個dfs檔案系統的元資料,即,儲存所有的檔案目錄、每個檔案的具體資訊(即:每個檔案被分了多少塊、每塊檔案的大小及存放位置)等。

(2)datanode。datanode負責存放具體資料內容。

(3)其他。block是資料塊,通常以64mb為單位,具有多個冗餘副本。rack表示機櫃,乙個資料塊的多個副本被分散在多個機櫃中,以便機櫃宕機時,可及時復原資料。

3.2、讀資料流程

client在向hdfs讀資料時,首先向namenode發出請求,獲取檔案的每個資料塊的存放位置,然後client再去指定的datanode讀取資料,最後通知namenode關閉檔案。

3.3、寫資料流程

client在向hdfs寫資料時,首先告知namenode建立檔案,namenode經過一系列的檢查,反饋給client乙個datanode列表進行寫資料操作。然後,client再去找特定的datanode進行寫資料,最後關閉檔案。

client在寫入某一塊特定的資料時,要同時備份多份資料塊,假設要備份3份,則寫資料的流程如下:

client只向第乙個datanode寫資料,隨後的備份操作由datanode傳遞下去,這樣做的目的是減小client的讀寫壓力,當備份完最後一塊資料時,由最後一塊資料所在datanode向前乙個datanode傳送ack確認包,此操作一直傳遞到client那裡,這樣,乙份資料塊的備份操作結束。

四、hadoop2.6中的hdfs的常用命令

hdfs官方命令查詢:

4.1、ls——檢視檔案列表

hadoop fs -ls /
列出hdfs檔案系統根目錄下的目錄和檔案。

hadoop fs -ls -r /
列出hdfs檔案系統所有的目錄和檔案。

hadoop fs -ls /input
列出hdfs檔案系統中input目錄中的目錄和檔案。

4.2、put——上傳檔案到hadoop

hdfs dfs -put localfile /input/file1
將本地檔案localfile拷貝到hadoop檔案系統的input目錄下的file1。

hdfs dfs -put localfile1 localfile2 /input
將本地檔案localfile1、localfile2拷貝到hadoop檔案系統的input目錄下。

hdfs dfs -get /input/file localfile
將hfds檔案系統input目錄下的file檔案拷貝到本地localfile檔案中。

4.4、mkdir——建立目錄

hadoop fs -mkdir /input
在hdfs檔案系統的根目錄下建立input資料夾。該方式只能一級一級地建立目錄,父目錄必須存在。

hadoop fs -mkdir -p /dir1/dir2
遞迴建立目錄,如果父目錄不存在就建立該父目錄。

4.5、rm——刪除檔案、資料夾

hdfs dfs -rm /input/file1
刪除檔案。

hdfs dfs -rm -r /input
或: hdfs dfs -rm -r /input
刪除資料夾。

4.6、cp——複製檔案

hdfs dfs -cp /input/file1 /input/file2
重新命名檔案,file1、file2都會存在。

hdfs dfs -cp /input/file1 /another/file2
不同目錄下拷貝檔案。

hdfs dfs -cp /input/file1 /input/file2 /another
拷貝多個檔案到another目錄下。

4.7、mv——移動檔案

hdfs dfs -mv /input/file1 /another/file2
不同目錄下移動檔案。

hdfs dfs -mv /input/file1 /input/file2 /another
移動多個檔案到another目錄下。

4.8、cat——列印檔案內容

hdfs dfs -cat /input/file1
列印/input/file1檔案的內容。

4.9、檢視hdfs系統狀態

hdfs dfsadmin -report
檢視hdfs檔案系統的基本資訊:儲存空間使用情況、datanode節點資訊等。

hdfs Hadoop分布式檔案系統

1 hdfs hadoop分布式檔案系統 hdfs是乙個高度容錯性的系統,適合部署在廉價的機器上。hdfs能提供高吞吐量的資料訪問,非常適合大規模資料集上的應用。hdfs放寬了一部分posix約束,來實現流式讀取檔案系統資料的目的。hdfs在最開始是作為apache nutch搜尋引擎專案的基礎架構...

HDFS hadoop分布式檔案系統模型

檢視hdfs根目錄 hadoop fs ls 在根目錄建立乙個目錄test hadoop fs mkdir test 上傳檔案 hadoop fs put test.txt test 或 hadoop fs copyfromlocal test.txt test 檔案 hadoop fs get t...

分布式 分布式鎖

本質是利用redis的setnx 方法的特性來加鎖,setnx 即key不存在則設定key,否則直接返回false,要求在分布式系統中使用同乙個redis服務,以下提供兩種解決方案 1 直接使用redistemplate 這其實並不能完全保證高併發下的安全問題,因為可能在鎖過期之後該執行緒尚未執行完...