【知識積累】BigDate介紹

Big Data技術綜述

  Big Data是近來的一個技術熱點,但從名字就能判斷它並不是什麼新詞。畢竟,大是一個相對概念。歷史上,數據庫、數據倉庫、數據集市等信息管理領域的技術,很大程度上也是爲了解決大規模數據的問題。被譽爲數據倉庫之父的Bill Inmon早在20世紀90年代就經常將Big Data掛在嘴邊了。

  然而,Big Data作爲一個專有名詞成爲熱點,主要應歸功於近年來互聯網、雲計算、移動和物聯網的迅猛發展。無所不在的移動設備、RFID、無線傳感器每分每秒都在產生數據,數以億計用戶的互聯網服務時時刻刻在產生巨量的交互……要處理的數據量實在是太大、增長太快了,而業務需求和競爭壓力對數據處理的實時性、有效性又提出了更高要求,傳統的常規技術手段根本無法應付。

  在這種情況下,技術人員紛紛研發和採用了一批新技術,主要包括分佈式緩存、基於MPP的分佈式數據庫分佈式文件系統、各種NoSQL分佈式存儲方案等。

  10年前,Eric Brewer提出著名的CAP定理,指出:一個分佈式系統不可能滿足一致性、可用性和分區容忍性這三個需求,最多隻能同時滿足兩個。系統的關注點不同,採用的策略也不一樣。只有真正理解了系統的需求,纔有可能利用好CAP定理。

  架構師一般有兩個方向來利用CAP理論。

  Key-Value存儲,如Amazon Dynamo等,可以根據CAP理論靈活選擇不同傾向的數據庫產品。

  領域模型+分佈式緩存+存儲,可根據CAP理論結合自己的項目定製靈活的分佈式方案,但難度較高。

  對大型網站,可用性與分區容忍性優先級要高於數據一致性,一般會盡量朝着A、P的方向設計,然後通過其他手段保證對於一致性的商務需求。架構設計師不要將精力浪費在如何設計能滿足三者的完美分佈式系統,而應該懂得取捨。

  不同的數據對一致性的要求是不同的。SNS網站可以容忍相對較長時間的不一致,而不影響交易和用戶體驗;而像支付寶這樣的交易和賬務數據則是非常敏感的,通常不能容忍超過秒級的不一致。

Cache篇

  緩存在Web開發中運用越來越廣泛,mem-cached是danga(運營LiveJournal的技術團隊)開發的一套分佈

  圖1 memcached構成

圖1 memcached構成

式內存對象緩存系統,用於在動態系統中減少數據庫負載,提升性能。

  memcached具有以下特點:

  協議簡單;基於libevent的事件處理;內置內存存儲方式;memcached不互相通信的分佈式。

  memcached處理的原子是每一個(Key,Value)對(以下簡稱KV對),Key會通過一個hash算法轉化成hash-Key,便於查找、對比以及做到儘可能的散列。同時,memcached用的是一個二級散列,通過一張大hash表來維護。

  memcached由兩個核心組件組成:服務端(ms)和客戶端(mc),在一個memcached的查詢中,ms先通過計算Key的hash值來確定KV對所處在的ms位置。當ms確定後,mc就會發送一個查詢請求給對應的ms,讓它來查找確切的數據。因爲這之間沒有交互以及多播協議,所以memcached交互帶給網絡的影響是最小化的。

  MemcacheDB是一個分佈式、Key-Value形式的持久存儲系統。它不是一個緩存組件,而是一個基於對象存取的、可靠的、快速的持久存儲引擎。協議與memcached一致(不完整),所以很多memcached客戶端都可以跟它連接。MemcacheDB採用Berkeley DB作爲持久存儲組件,因此很多Berkeley DB的特性它都支持。

  類似這樣的產品也很多,如淘寶Tair就是Key-Value結構存儲,在淘寶得到了廣泛使用。後來Tair也做了一個持久化版本,思路基本與新浪MemcacheDB一致。

分佈式數據庫篇

  支付寶公司在國內最早使用Greenplum數據庫,將數據倉庫從原來的Oracle RAC平臺遷移到Greenplum集羣。Greenplum強大的計算能力用來支持支付寶日益發展的業務需求。

  圖2 Greenplum數據引擎軟件

圖2 Greenplum數據引擎軟件

[1]

Greenplum數據引擎軟件專爲新一代數據倉庫所需的大規模數據和複雜查詢功能所設計,基於MPP(海量並行處理)和Shared-Nothing(完全無共享)架構,基於開源軟件和x86商用硬件設計(性價比更高)。

分佈式文件系統篇

  談到分佈式文件系統,不得不提的是Google的GFS。基於大量安裝有Linux操作系統的普通PC構成的集羣系統,整個集羣系統由一臺Master(通常有幾臺備份)和若干臺TrunkServer構成。GFS中文件備份成固定大小的Trunk分別存儲在不同的TrunkServer上,每個Trunk有多份(通常爲3份)拷貝,也存儲在不同的TrunkServer上。Master負責維護GFS中的 Metadata,即文件名及其Trunk信息。客戶端先從Master上得到文件的Metadata,根據要讀取的數據在文件中的位置與相應的TrunkServer通信,獲取文件數據。

  在Google的論文發表後,就誕生了Hadoop。截至今日,Hadoop被很多中國最大互聯網公司所追捧,百度的搜索日誌分析,騰訊、淘寶和支付寶的數據倉庫都可以看到Hadoop的身影

  引自Facebook工程師的Hive與Hadoop關係圖

引自Facebook工程師的Hive與Hadoop關係圖

[2]

  Hadoop具備低廉的硬件成本、開源的軟件體系、較強的靈活性、允許用戶自己修改代碼等特點,同時能支持海量數據存儲和計算任務。

  Hive是一個基於Hadoop的數據倉庫平臺,將轉化爲相應的MapReduce程序基於Hadoop執行。通過Hive,開發人員可以方便地進行ETL開發。

  如圖所示,引用一張Facebook工程師做的Hive和Hadoop的關係圖。

編輯本段NoSQL篇

  隨着數據量增長,越來越多的人關注NoSQL,特別是2010年下半年,Facebook選擇HBase來做實時消息存儲系統,替換原來開發的Cassandra系統。這使得很多人開始關注HBase。Facebook選擇HBase是基於短期小批量臨時數據和長期增長的很少被訪問到的數據這兩個需求來考慮的。

  HBase是一個高可靠性、高性能、面向列、可伸縮的分佈式存儲系統,利用HBase技術可在廉價PC Server上搭建大規模結構化存儲集羣。HBase是BigTable的開源實現,使用HDFS作爲其文件存儲系統。Google運行MapReduce來處理BigTable中的海量數據,HBase同樣利用MapReduce來處理HBase中的海量數據;BigTable利用Chubby作爲協同服務,HBase則利用Zookeeper作爲對應。

編輯本段總結

  近來NoSQL數據庫的使用越來越普及,幾乎所有的大型互聯網公司都在這個領域進行着實踐和探索。在享受了這類數據庫與生俱來的擴展性、容錯性、高讀寫吞吐外(儘管各主流NoSQL仍在不斷完善中),越來越多的實際需

  圖4 線上應用系統與數據平臺的無縫融入

圖4 線上應用系統與數據平臺的無縫融入

[3]

求把人們帶到了NoSQL並不擅長的其他領域,比如搜索、準實時統計分析、簡單事務等。實踐中一般會在NoSQL的外圍組合一些其他技術形成一個整體解決方案

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章