1. 程式人生 > >hadoop之hdfs基本原理(二)

hadoop之hdfs基本原理(二)

一 HDFS基本概念

hdfs檔案被分成塊進行儲存,預設64M,塊是檔案儲存處理的邏輯單元

hdfs有兩個節點,NameNode和DataNode

NameNode存放檔案元資料:分別是檔案與資料塊的對映表,資料塊與資料節點的對映表。配置副本策略和處理客戶端請求

DataNode:實際儲存資料、執行資料塊的讀寫並彙報儲存資訊給NameNode;一般預設每個資料塊有三個副本,儲存在兩個機架上面,保證hdfs的高可用

另外還有個Secondary NameNode:輔助NameNode,分擔NameNode工作,定期合併fsimage和fsedits並推送給NameNode,緊急情況下可輔助恢復NameNode;其實就是NameNode的備胎,保證NameNode的高可用性

心跳檢測:每隔多少秒鐘,dataNode會向NameNode報自己的工作狀況,是不是還處於active狀態
hdfs讀取檔案
這裡寫圖片描述
hdfs寫入檔案
這裡寫圖片描述
hdfs和傳統檔案系統有什麼區別:
1.資料冗餘,硬體容錯
2.流式資料訪問,一次寫入,多次讀取,塊沒法修改
3.儲存大檔案,如果是大量的小檔案對NameNode壓力很大,所以不像資料庫那樣適合頻繁的互動式引用;一次寫入,多次讀取,順序讀寫;不支援多使用者併發寫相同檔案

二 hdfs使用

hdfs提供了shell介面,可以直接執行一些類似的linux命令
在hadoop-1.2.1/conf目錄下
建立資料夾
hadoop fs -mkdir input

,建立的資料夾預設在hdfs /user/root 目錄下

檢視一下:hadoop fs -ls /user/root

將一個檔案上傳到hdfs我們剛剛建立的input資料夾中中:

hadoop fs -put  hadoop-env.sh  /input

檢視一下:

hadoop fs -ls  /user/root/input 

下載hdfs檔案到本地:

hadoop fs -get  input/hadoop-env.sh hadoop-env2.sh

檢視一下本地:

ls

檢視檔案系統的所有資訊:

hadoop dfsadmin -report