Hadoop之hdfs1 x分布式儲存系統學習

2021-08-28 02:28:22 字數 3056 閱讀 7118

一、hadoop創始人介紹

doug cutting,就職yahaoo期間開發了hadoop專案,目前就職於cloudera公司從事架構工作。hadoop是其兒子的玩具大象,doug cutting還編寫了其**命名的lucene 。

二、hadoop簡介

1、分布式儲存系統hdfs(儲存)

2、分布式計算框架mapreduce(離線計算,spark記憶體計算,storm流式計算)

三、hdfs介紹

分布式儲存系統,提供了高可靠性、高擴充套件性、高吞吐率的資料儲存服務。

優點:高容錯性:

1、資料自動儲存多個副本

2、副本丟失後,自動儲存恢復(每個block副本都有相同的id,副本不能在同一太機器上。)

適合批處理:

1、移動計算而非資料

2、資料位置暴露給計算框架如spark,mapreduce

適合大資料處理:

1、可以說hdfs儲存記憶體沒有上限,可以百萬規模以上的檔案數量,10k+節點。

可構建廉價機器上:

1、通過多副本提高可靠性。

2、提供了容錯和恢復機制

缺點:小檔案訪問:

1、占用namenode大量記憶體。

2、尋到的時間超過讀取時間

併發寫入、檔案隨機修改:

四、hdfs架構圖

namenode:主節點

secondarynode:輔助節點

datanode:資料節點。

五、hdfs之datanode

啟動dn時會向nn匯報block位置資訊。

通過向nn傳送心跳與其保持聯絡3秒一次,如果超過10分鐘沒有心跳,nn則認為dn已經lost,並copy其上的block到其他dn(去副本copy,如果沒有其他dn並且小於副本設定數量則報錯)

hdfs資料儲存單元格(block)。

檔案被劃分成固定大小的資料塊:

1、預設64m,可配置。2、若檔案大小不到64m,則單獨儲存成乙個block

檔案儲存方式:

1、按照檔案大小切分成若干個block,儲存到不同的節點。

2、預設情況下每個block都有三個副本,可配置。

block大小和副本的數通過client端上傳檔案時設定(不設定系統預設),檔案長傳成功後副本數量可以變更,block的size不能改變。

六、hdfs之namenode

主要功能:接收客戶端的讀寫服務。

namenode儲存metadate資訊(元資料)包括:檔案的讀寫許可權,檔案包含哪些塊,block儲存在哪個datanode(由datanode啟動時上報位置資訊)

namenode的metadate資訊(元資料)在啟動後會載入到記憶體。

metadate儲存到磁碟檔案「fsimage」(每次操作會記錄到記憶體由secondarynode完成更新)

bolock位置資訊不會儲存到fsimage

edits記錄對metadate資訊(元資料)的操作日誌。

七、hdfs之secondarynode

它不是namenode的備份,主要工作是幫助nn合併edits,減少nn啟動時間

snn執行合併時機

1、根據配置檔案設定的時間間隔fs.chenckpoint.period 預設3600秒

2、根據配置檔案設定的edits log大小,fs.chenckpoint.size 規定最大預設值64m

block副本策略

第一副本:放置在上傳的dn

第二副本:放置在另一台機架上

第三副本:放置在第二副本同台機架上

第四副本:隨機

八、hdfs寫檔案流程

1、client上傳檔案通過distributrd filesystemapi請求(檔案資訊,使用者名稱等)到namenode。

2、nn會根據client設定的block大小等(絕大多數適用系統預設)返回給客戶端空閒狀態良好的datanode和block大小。

3、client獲得nn返回的資訊,通過fsdataoutputstreamapi(位元組流)寫入檔案(當寫滿block,寫入到其他block)。

4、寫出完成後關閉io,block匯報nn修改元資料metadate。

副本:跟client無關,到dn寫完後會自動copy到其他副本(複製執行緒執行時,nn檢查執行緒無法檢查)

九、hdfs讀檔案流程

1、client上傳檔案通過distributrd filesystemapi請求(檔名,使用者名稱等)到namenode。

2、nn返回給客戶端元資料metadate,nn會根據心跳檢查副本健康狀態返回良好的block副本位置。

3、client獲得nn返回的資訊,通過fsdataoutputstreamapi(位元組流)讀出檔案(順序讀出)。4、讀出完成後關閉io

十、hdfs檔案許可權

十一、hdfs安全機制

hadoop之HDFS的擴充

最近在vm中進行擴容之後考慮,openstack的容量新增,隨之想起hdfs的容量擴充的問題,從網上查詢資料之後,現總結如下 首先在伺服器上大都使用的linux的系統,實驗上大都採用的是centos開源的專案。在linux中新增硬碟時,需要考慮的是容量,但是隨著硬體資源的擴充套件現在磁碟的容量可鞥會...

研磨Hadoop之HDFS初探

hdfs是乙個分布式檔案系統,通過目錄樹來定位檔案。hdfs的設計適合一次寫入,多次讀取的場景,且不支援檔案的修改。1 優點 1 高容錯性 資料自動儲存多個副本,通過增加副本提高容錯性。某乙個副本丟失,可以自動恢復 2 適合大資料處理 資料規模 可以處理gb tb 甚至pb的資料 檔案規模 處理百萬...

Hadoop程式設計實現之HDFS

hdfs原理圖 下面我們來寫乙個基於hdfs的demo,該demo主要實現的是將hdfs上的乙個檔案內容讀取出來並儲存到另乙個檔案上的功能。1.輔助類 這個類主要是用來獲取hdfs檔案系統連線的 public class hdfsutils param popenuri param puser re...