Hadoop從2.3.0版本開(kāi)始支持HDFS緩存機(jī)制,HDFS允許用戶將一部分目錄或文 件緩存在HDFS當(dāng)中,NameNode會(huì)通知擁有對(duì)應(yīng)塊的DataNodes將其緩存在
DataNode的內(nèi)存當(dāng)中。
優(yōu)勢(shì)
- 防止那些被頻繁使用的數(shù)據(jù)從內(nèi)存中清除
- 因?yàn)镈ataNode的緩存由NameNode來(lái)管理,applications在做任務(wù)安排時(shí)可以查詢這個(gè)緩 存的列表,使用一個(gè)被緩存的塊副本能夠提高讀性能
- 當(dāng)塊被DataNode緩存之后,客戶端可以使用一個(gè)新的、高效的、zero-copy的讀API,因 為緩存中的數(shù)據(jù)已經(jīng)被計(jì)算過(guò)checksum,當(dāng)使用新API時(shí),客戶端基本上是零開(kāi)銷的
- 可以提高集群的內(nèi)存利用率。當(dāng)使用操作系統(tǒng)的緩存時(shí),對(duì)一個(gè)塊的重復(fù)讀會(huì)導(dǎo)致所有 的副本都會(huì)被放到緩沖區(qū)當(dāng)中,當(dāng)使用集中式緩存時(shí),用戶可以指定n個(gè)副本中的m個(gè) 才會(huì)被緩存,可以節(jié)約n-m的內(nèi)存
使用場(chǎng)景
- 集中式緩存對(duì)那些頻繁訪問(wèn)的的文件是非常有用的,例如hive中經(jīng)常被使用的fact表就 非常適合緩存
- 另一方面,緩存一年的查詢結(jié)果可能沒(méi)那么有用了,因?yàn)檫@個(gè)結(jié)果可能只會(huì)被查看一次
有助于提高混合類型作業(yè)的SLA性能,把高優(yōu)先級(jí)的數(shù)據(jù)緩存起來(lái)可以確保它不會(huì)與低 優(yōu)先級(jí)的數(shù)據(jù)競(jìng)爭(zhēng)磁盤IO
命令行

image.png