【分布式计算】DFS BigTable
生活随笔
收集整理的這篇文章主要介紹了
【分布式计算】DFS BigTable
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.背景
分布式計算的發跡應該是google在2003年發表的三篇paper,分別是GFS、MapReduce、BigTable。其中MapReduce大家都很熟悉了,不懂的同學也可以看看我之前寫的文章【分布式計算】MapReduce的替代者-Parameter Server
為什么google會搞分布式計算這件事兒呢,因為在那個年代每天會產生幾個T的日志,但是當時的磁盤只允許存儲幾百G的文件,07年之前淘寶的所有數據都是用完就刪除的,因為沒地方存。后來,人們認識到數據是值錢的,所以需要一種存儲策略來存儲大數據,于是google就用了分布式存儲系統。
這里主要介紹下GFS和BigTable。
2.DFS(對應hadoop的HDFS)
DFS是一種分布式文件存儲系統。常規的文件系統是樹狀結構存儲的,每個文件有一個指針指到磁盤上的某個區域。 早期的DFS是單點結構的,有一個master節點負責管理每個文件的namespace(文件存儲在哪個機器的哪個磁盤上,如s3/dick2)。要存儲一個很大的數據,比方說一個10P的數據,首先是切片,比如說按照64M切片,每個block存在某一個機器的某個磁盤上。整體的結構如下:
這里面就會衍生出三個問題, 第一個是master節點如果掛了,整個文件系統就不能work了,這個是單點的一個缺陷。 第二個問題是,一但slave中的某個磁盤破損了,磁盤破損率在2%左右,也就是每天都有破損的。這里有一個冗余機制,就是每個block會分配到多個磁盤上備份~ 第三個問題是,磁盤是不停的被讀寫的,master是如何獲得每個磁盤的信息的,這個功能依賴于一種叫做heart-beat的機制,每隔幾秒鐘,master就要遍歷每個slave得到它們的最新狀況。
3.BigTable(對應Hadoop的HBase)
如果說DFS是磁盤級別的分布式存儲,那么BigTable就是內存級別的分布式存儲。BigTable的存儲結構是HashTable,以key-value的形式存儲。應用場景是一些在線的service。比方說GoogleEarth,每個地名(key)會對應一系列的meta(value),世界上有無數個地名,這是一個很大的文件。如果從磁盤中拿,比方說輸入一個巷子的名字,過10分鐘用戶才能拿到結果,這是不能接受的,我們需要將這些key-value做成cache緩存在內存中。顯然單機內存的極限,比方說300G也是無法緩存這么大的文件的。這就需要多個機器一起緩存,這個策略就是BigTable。
但是,一但一個機器出現failover的情況,整個緩存就出現了gap,BigTable有一個機制就是,不斷地將文件underfile到DFS中,防止文件丟失。
/********************************
* 本文來自博客 ?“李博Garvin“
* 轉載請標明出處:http://blog.csdn.net/buptgshengod
******************************************/
總結
以上是生活随笔為你收集整理的【分布式计算】DFS BigTable的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面试题总结~~(google level
- 下一篇: 【LeetCode从零单排】No.135