分布式文件系統(tǒng)hdfs基礎(chǔ)與應(yīng)用_第1頁
分布式文件系統(tǒng)hdfs基礎(chǔ)與應(yīng)用_第2頁
分布式文件系統(tǒng)hdfs基礎(chǔ)與應(yīng)用_第3頁
分布式文件系統(tǒng)hdfs基礎(chǔ)與應(yīng)用_第4頁
分布式文件系統(tǒng)hdfs基礎(chǔ)與應(yīng)用_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

內(nèi)容安排HDFS概述1HDFS基本架構(gòu)與原理2HDFS程序設(shè)計(jì)方法3HDFS優(yōu)化小技巧4總結(jié)6分布式日志收集系統(tǒng):文件管理模塊5內(nèi)容安排HDFS概述1HDFS基本架構(gòu)與原理2HDFS程序設(shè)計(jì)方法3HDFS優(yōu)化小技巧4總結(jié)6分布式日志收集系統(tǒng):文件管理模塊5HDFS是什么?源自于

的GFS于2003年10月HDFS是GFS克隆版Hadoop

Distributed

File

System易于擴(kuò)展的分布式文件系統(tǒng)運(yùn)行在大量普通廉價機(jī)器上,提供容錯機(jī)制為大量用戶提供性能不錯的文件存取服務(wù)HDFS優(yōu)點(diǎn)高容錯性數(shù)據(jù)自動保存多個副本副本丟失后,自動恢復(fù)適合批處理移動計(jì)算而非數(shù)據(jù)數(shù)據(jù)位置

給計(jì)算框架適合大數(shù)據(jù)處理GB、TB、甚至PB級數(shù)據(jù)百萬規(guī)模以上的文件數(shù)量10K+節(jié)點(diǎn)規(guī)模HDFS優(yōu)點(diǎn)流式文件寫入,多次保證數(shù)據(jù)一致性可構(gòu)建在廉價機(jī)器上通過多副本提高可靠性提供了容錯和恢復(fù)機(jī)制HDFS缺點(diǎn)低延遲數(shù)據(jù)比如毫秒級低延遲與高吞吐率小文件存取占用NameNode大量內(nèi)存尋道時間超過

時間并發(fā)寫入、文件隨機(jī)修改一個文件只能有一個寫者僅支持append內(nèi)容安排HDFS概述1HDFS基本架構(gòu)與原理2HDFS程序設(shè)計(jì)方法3HDFS優(yōu)化小技巧4總結(jié)6分布式日志收集系統(tǒng):文件管理模塊5分布式文件系統(tǒng)的一種實(shí)現(xiàn)方式Server(10

*

1TB)50fiGleB350GB0.5filTe1B0.5

TB1.f2ilTe2B1.2

TB100filGe4B100

GBServer(10

*

1TB)(10

*

1TB)file1:node1file2:node3file3:node4file4:node5…….file1file3file2file1file1Serverfile4file2file2Server(10

*

1TB)file3file4file1:node1,node2,node3file2:node2,node3,node4file3:node4,mode5,node6file4:node5,node6.node7…….HDFS設(shè)計(jì)思想Server(10

TB)Server(10

TB)Server(10

TB)block1block2block3block4block1block1block2block2block3block3block4block4block1:node1,node2,node3block2:node2,node3,node4block3:node4,mode5,node6block4:node5,node6.node7…….Server(10

TB)64MB64MB64MB64MB……file350

GBblock1block2block3?le3:

block1,block2,block3

….HDFS架構(gòu)StandbynamenodeAc7venamenodeHDFS架構(gòu)Active

Namenode主Master(只有一個)管理HDFS的名稱空間管理數(shù)據(jù)塊

信息配置副本策略處理客戶端讀寫請求Standby

NameNodeNameNode的熱備;定期合并fsimage和fsedits,推送給

NameNode;當(dāng)Active

NameNode出現(xiàn)故障時,快速切換為新的ActiveNameNode。HDFS架構(gòu)Client文件切分與NameNode交互,獲取文件位置信息;與DataNode交互,讀取或者寫入數(shù)據(jù);管理HDFS;HDFS。DatanodeSlave(有多個)實(shí)際的數(shù)據(jù)塊執(zhí)行數(shù)據(jù)塊讀/寫HA與FederationNN1(ac7ve)NN2(standby)NN4(standby)NN3(ac7ve)DN1DN2DN3DN4DN5DN6DN7DN8DN9DN10SharedZookeeperFsimage與editsNameNode兩個重要文件fsimage:元數(shù)據(jù)鏡像文件(保存文件系統(tǒng)的樹)edits:元數(shù)據(jù)操作日志(針對

樹的修改操作),被寫入共享

系統(tǒng)中

,比如NFS、JournalNode元數(shù)據(jù)鏡像內(nèi)存中保存一份

的內(nèi)存中的鏡像=fsimage+edits合并fsimage與editsEdits文件過大將導(dǎo)致NameNode重啟速度慢Standby

Namenode負(fù)責(zé)定期合并它們HDFS數(shù)據(jù)塊(block)文件被切分成固定大小的數(shù)據(jù)塊默認(rèn)數(shù)據(jù)塊大小為128MB,可配置若文件大小不到128MB,則單獨(dú)存成一個block為何數(shù)據(jù)塊如此之大數(shù)據(jù)傳輸時間超過尋道時間(高吞吐率)一個文件

方式按大小被切分成若干個block,

到不同節(jié)點(diǎn)上默認(rèn)情況下每個block有三個副本為什么選擇三副本?1000TB數(shù)據(jù)集群,

在各種RAID

級別上的風(fēng)險,以數(shù)據(jù)丟失的概率為衡量標(biāo)準(zhǔn)(3年內(nèi)的統(tǒng)計(jì)):RAID-5最不可靠,會損失2TB數(shù)據(jù),而三副本方案最靠譜假設(shè)1組磁盤里(可能是RAID1,RAID5等)由m個磁盤組成,當(dāng)m個(或

)磁盤損壞會造成數(shù)據(jù)丟失,比如:RAID5只允許損壞一個磁盤,因此m=2;RAID6只允許損壞兩個磁盤,因此m=3HDFS機(jī)制—寫流程HDFS機(jī)制—讀流程HDFS機(jī)制—物理拓?fù)涿總€機(jī)架通常有16-64

個節(jié)點(diǎn)同一個機(jī)架內(nèi)任意兩個節(jié)點(diǎn)間共享1Gbps帶寬機(jī)架間帶寬為2-10GbpsHDFS機(jī)制—副本放置策略RackARackB問題:一個文件劃分成多個block,每個block存多份,如何為每個block選擇節(jié)點(diǎn)這幾份數(shù)據(jù)?Block副本放置策略:副本1:

同Client的節(jié)點(diǎn)上副本2:不同機(jī)架中的節(jié)點(diǎn)上副本3:與第二個副本同一機(jī)架的另一個節(jié)點(diǎn)上其他副本:隨機(jī)挑選HDFS機(jī)制—可靠性策略文件損壞網(wǎng)絡(luò)或者機(jī)器失效NameNode掛掉文件損壞網(wǎng)絡(luò)或者機(jī)器失效NameNode掛掉常見常的見三的種三錯種誤錯情誤況情況文件完整性CRC32校驗(yàn)用其他副本取代損壞文件Heartbeat–

Datanode

定期向Namenode發(fā)heartbeat元數(shù)據(jù)信息FSImage(文件系統(tǒng)鏡像)、Editlog(操作日志)多份主備NameNode實(shí)時切換HDFS不適合

小文件元信息

在NameNode內(nèi)存中一個節(jié)點(diǎn)的內(nèi)存是有限的存取大量小文件消耗大量的尋道時間類比拷貝大量小文件與拷貝同等大小的一個大文件NameNode

block數(shù)目是有限的一個block元信息消耗大約150

byte內(nèi)存1億個block,大約需要20GB內(nèi)存如果一個文件大小為10K,則1億個文件大小僅為1TB(但要消耗掉NameNode

20GB內(nèi)存)內(nèi)容安排HDFS概述1HDFS基本架構(gòu)與原理2HDFS程序設(shè)計(jì)方法3HDFS優(yōu)化小技巧4總結(jié)6分布式日志收集系統(tǒng):文件管理模塊5HDFS方式接口HDFS

S

命令HDFS

Java

APIHDFS

REST

APIHDFS

Fuse:實(shí)現(xiàn)了fuse協(xié)議HDFS

lib

hdfs:C/C++HDFS

其他語言編程API使用thrift實(shí)現(xiàn)支持C++、Python、php、C#等語言HDFS

S命令—文件操作命令HDFS

S命令—文件操作命令將本地文件上傳到HDFS上bin/hdfs

fs-‐copyFromLocal

/local/data

/hdfs/data刪除文件/bin/hdfs

fs

-‐rmr

/hdfs/data創(chuàng)建bin/hdfs

fs

-‐mkdir

/hdfs/dataHDFS

S命令—管理命令HDFS

S命令—管理在sbin

下start-all.shstart-dfs.shstart-yarn.shhadoop-deamon(s).sh單獨(dú)啟動某個服務(wù)hadoop-deamon.sh

start

namenodehadoop-deamons.sh

start

namenode(通過SSH登錄到各個節(jié)點(diǎn))HDFS

S

命令—文件管理命令fsck檢查hdfs中文件的健康狀況查找缺失的塊以及過少或過多副本的塊查看一個文件的所有數(shù)據(jù)塊位置刪除損壞的數(shù)據(jù)塊HDFS

S命令—文件管理命令fsckHDFS

S命令—數(shù)據(jù)均衡器balancer數(shù)據(jù)塊重分布bin/start-balancer.sh

-threshold

<percentage

ofdisk

capacity>percentage

of

disk

capacityHDFS達(dá)到平衡狀態(tài)的磁盤使用率偏差值值越低各節(jié)點(diǎn)越平衡,但消耗時間也更長HDFS

S命令—設(shè)置

份額限制一個

最多使用磁盤空間bin/hadoop

dfsadmin

-setSpaceQuota

1t

/user/username限制一個

包含的最多子

和文件數(shù)目bin/hadoop

dfsadmin

-setQuota

10000

/user/usernameHDFS

S命令—增加/移除節(jié)點(diǎn)括配置文件等)加入新的datanode步驟1:將已存在datanode上的安裝拷貝到新datanode上;步驟2:啟動新datanode:sbin/hadoop-deamon.sh

startdatanode移除舊datanode步驟1:將datanode加入

,并更新,在NameNode上,將datanode的host或者ip加入配置選項(xiàng)dfs.hosts.exclude指定的文件中步驟2:移除datanodebin/hadoop

dfsadmin

-refreshNodesHDFS

Java

API介紹Configuration類:該類的對象封裝了配置信息,這些配置信息來自core-*.xml;FileSystem類:文件系統(tǒng)類,可使用該類的方法對文件/

進(jìn)行操作。一般通過FileSystem的靜態(tài)方法get獲得一個文件系統(tǒng)對象;FSDataInputStream和FSDataOutputStream類:

HDFS中的輸入輸出流。分別通過FileSystem的open方法和create方法獲得。以上類均來自java包:

.apache.hadoop.fsHDFSJava程序舉例將本地文件拷貝到HDFS上;Configuration

config

=

new

Configuration();FileSystem

hdfs

=

FileSystem.get(config);Path

srcPath

=

nePath

dstPath

=

neth(srcFile);th(dstFile);hdfs.copyFromLocalFile(srcPath,

dstPath);創(chuàng)建HDFS文件;//byte[]buff–文件內(nèi)容Configuration

config

=

new

Configuration();FileSystem

hdfs

=

FileSystem.get(config);Path

path

=

ne

th(fileName);FSDataOutputStream

outputStream

=

hdfs.create(path);outputStream.write(buff,

0,

buff.length);HDFS

多語言API—借助thriftThrift

Server(FileSystem)Thrift

ClientThrift

ClientThrift

ClientHadoopClusterhadoopfs.thrift接口定義PHP語言HDFSPython語言HDFS內(nèi)容安排HDFS概述1HDFS基本架構(gòu)與原理2HDFS程序設(shè)計(jì)方法3HDFS優(yōu)化小技巧4總結(jié)6分布式日志收集系統(tǒng):文件管理模塊5HDFS優(yōu)化小技巧:原始日志

格式選擇文本文件不便于壓縮,選擇合適的壓縮算法很重要;不建議將日志直接存成文本格式SequenceFile二進(jìn)制格式,便于壓縮,壓縮格式作為元信息存到文件中;建議采用該格式

原始日志HDFS優(yōu)化小技巧:小文件優(yōu)化合并成大文件Sequence

fileHadoop

Archive保存到key/value系統(tǒng)中HBaseTFS(

FileSystem)HDFS優(yōu)化小技巧:壓縮與歸檔FlumeMapReduce/Hive/SparkHDFS優(yōu)化小技巧:糾刪碼編碼通過引入糾刪碼,節(jié)省

空間(節(jié)省一半空間)Hadoop

3.0(目前為alpha版本)可用內(nèi)容安排HDFS概述1HDFS基本架構(gòu)與原理2HDFS程序設(shè)計(jì)方法3HDFS優(yōu)化小技巧4總結(jié)6分布式日志收集系統(tǒng):文件管理模塊5日志分析系統(tǒng):文件模塊FlumeAppSiteDeviceSqoopHDFSHive(Meta

Store

Server)DatabaseTablePar77onsETLloadcollectloadSQLPrestoSQLKaEaStormRedisMRstoreMysql/Oracle用戶信息產(chǎn)品信息用戶行為數(shù)據(jù)批處理線流式處理線日志分析系統(tǒng):文件模塊注意事項(xiàng)數(shù)據(jù)分區(qū)年/月/日數(shù)據(jù)壓縮較少空間數(shù)據(jù)

格式選擇原始日志

格式選擇Sequencefile(便于壓縮),而不是文本格式原始用戶信息和商品信息可采用列式

格式(ORC或Parquet)保存(Hive一節(jié)會詳細(xì)介紹)日志分析系統(tǒng):數(shù)據(jù)格式選擇SequenceFileHiveSequenceTableHiveORCTable原始日志文件原始Hive表ORC格式的數(shù)據(jù)表對壓縮支持友好支持任意數(shù)據(jù)對壓縮支持友好支持任意數(shù)據(jù)列式

,IO量小主流的

格式日志分析系統(tǒng):增大“熱點(diǎn)文件”的副本數(shù)通過程序API修改FileSystem

fs

=

FileSystem.get(path,

conf);fs.setReplication(path,

(short)

4);通過配置參數(shù)修改

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論