一、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...