hadoop:包含分布式檔案系統和分布式計算的乙個框架。 hdfs,mapreduce
hadoop專案模組包括4部分:
hadoop common --工具類
hadoop distributed system(hdfs) --分布式檔案系統
hadoop yarn --分布式資源管理
hadoop mapreduce --分布式計算框架
儲存模型:位元組
檔案線性切割成塊block 偏移量offset:塊的第乙個位元組面向原檔案的下標,eg:第乙個塊的偏移量是0
架構模型:主從
檔案資料分為 元資料metadata 和 檔案資料
(主)namenode位元組儲存檔案元資料:單節點 posix
生成目錄樹,不同於ls
(從)datanode位元組儲存檔案block資料:多節點
客戶端hdfsclient先找主再找從
nn資料元資料
基於記憶體儲存 快 不會和磁碟發生交換,但要持久化
namenode的metadate資訊在啟動後會載入到記憶體
metadata儲存到磁碟檔名為「fsimage」
edits記錄對metadata的操作日誌。。。redis
持久化的2種方式:快照 fsimage–需要大量io 寫日誌檔案 edits log-只記錄使用者操作
注意:都不儲存位置資訊,以免客戶端找到主,從沒有啟動,進而沒有檔案陷入等待
namenode主要功能:
接受客戶端的讀寫服務
收集datanode匯報的block列表資訊
–namenode儲存metadata資訊包括
•檔案owership和permissions •檔案大小,時間
block塊 不可調整大小,不支援修改檔案
block列表:block偏移量(穩定值) 不含位置資訊
dn本地磁碟目錄儲存資料(block),檔案形式
dn還有個block塊(md5)儲存元資料資訊,使用者取出資料時外界演算法對比md5以此鑑別資料完整性
block每副本位置由datanode上報 副本 同等級 含義類轉殖
副本放置策略/機架策略:
第乙個副本和第二個副本不在同乙個機架上,第三個副本放置在和第二個副本相同機架節點
啟動dn時會向nn匯報block資訊
dn向nn傳送心跳保持與其聯絡3s/次 10min lost 此時需要copy其上的block到其他dn
安全模式
snn不是nn的備份(但可以做備份),它的主要工作是幫助nn合併edits log,減少nn啟動時間。
snn執行合併時機
•根據配置檔案設定的時間間隔fs.checkpoint.period 預設3600秒
•根據配置檔案設定edits log大小 fs.checkpoint.size 規定edits檔案的最大值預設是64mb
hdfs優點
–高容錯性
•資料自動儲存多個副本 • 副本丟失後,自動恢復
–適合批處理
•移動計算而非資料 •資料位置暴露給計算框架(block偏移量)
–適合大資料處理
•gb 、tb 、甚至pb 級資料 •百萬規模以上的檔案數 •10k+ 節點
–可構建在廉價機器上
•通過多副本提高可靠性 •提供了容錯和恢復 機制
hdfs缺點
–低延遲資料訪問
•比如毫秒級 •低延遲與高吞吐率
–小檔案訪問
•占用namenode 大量記憶體 •尋道時間超過讀取時間
–併發寫入、檔案隨機修改
寫流程
注意: 將大檔案分成小包並(管道/同時)分給每個dn上的塊
由心跳匯報情況給nn,若dn壞1,2個則nn自動發布命令採用新的dn寫入
讀流程注意:
距離優先(離客戶端近的先讀取,在本地的讀本地)nn會返回給客戶端距離列表,近的先讀,讀完客戶端進行儲存,再讀下乙個dn
讀取時可以讀取任意塊的能力,可以在某塊上進行計算資料,因此hdfs很好的支撐了計算層的本地化讀取
使用shell命令執行hadoop自帶的wordcount
首先切換到/data目錄下,使用vim編輯乙個data.txt檔案,內容為(hello world hello hadoop hello ipieuvre)
cd /data
vim data.txt
在hdfs的根下建立in目錄,並將/data下的data.txt檔案上傳到hdfs中的in目錄
hdfs讀寫流程 HDFS 讀寫流程(詳解)
hdfs hadoop distributed file system 是gfs的開源實現。1 優點 因為有多個副本,可以保證資料可靠,容錯性高 計算向資料移動,適用於批處理 適合大資料處理,gb tb pb級資料,百萬以上的檔案,十萬以上的節點 可以構建在廉價機器上,通過多副本提高可靠性 2 缺點...
Hadoop啟蒙 HDFS讀寫流程
hdfs是基於谷歌的 gfs 的開源實現的乙個分布式檔案系統。優點 適合儲存大量資料。可以執行在廉價計算機上。易擴充套件 高容錯。缺點 不支援修改,只能追加。小檔案過多會降低效能,會導致記憶體中的元資料量增多,會對mapreduce計算造成影響。乙個檔案同一時間只能乙個客戶端操作。namenode ...
HDFS的讀寫詳解
1 使用 hdfs 提供的客戶端 client,向遠端的 namenode 發起 rpc 請求 2 namenode 會檢查要建立的檔案是否已經存在,建立者是否有許可權進行操作,成功則會 為檔案建立乙個記錄,否則會讓客戶端丟擲異常 3 當客戶端開始寫入檔案的時候,客戶端會將檔案切分成多個 packe...