日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

HDFS简介

發布時間:2024/6/21 综合教程 28 生活家
生活随笔 收集整理的這篇文章主要介紹了 HDFS简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

p.p1 { margin: 0; text-align: center; font: 12px Helvetica; color: rgba(69, 69, 69, 1) }
p.p2 { margin: 0 0 2px; text-align: justify; font: 14px Helvetica; color: rgba(69, 69, 69, 1) }
p.p3 { margin: 0; text-align: justify; font: 12px Helvetica; color: rgba(69, 69, 69, 1) }
p.p4 { margin: 0; font: 12px Helvetica; color: rgba(69, 69, 69, 1) }
p.p5 { margin: 0; font: 12px "PingFang SC"; color: rgba(69, 69, 69, 1) }
p.p6 { margin: 0; text-align: justify; font: 12px Helvetica; color: rgba(69, 69, 69, 1); min-height: 14px }
p.p7 { margin: 0 0 0 46px; text-align: justify; font: 12px Helvetica; color: rgba(69, 69, 69, 1); min-height: 14px }
p.p8 { margin: 0; text-align: justify; font: 12px "PingFang SC"; color: rgba(69, 69, 69, 1) }
p.p9 { margin: 0 0 0 46px; text-align: justify; font: 12px "PingFang SC"; color: rgba(69, 69, 69, 1) }
li.li4 { margin: 0; font: 12px Helvetica; color: rgba(69, 69, 69, 1) }
li.li5 { margin: 0; font: 12px "PingFang SC"; color: rgba(69, 69, 69, 1) }
span.s1 { font: 14px "PingFang SC" }
span.s2 { font: 12px "PingFang SC" }
span.s3 { font: 12px Helvetica }
span.Apple-tab-span { white-space: pre }
ul.ul1 { list-style-type: disc }

1.HDFS介紹

HDFS 為了做到可靠性( reliability ) 創建了多份數據塊(data blocks)的復制(replicas) ,并將它們放置在服務器群的計算節點中(compute nodes),MapReduce就可以在它們所在的節點上處理這些數據了。

1.1.HDFS結構

NameNode DataNode

存儲元數據(文件名,文件屬性) 存儲文件內容

元數據保存在內存中(磁盤中也會有一份),工作過程中在內存中讀數據 文件內容保存在磁盤

保存文件,block,datanode之間的映射關系 維護了block id到datanode本地文件的映射關系

1.2 HDFS運行機制

一個名字節點和多個數據節點
數據復制(冗余機制)

存放的位置(機架感知策略)
故障檢測
數據節點

心跳包(檢測是否宕機)
塊報告(安全模式下檢測)
數據完整性檢測(校驗和比較)

名字節點(日志文件,鏡像文件)
空間回收機制

1.3.HDFS優點

高容錯性
數據自動保存多個副本
副本丟失后,自動恢復
適合批處理
移動計算而非數據
數據位置暴露給計算框架
適合大數據處理
GBTB甚至PB級數據
百萬規模以上的文件數量
10k+節點
可構建在廉價機器上
通過多副本提高可靠性
提供了容錯和恢復機制

1.4 HDFS缺點

低延遲數據訪問
比如毫秒級
低延遲與高吞吐率
小文件存取
占用NameNode大量內存
尋道時間超過讀取時間
并發寫入、文件隨即修改
一個文件只能有一個寫者
僅支持append

NameNode存儲的是元數據,元數據的多少取決于文件的多少,元數據是存儲在內存中的。

不適合大量的小文件存儲

國內大部分網盤是用的HDFS

1.5 HDFS架構

HDFS客戶端請求的是NameNode, NameNode負責處理任務的請求,NameNode再將請求轉發給DataNode,請求DataNode實際是HDFS客戶端請求,圖有問題。

DataNode把所有數據都存儲在磁盤上

1.5.1 HDFS數據存儲單元(block

文件被切分成固定大小的數據塊
默認數據塊大小為64mb,可配置
若文件大小不到64mb,則單獨存成一個block
一個文件存儲方式
按大小被切分成若干個block,存儲到不同節點上
默認情況下每個block都有三個副本
block大小和副本數通過client端上傳文件時設置,文件上傳成功后副本數可以變更,Block Size 不可變更

一個塊只可能存一個文件中的數據。只是一個邏輯結構,若不滿64mb的,磁盤上存儲的是文件的實際大小。

三個副本存儲在不同機器上

1.6節點

1.6.1 NameNodeNN

NameNode主要功能:接受客戶端的讀寫服務
NameNode保存metadata(元數據)信息包括
文件owership 和 permissions
文件包含哪些塊
block保存在哪個DataNode上(由DataNode啟動時上報,存在內存中)
NameNode的metadate信息在啟動后會加載到內存
metadata存儲到磁盤文件名為 fsimage
block的位置信息不會保存到 fsimage
edits記錄對metadata的操作日志

整個過程中,metadata記錄的信息,磁盤中有一份,內容中也會有一份。(block位置信息不會保存在磁盤中)

如果啟動后進行了新添加文件的操作,那么這個操作就會記錄到edits日志文件中,并不會馬上修改fsimage文件,后期會進行合并操作。

NameNode工作的數據都在內存上

1.6.2 SecondaryNameNode(SNN)

它不是NN的備份(但可以做備份),它的主要工作是幫助NN合并edits log,減少NN啟動時間
SNN執行合并時機
根據配置文件設置的時間間隔fs.checkpoint.period 默認是3600秒
根據配置文件設置edits log大小 fs.checkpoint.size規定edits文件的最大值,默認是64mb

合并會有大量的IO操作,如果合并操作由NameNode自己做的話,那么計算機將會分配大量的內存空間給NameNode來做合并,會影響用戶的使用,NameNode主要是用來接收用戶的請求操作的,合并由SecondaryNameNode來做的話,可保證NameNode工作的專一性,提供性能。

SecondaryNameNode合并后會生成一個新的fsimage,會將該文件傳送給NameNode,替換原來的fsimage

合并流程:

fsimage: 磁盤中的元數據文件

edits: 日志記錄文件

在將 edits、fsimage拷貝到SecondaryNameNode的同時,NameNode會新建一個edits文件,來記錄用戶的操作,edits文件為上次合并的時候產生的新的edits 文件。

在SecondaryNameNode將edits 和 fsimage合并成一個新的fsimage文件,合并之后,將fsimage推送給NameNode, NameNode將之前的fsimage替換掉

不是熱備,如果NameNode掛掉,那么將會損失edits.new中的文件操作。

1.6.3 DataNode(DN)

存儲數據(block)
啟動DN線程的時候會向NN匯報block信息
通過向NN發送心跳保持與其聯系(3秒一次),如果NN10分鐘沒有收到DN的心跳,則認為其已經lost,并copy其上的block到其它DN

1.6.3.1 Block的副本放置策略

第一個副本:放置在上傳文件的DN

如果是集群外提交,則隨機挑選一臺磁盤不太滿,CPU不太忙的節點

第二個副本:放置在于第一個副本不同的機架的節點上
第三個副本:與第二個副本相同機架的節點。
更多副本:隨機節點。

機架:在節點的配置文件中會標明屬于哪個機架。

1.7 HDFS讀流程

在客戶端調用api請求NameNode,NameNode返回給數據塊的位置信息

客戶端拿到數據塊的位置信息后,通過另一個API并發的去讀各個block,拿到block之后合并為一個文件。(一般是讀小的文件)

1.8 HDFS寫流程

1.客戶端調用 Distributed FileSystem API ,參數包括文件信息,文件的擁有者2.NameNode拿到文件信息后,就可以計算出需要切幾個block,block分別存儲在哪些DataNode上,返回給客戶端

3.客戶端獲取之后,通過接口FSData CutputStream API 先將一個block寫入到DataNode中,其余的副本由DataNode開啟新的線程根據副本放置規則,往其它DataNode上進行復制。

4.復制完成后會返回一個回饋信息,然后再將該信息匯報給NameNode

注:DataNode中的副本,是由第一個接收到block的DataNode復制產生的。

1.9 HDFS文件權限

與Linux文件權限類似

r : read
w : write
x : execute,權限x對于文件忽略,對于文件夾表示是否允許訪問其內容。

如果Linux系統用戶zhangsan使用hadoop命令創建一個文件,那么這個文件在HDFS 中 owner 就是zhangsan
HDFS的權限目的:阻止好人做錯事,而不是阻止壞人做壞事。HDFS相信,你告訴我你是誰,我就認為你是誰。

注:現在好像加密碼認證了。

1.10 安全模式

NameNode啟動的時候,首先將映射文件(fsimage)載入內存,并執行編輯日志(edits)中的各項操作
一旦在內存中成功建立文件系統元數據的映射,則創建一個新的fsimage文件(這個操作不需要SecondaryNameNode)和一個空的編輯日志
此刻NameNode運行在安全模式。即NameNode的文件系統對于客戶端來說是只讀的。(顯示目錄,顯示文件內容等。寫、刪除、重命名都會失?。?br /> 在此階段NameNode收集各個DataNode的報告,當數據塊達到最小副本數以上時,會被認為是安全的,在一定比例(可設置)的數據塊被確定為安全后,再過若干時間,安全模式結束。
當檢測到副本數不足的數據塊時,該快會被復制知道達到最小副本數,系統中數據塊的位置并不是由NameNode維護的,而是以塊列表形式存儲在DataNode中。

在剛啟動HDFS的時候,會先進入一個安全模式,此模式下只可進行讀操作。

p.p1 { margin: 0; text-align: center; font: 12px Helvetica; color: rgba(69, 69, 69, 1) }
p.p2 { margin: 0 0 2px; text-align: justify; font: 14px Helvetica; color: rgba(69, 69, 69, 1) }
p.p3 { margin: 0; text-align: justify; font: 12px Helvetica; color: rgba(69, 69, 69, 1) }
p.p4 { margin: 0; font: 12px Helvetica; color: rgba(69, 69, 69, 1) }
p.p5 { margin: 0; font: 12px "PingFang SC"; color: rgba(69, 69, 69, 1) }
p.p6 { margin: 0; text-align: justify; font: 12px Helvetica; color: rgba(69, 69, 69, 1); min-height: 14px }
p.p7 { margin: 0 0 0 46px; text-align: justify; font: 12px Helvetica; color: rgba(69, 69, 69, 1); min-height: 14px }
p.p8 { margin: 0; text-align: justify; font: 12px "PingFang SC"; color: rgba(69, 69, 69, 1) }
p.p9 { margin: 0 0 0 46px; text-align: justify; font: 12px "PingFang SC"; color: rgba(69, 69, 69, 1) }
li.li4 { margin: 0; font: 12px Helvetica; color: rgba(69, 69, 69, 1) }
li.li5 { margin: 0; font: 12px "PingFang SC"; color: rgba(69, 69, 69, 1) }
span.s1 { font: 14px "PingFang SC" }
span.s2 { font: 12px "PingFang SC" }
span.s3 { font: 12px Helvetica }
span.Apple-tab-span { white-space: pre }
ul.ul1 { list-style-type: disc }

總結

以上是生活随笔為你收集整理的HDFS简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。