聊起 BigTable,让你不再胆怯
【這是一猿小講的第?66?篇原創(chuàng)分享】
谷歌“三駕馬車”的出現(xiàn),才真正把我們帶入了大數(shù)據(jù)時(shí)代,并指明了大數(shù)據(jù)的發(fā)展方向。
GFS 作為其中一駕寶車,解決了大數(shù)據(jù)存儲的難題。它能夠把大量廉價(jià)的普通機(jī)器,聚在一起,充分讓每臺廉價(jià)的機(jī)器發(fā)揮光和熱。其中在《從谷歌 GFS 架構(gòu)設(shè)計(jì)聊開去》中我們針對 GFS 進(jìn)行了管中窺豹,體會到其中一斑,不得不說是人多力量大,團(tuán)結(jié)就是力量的體現(xiàn)。
MapReduce 作為其中一座寶駕出現(xiàn),主要解決海量數(shù)據(jù)計(jì)算的頭痛難題。在《悟懂MapReduce,不糾結(jié)!》中我們引入一個(gè)接地氣的“農(nóng)村掰玉米”的案例進(jìn)行了 MapReduce 思想的體會,大體意思是說,?Map 就像人手掰一垅玉米(有個(gè)別生玉米+多數(shù)熟玉米),負(fù)責(zé)掰就行;Reduce 就像有專門收生玉米的;有專門收熟玉米的,然后各自進(jìn)行匯總統(tǒng)計(jì)。
簡單去講,GFS 解決了分布式文件的存儲,MapReduce 解決了海量數(shù)據(jù)的計(jì)算。
但是天生好奇,心生疑問“實(shí)時(shí)在線應(yīng)用的海量結(jié)構(gòu)化數(shù)據(jù)該如何存儲呢?”那么不得不提及谷歌的第三駕馬車“BigTable”。
背景?
眾所周知,Google 要存儲海量的網(wǎng)頁,而且要能夠存儲一個(gè) URL 的不同時(shí)期的多個(gè)版本的網(wǎng)頁內(nèi)容(因?yàn)榫W(wǎng)頁會不斷的更新,所以爬蟲也要不斷的針對同一個(gè) URL 進(jìn)行爬取)。
上圖是摘自 BigTable 的論文,老圖配新曲,在此處主要用來闡述 BigTable 產(chǎn)生的其中一個(gè)背景,從中我們能夠得出如下公式。
com.cnn.www + contents: + t3 => html網(wǎng)頁內(nèi)容
com.cnn.www + contents: + t5 => html網(wǎng)頁內(nèi)容
com.cnn.www + contents: + t6 => html網(wǎng)頁內(nèi)容
那么 Google 就需要設(shè)計(jì)一款類似以“URL + ?contents + time stamp”為 key,以“html 網(wǎng)頁內(nèi)容”為值的存儲系統(tǒng),于是就有了 BigTable 這個(gè)鍵值系統(tǒng)的存在。
是啥?
Bigtable is a distributed storage system for managing structured data that is designed to scale to a very large size: petabytes of data across thousands of commodity servers.官方定義。Bigtable 是一個(gè)分布式的結(jié)構(gòu)化數(shù)據(jù)存儲系統(tǒng),它被設(shè)計(jì)用來處理海量數(shù)據(jù):通常是分布在數(shù)千臺普通服務(wù)器上的 PB 級的數(shù)據(jù)。
說清楚 BigTable 存儲啥樣子?一段話(一簞食)
A Bigtable is a sparse, distributed, persistentmulti-dimensionalsorted map.The map is indexed by a row key, column key, and a timestamp;each value in the map is an uninterpreted array of bytes.BigTable 是一個(gè)稀疏的、分布式的、持久化存儲的多維度排序的 Map.(寫過兩天代碼的都不陌生,Map 由 key 和 value 組成);
Map 的 key 是行關(guān)鍵字、列關(guān)鍵字以及時(shí)間戳組成;
Map 的 value 都是一個(gè)未經(jīng)解析的 byte 數(shù)組。
看透徹 BigTable 存儲啥樣子?一張圖(一瓢飲)
可以看出 BigTable 用三維(row 行關(guān)鍵字、column 列關(guān)鍵字、time 時(shí)間戳)方式定位數(shù)據(jù),也就是以“行關(guān)鍵字、列關(guān)鍵字、時(shí)間戳”為 key 來定位數(shù)據(jù);
我們也可以認(rèn)為 BigTable 是屬于 key-Value 的 NOSQL 數(shù)據(jù)庫系列(為你在技術(shù)選型時(shí)再加一備選)。
一段話(一簞食)+ 一張圖(一瓢飲) = BigTable(足矣)。
好了,到這應(yīng)該對 BigTable 懵懵懂,如果感覺蒙圈、迷茫了,建議動動手指分享轉(zhuǎn)發(fā)一下(言外之意:如果沒看懂,就忽略此篇分享,莫要影響心情,因?yàn)橛鋹偟男那檎娴暮苤匾?#xff01;!!);如果感覺稍微有點(diǎn)意思或者豁然開朗,那就繼續(xù)往下追。
設(shè)計(jì)?
默默跟隨“一猿小講”腳步的應(yīng)該都清楚,GFS 也好、MapReduce 也罷,參與者角色都采取了簡單就是美的大道至簡的思想設(shè)計(jì),都秉承了“一人掌權(quán),其他人辦事”的理念,那我們不妨看看 BigTable 背后是不是也是這樣的設(shè)計(jì)呢?
BigTable 主要參與者:鏈接到客戶程序中的庫、一個(gè) Master 服務(wù)器和多個(gè) Tablet 服務(wù)器(這不就是咱們之前說 GFS 的皇上~宰相模式)。
Master服務(wù)器 (皇上)主要負(fù)責(zé)以下工作:
為 Tablet 服務(wù)器分配 Tablets;
檢測新加入的或者過期失效的 Tablet 服務(wù)器;
對 Tablet 服務(wù)器進(jìn)行負(fù)載均衡;
對保存在 GFS 上的文件進(jìn)行垃圾收集;
對模式的相關(guān)修改操作,例如建立表和列族。
Tablet服務(wù)器 (宰相)主要負(fù)責(zé)以下工作:
管理一個(gè) Tablet 的集合(通常每個(gè)服務(wù)器有大約數(shù)十個(gè)至上千個(gè) Tablet);
負(fù)責(zé)處理它所加載的 Tablet 的讀寫操作;
負(fù)責(zé)在 Tablets 過大時(shí),對其進(jìn)行分割。
運(yùn)轉(zhuǎn)?
寫操作。
Tablet 服務(wù)器首先檢查這個(gè)操作格式是否正確、操作發(fā)起者是否有執(zhí)行這個(gè)操作的權(quán)限;
如果校驗(yàn)通過,將寫請求提交到日志 tablet log;
然后將數(shù)據(jù)寫入內(nèi)存中的 memtable;
當(dāng) memtable 存到一定規(guī)模會被凍結(jié),Bigtable 隨之創(chuàng)建一個(gè)新的 memtable,并將凍結(jié)的 memtable 寫入分布式文件系統(tǒng) GFS。
讀操作。
Tablet 服務(wù)器首先進(jìn)行完整性和權(quán)限檢查;
然后將一系列 SSTable 和 memtable 的存儲內(nèi)容組成一個(gè)
大的視圖,然后從中進(jìn)行讀取。
設(shè)計(jì)要點(diǎn):讀也好,寫也罷,客戶程序其實(shí)直接和 Tablet 服務(wù)器通信進(jìn)行讀寫操作,所以 Master 服務(wù)器的負(fù)載是很輕的。
技術(shù)棧?
BigTable 使用 Google 的分布式文件系統(tǒng) GFS作為底層數(shù)據(jù)存儲。
BigTable 內(nèi)部存儲數(shù)據(jù)的文件是 Google SSTable 格式的;(SSTable 是一個(gè)持久化的、排序的、不可更改的 Map 結(jié)構(gòu),點(diǎn)一首楊坤的“無所謂”送給你,該糾結(jié)時(shí)糾結(jié),不該糾結(jié)時(shí)莫糾結(jié),重要的是心情愉悅)。
BigTable 使用 Chubby 提供協(xié)同服務(wù)管理(若懵圈了,就想想 ZooKeeper)。
思考?
畫龍畫虎難畫骨!目前的一切還是浮于表象,有沒有更進(jìn)一步的認(rèn)識呢?那就讓時(shí)間來告訴我們吧!
好了,這篇分享都到這兒吧,希望你們能夠喜歡,如果感覺有點(diǎn)幫助,那就動動手指轉(zhuǎn)發(fā)分享一下吧。
推薦閱讀:
從谷歌 GFS 架構(gòu)設(shè)計(jì)聊開去
悟懂MapReduce,不糾結(jié)!
這部技術(shù)葵花寶典真的很硬核
苦澀的技術(shù)我該怎么學(xué)?Akka 實(shí)戰(zhàn)
總結(jié)
以上是生活随笔為你收集整理的聊起 BigTable,让你不再胆怯的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 让一部分人先看懂2023:折叠手机抢占C
- 下一篇: 狗狗走丢一个月回家疯狂撞门:为啥土狗能找