hdfs的設計理念:
超大儲存
廉價x86伺服器
流式資料訪問(一次寫入,多次讀取,如果不借助hue,無法直接對hdfs檔案進行修改儲存,需要利用 hdfs dfs –put命令)
hdfs缺點:
實時訪問弱,如要求秒級或者毫秒級資料訪問,考慮使用hbase
不適合儲存大量小檔案,hdfs啟動時,namenode將所有元資料讀至記憶體,一條元資料150b,記憶體小會對namenode有極大壓力,解決方法,hdfs聯邦
hdfs架構:
namenode,secondary namenode,datanode,common storage
namenode和其冷備secondary namenode:
snn引導nn滾動更新edit log,將新的操作寫入editlog.new
snn將nn的時間最近的fsimage和時間最近的editlog複製到snn的檢查點
snn將fsimage+editlog合併成新的fsimage,將新的fsimage寫入磁碟。
snn將新的fsimage返回給nn,nn接受fsimage直接載入和應用。nn將editlog.new 更名為edit log
hdfs三副本,兩冗餘,副本儲存策略選擇,隨機選擇乙個datanode->另一機架節點
->與副本
2同機架的隨機另一節點,策略選定後,會根據集群網路拓撲建立管道。
hdfs讀與寫:
讀:hdfs客戶端請求,nn返回資料塊,主機名,hdfs client再次向datanode請求資料塊
寫:客戶端與三個要寫入資料的datanode的寫入順序與寫完響應,手拉手成環。
hdfs以寫方式開啟text.txt
請求送達至namenode建立對應的元資料,但不與block關聯
資料寫入流,資料自動拆分成資料報。開啟複製管道,管道類似於程序鎖複製,
一批完成繼續複製下一批,完成後結束。
namenode ha:(熱備)
技術點及其實現:
主備同步,備節點共享儲存,qjm週期性獲取編輯日誌(paxos演算法),zookeeper的選主機制
防止腦裂,防止突然都掛死或者突然都具備控制權。共享儲存進行隔離,客戶端隔離
切換上層應用無感知。rpc封裝,失敗連線新的namenode,對應使用者幾乎無感知。
hdfs聯邦:
hdfs federation+viewfs
hdfs federation+viewfs+ha
hdfs元資料遷移,fastcopy,全域性硬鏈結?
hdfs命令列介面:
hdfs dfs –ls /,hdfs dfs –lsr,hdfs dfs –expunge (清空**站,rm的第一步是mv到trash目錄),hdfs dfs –cat ,hdfs dfs –touchz,hdfs dfs –mkdir ,hdfs dfs –put/copyfromlocal,hdfs dfs –get/copytolocal
Hadoop學習之HDFS架構 二
hdfs可以跨越大集群中的機器可靠地儲存非常大的檔案,將檔案儲存為一系列的塊,除了最後乙個塊外,所有的塊的大小都是相同的。當然若檔案大小正好為塊大小的倍數則所有塊的大小相同。為了容錯的目的,乙個檔案的塊會被複製成若干份,塊大小和複製因子是可配置的。應用程式可以指定檔案的副本數量,複製因子可以在檔案建...
Hadoop學習之HDFS讀流程
hdfs讀流程圖 假設需要讀取hdfs根目錄下的bigdata.log檔案,使用如下命令 整個流程如下 1 客戶端會呼叫distributedfilesystem.open方法與namenode進行rcp通訊,namenode會返回該檔案的部分或全部的 block列表 也包含該列表各block的分布...
hadoop學習筆記(HDFS)
hdfs的設計基礎與目標 1 硬體錯誤是常態,因此需要冗餘。2 為大資料而生,流式讀寫,批量讀取而非隨機讀寫。擅長資料分析而不是事務處理。3 大規模資料集。4 一次寫多次讀邏輯設計,即一旦寫入,只能讀,不能修改。5 程式才用 資料就近 原則分配節點執行。hdfs的可靠性 冗餘副本策略 機架策略 心跳...