大数据 — Hadoop
HDFS
Hadoop 1.0:
- 3個(gè)組件:
- Namenode
- SecondNamenode
- Datanode
namenode(主節(jié)點(diǎn),master,只有一個(gè),單點(diǎn)故障的風(fēng)險(xiǎn))中間存儲(chǔ)信息(元數(shù)據(jù))
2種映射關(guān)系:
元數(shù)據(jù)存在內(nèi)存中
元數(shù)據(jù)進(jìn)行持久化 — 磁盤(pán)fsimage — 目的:避免數(shù)據(jù)丟失
fsimage : 元數(shù)據(jù)鏡像文件
只有機(jī)器重啟的時(shí)候加載fsimage
元數(shù)據(jù)持久化的過(guò)程 — SNN — secondnamenode
內(nèi)存 -> edit log(磁盤(pán))-> fsimage
SNN 存在意義 : 備份 / 數(shù)據(jù)恢復(fù)
namenode和 edit log關(guān)系:
namenode需要把每一次改動(dòng)都存在 edit log ,整個(gè)過(guò)程誰(shuí)來(lái)推動(dòng)?(Datanode和namenode之間心跳機(jī)制)
namenode除了單點(diǎn)問(wèn)題之外,還有不適合存儲(chǔ)太多小文件的問(wèn)題,因?yàn)閮?nèi)存有限
datanode (slave,從節(jié)點(diǎn),多個(gè)機(jī)器)
多副本機(jī)制 — 默認(rèn)3副本 (作用:數(shù)據(jù)冗余,高可用)
本地化原則 (就近原則):mapreduce:主(jobtracker - namenode),從(tasktracker - datanode)
可靠性保證 :
目的 : 保證數(shù)據(jù)完整性 (通過(guò)crc32校驗(yàn)算法)
整個(gè)數(shù)據(jù)傳輸過(guò)程,輸據(jù)需要校驗(yàn)幾次?
- 每一個(gè)單元?jiǎng)?chuàng)建一個(gè)單獨(dú)的校驗(yàn)碼(crc32) , 數(shù)據(jù)和校驗(yàn)碼統(tǒng)一發(fā)送給Datanode
- 在后臺(tái)還會(huì)運(yùn)行一個(gè)掃描進(jìn)程:DataBlockScanner(定期校驗(yàn))
- 一旦檢測(cè)出現(xiàn)問(wèn)題,通過(guò)心跳,通知NN,讓NN發(fā)起DN修復(fù) (拷貝沒(méi)有問(wèn)題的備份)
2.可靠性保證 :
- 心跳
- 多副本機(jī)制
- crc32
- SNN (secondnamenode)
- 回收站 ( .Trash 目錄)
Hadoop 2.0:
?
HA 高可用 : 解決了單點(diǎn)故障問(wèn)題
1.0里有一個(gè)SNN,但是不可靠
如何便可靠:需要兩個(gè)NN,一個(gè)active,一個(gè)standby(備用)
為了保證兩個(gè)NN的數(shù)據(jù)一致性,Datanode要對(duì)兩個(gè)NN同時(shí)發(fā)送心跳
雖然Datanode同時(shí)發(fā)送心跳,但是為什么還需要JN?
2種映射關(guān)系:
path -> blockid list 列表 :JN
blockid 數(shù)據(jù)塊 -> datanode 節(jié)點(diǎn)地址 : Datanode心跳
分工不同:::
HDFS2.0 需要引入zookeeper , (zookeeper目的:協(xié)調(diào)分布式集群中各個(gè)節(jié)點(diǎn)工作有序進(jìn)行,完成故障轉(zhuǎn)移)
在2.0,引入zkfc(ZookeeperFailoverController)進(jìn)程,和NN部署到同一個(gè)機(jī)器上,目的:負(fù)責(zé)自己管轄之內(nèi)的NN進(jìn)行健康檢查
zkfc 進(jìn)程會(huì)在zookeeper上注冊(cè)一個(gè)臨時(shí)節(jié)點(diǎn)
目的:監(jiān)控NN,一旦NN掛掉,相對(duì)應(yīng)的臨時(shí)節(jié)點(diǎn)消失,接下來(lái)開(kāi)始選主(申請(qǐng)鎖)流程
JN目的:讓activeNN和standbyNN保持輸據(jù)同步(文件 -> block)
同步問(wèn)題:需要以來(lái)JN(JournalNodes)守護(hù)進(jìn)程,完成元數(shù)據(jù)的一致性
JN 角色有兩種選擇:
1) NFS — 網(wǎng)絡(luò)系統(tǒng) (network file system)
需要額外的磁盤(pán)空間
2)QJM — 最低法人管理機(jī)制 (投票)
不需要額外的磁盤(pán)空間
需要用2n+1臺(tái)機(jī)器存儲(chǔ)edit log (奇數(shù)是為了投票)
QJM本質(zhì)是小集群
好處:
* 不需要空間
* 無(wú)但點(diǎn)問(wèn)題
* 不會(huì)因?yàn)閭€(gè)別機(jī)器延遲,影響整體性能
* 只需要通過(guò)簡(jiǎn)單的系統(tǒng)配置可以實(shí)現(xiàn)
NN 和 JN 通常不再一個(gè)機(jī)器上
FC 和 NN 在同一個(gè)機(jī)器上
RM(Yarn主) 和 NN(HDFS主) 通常在同一臺(tái)機(jī)器上
zookeeper 需要單獨(dú)維護(hù)一套獨(dú)立集群
?
HDFS Federation(聯(lián)邦) : 水平擴(kuò)展
集群中提供多個(gè)Name Node,每個(gè)NameNode負(fù)責(zé)管理一部分DataNode
每一個(gè)NN只管理自己管轄之內(nèi)的DN
目的:減輕單一NN壓力,將一部分文件轉(zhuǎn)移到其他NN上管理
如果集群中一個(gè)目錄比較大,那么可以用單獨(dú)的NN維護(hù)起來(lái)
橫向虧站,突破了NN的限制
不同的NN,會(huì)可以訪問(wèn)所有的DN嗎? 會(huì)的?
聯(lián)邦的本質(zhì):將元數(shù)據(jù)管理NN和存儲(chǔ)DN進(jìn)行解耦
可以把聯(lián)邦和高可用同時(shí)體現(xiàn)出來(lái)
快照:真實(shí)數(shù)據(jù)(不是元數(shù)據(jù)) ::: 數(shù)據(jù)備份/災(zāi)備/快速恢復(fù)
本質(zhì):僅僅記錄block列表和大小而已,并不涉及數(shù)據(jù)本身的復(fù)制
某個(gè)目錄的某一時(shí)刻的鏡像
創(chuàng)建和恢復(fù),都非常快 — 瞬間完成,高效
HDFS快照是一個(gè)只讀的基于時(shí)間點(diǎn)文件系統(tǒng)拷貝
HDFS快照是對(duì)目錄進(jìn)行設(shè)定,是某個(gè)目錄的某一個(gè)時(shí)刻的鏡像
- 快照可以是整個(gè)文件系統(tǒng)的也可以是一部分
- 常用來(lái)作為數(shù)據(jù)備份,防止用戶(hù)錯(cuò)誤操作和容災(zāi)恢復(fù)
- Snapshot并不會(huì)影響HDFS的正常操作:修改會(huì)按照時(shí)間的反序記錄,這樣可以直接讀取到最新的數(shù)據(jù)
- 快照數(shù)據(jù)是當(dāng)前數(shù)據(jù)減去修改部分計(jì)算出來(lái)的
- 快照會(huì)存儲(chǔ)在snapeshottable的目錄下
?
快照的各種命令
hdfs dfsadmin -allowSnapshot /user/spark hdfs dfs -createSnapshot /user/spark s0 hdfs dfs -renameSnapshot /user/spark s0 s_init hdfs dfs -deleteSnapshot /user/spark s_init hdfs dfsadmin -disallowSnapshot /user/spark?
?
緩存(集中式緩存 — 不局限具體的機(jī)器的cpu和操作系統(tǒng)層面上的優(yōu)化)
對(duì)于重復(fù)訪問(wèn)的文件很有用
優(yōu)點(diǎn):速度快
- 允許用戶(hù)指定要緩存的HDFS路徑
- 明確的鎖定可以阻止頻繁使用的數(shù)據(jù)被從內(nèi)存中清除
- 集中化緩存管理對(duì)于重復(fù)訪問(wèn)的文件很有用
- 可以換成目錄或文件,但目錄是非遞歸的
?
權(quán)限控制 ACL
類(lèi)似于linux系統(tǒng)acl
例:rwx - rwx - rwx
自己 - 組 - 其他
設(shè)置權(quán)限: setacl命令
需要開(kāi)啟功能:
轉(zhuǎn)載于:https://www.cnblogs.com/pipemm/articles/11331639.html
總結(jié)
以上是生活随笔為你收集整理的大数据 — Hadoop的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Coolite动态加载CheckboxG
- 下一篇: 盗COOKIE之方法总结