分布式存储 HDFS原理
大數(shù)據(jù)基礎(chǔ)知識(shí)
一、什么是大數(shù)據(jù)
短時(shí)間內(nèi)快速產(chǎn)生的海量的多種多樣的有價(jià)值的數(shù)據(jù)。
大數(shù)據(jù)的技術(shù):
1、分布式存儲(chǔ):
2、分布式計(jì)算:
1)分布式批處理:
當(dāng)數(shù)據(jù)積累一定的時(shí)間后(假設(shè)一個(gè)月),進(jìn)行統(tǒng)一的處理。2)分布式流處理
分布式流處理是一個(gè)實(shí)時(shí)的處理。即數(shù)據(jù)生成后立即處理。 例子: 11.11天貓大屏幕 QQ實(shí)時(shí)在線的分布情況3、機(jī)器學(xué)習(xí)
凡是預(yù)測(cè)類的都是機(jī)器學(xué)習(xí)。
分布式存儲(chǔ)
簡(jiǎn)單案例:假如你要存儲(chǔ)10PB的一個(gè)視頻文件,自己一個(gè)人的電腦存儲(chǔ)不了,需要存儲(chǔ)在多個(gè)服務(wù)器上,每一個(gè)服務(wù)器就是一個(gè)datanode,當(dāng)你需要獲取文件時(shí),逐一訪問(wèn)效率太低,可以找一個(gè)中間人來(lái)存放文件在哪臺(tái)服務(wù)器的信息,通過(guò)信息可以快速的找到文件。這個(gè)中間人就是namenode,存儲(chǔ)的有關(guān)文件的信息就是元數(shù)據(jù)。為了數(shù)據(jù)安全,每一個(gè)小的視頻(存儲(chǔ)單元)復(fù)制一份存放到不同服務(wù)器上,當(dāng)有服務(wù)器停止運(yùn)行時(shí),可以通過(guò)訪問(wèn)備份來(lái)尋找到自己想要的數(shù)據(jù),這種存儲(chǔ)方式叫做分布式存儲(chǔ)。
系統(tǒng)學(xué)習(xí)分布式存儲(chǔ) 過(guò)程(HDFS原理)
1 如果要上傳一個(gè)大文件,首先要計(jì)算大文件的block數(shù)量,block數(shù)量=大文件的大小/128M(一般采用128M為一個(gè)block塊的大小)
2 client會(huì)向namenode匯報(bào)
1)當(dāng)前大文件的block數(shù)量
2)當(dāng)前大文件屬于誰(shuí) 權(quán)限
3)上傳時(shí)間
namenode的作用:
掌握全局,管理datanode以及元數(shù)據(jù)
元數(shù)據(jù)存儲(chǔ)在內(nèi)存中
接受客戶端client的讀寫(xiě)服務(wù)
收集datanode匯報(bào)的block列表的信息
namenode保存metadata信息包括
文件的owner和permissions
文件的大小,時(shí)間
(block列表:blockId)
block副本的位置(由datanode上報(bào))
3由于文件太大,超過(guò)128M所以得切割出來(lái)一個(gè)個(gè)的block,先切割一個(gè)block塊
4namenode去請(qǐng)求block塊的Id號(hào)以及地址
5因?yàn)閚amenode能夠掌握全局,管理所有的datanode,所以它會(huì)將負(fù)載不高的datanode的地址返回給client
6client拿到地址后,找到datanode上傳數(shù)據(jù),
如何上傳:
namenode將地址返回后,block會(huì)切割成一個(gè)個(gè)的packet,這些datanode之間會(huì)形成一個(gè)Pipeline管道,目的是:并行存儲(chǔ),提高效率。
7datanode拿到地址后,會(huì)向namenode回報(bào)當(dāng)前的存儲(chǔ)情況。
datanode的作用:
存儲(chǔ)block塊,向namenode匯報(bào)發(fā)送心跳,發(fā)送心跳是為了讓namenode知道自己在正常運(yùn)行
接受client的讀請(qǐng)求,client不僅可以向datanode寫(xiě)數(shù)據(jù),也可以讀數(shù)據(jù),獲取到地址后直接讀取。
8client繼續(xù)切割,直到上傳完成所有的數(shù)據(jù)。
問(wèn)題:
考慮到安全問(wèn)題,數(shù)據(jù)做了兩個(gè)備份(默認(rèn)兩份),所以在第6步上傳數(shù)據(jù)的時(shí)候,是向多臺(tái)服務(wù)器傳遞數(shù)據(jù)。
多臺(tái)??:(1)如果是集群(多臺(tái)服務(wù)器組成)外namecode向client返回的三個(gè)地址,第一個(gè)是負(fù)載不高的datanode,第二個(gè)地址是在其他機(jī)架(有多臺(tái)服務(wù)器)的隨機(jī)一個(gè)服務(wù)器上第三個(gè)地址是和第二個(gè)我地址位于同一個(gè)機(jī)架的其他服務(wù)器上。如果一個(gè)機(jī)架出現(xiàn)問(wèn)題,數(shù)據(jù)也不會(huì)丟失。
(2)如果是集群內(nèi)返回地址,第一個(gè)位置是當(dāng)前的節(jié)點(diǎn),第二個(gè),第三個(gè)同上
namenode工作原理:
基本結(jié)構(gòu)
edits:存儲(chǔ)操作信息
edits保存了namenode的操作信息,當(dāng)edits文件中的數(shù)據(jù)達(dá)到一定的數(shù)量(64M)或者時(shí)間超過(guò)了規(guī)定的時(shí)間時(shí),secondnamenode會(huì)將edits和fsimage,同時(shí)namenode生成新的edits.new去記錄操作,在secondnamenode中,會(huì)模擬執(zhí)行edits文件,產(chǎn)生元數(shù)據(jù),并將元數(shù)據(jù)與fsimage合并,合并之后將fsimage推送給namenode,edits.new成為新的edits。這個(gè)過(guò)程就是元數(shù)據(jù)的持久化。
不是所有的元數(shù)據(jù)都會(huì)持久化,block的位置就不會(huì),因?yàn)槊看渭簡(jiǎn)?dòng)時(shí),服務(wù)器會(huì)自己將block的位置傳遞給namenode.
注意:
1 安全模式:
1)加載fsimage,加載到內(nèi)存
2)如果edits文件不為空,那么namenode自己來(lái)合并
3)檢查datanode是否健康
4)如果有datanode不正常,指揮做備份
2處于安全模式的過(guò)程中,如果fsiamge已經(jīng)加載到內(nèi)存中,可以查看到文件目錄,但是無(wú)法讀取
3HDFS權(quán)限控制:防君子,不妨小人
4HDFS集群不允許修改,文件一旦上傳成功不能修改block塊的大小,禁掉的功能就是為了防止集群泛洪
總結(jié)
以上是生活随笔為你收集整理的分布式存储 HDFS原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux装jdk并配置环境详细步骤
- 下一篇: oracle两张表数据匹配,Oracle