大數(shù)據(jù)技術(shù)綜述

原文地址: 程序員

Big Data(大數(shù)據(jù)技術(shù))是近來(lái)的一個(gè)技術(shù)熱點(diǎn),但從名字就能判斷它并不是什么新詞。畢竟,大是一個(gè)相對(duì)概念。歷史上,數(shù)據(jù)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù)、數(shù)據(jù)集市等信息管理領(lǐng)域的技術(shù),很大程度上也是為了解決大規(guī)模數(shù)據(jù)的問(wèn)題。被譽(yù)為數(shù)據(jù)倉(cāng)庫(kù)之父的Bill Inmon早在20世紀(jì)90年代就經(jīng)常將Big Data掛在嘴邊了。

然而,Big Data作為一個(gè)專有名詞成為熱點(diǎn),主要應(yīng)歸功于近年來(lái)互聯(lián)網(wǎng)、云計(jì)算、移動(dòng)和物聯(lián)網(wǎng)的迅猛發(fā)展。無(wú)所不在的移動(dòng)設(shè)備、RFID、無(wú)線傳感器每分每秒都在產(chǎn)生數(shù)據(jù),數(shù)以億計(jì)用戶的互聯(lián)網(wǎng)服務(wù)時(shí)時(shí)刻刻在產(chǎn)生巨量的交互……要處理的數(shù)據(jù)量實(shí)在是太大、增長(zhǎng)太快了,而業(yè)務(wù)需求和競(jìng)爭(zhēng)壓力對(duì)數(shù)據(jù)處理的實(shí)時(shí)性、有效性又提出了更高要求,傳統(tǒng)的常規(guī)技術(shù)手段根本無(wú)法應(yīng)付。

在這種情況下,技術(shù)人員紛紛研發(fā)和采用了一批新技術(shù),主要包括分布式緩存、基于MPP的分布式數(shù)據(jù)庫(kù)、分布式文件系統(tǒng)、各種NoSQL分布式存儲(chǔ)方案等。

10年前,Eric Brewer提出著名的CAP定理,指出:一個(gè)分布式系統(tǒng)不可能滿足一致性、可用性和分區(qū)容忍性這三個(gè)需求,最多只能同時(shí)滿足兩個(gè)。系統(tǒng)的關(guān)注點(diǎn)不同,采用的策略也不一樣。只有真正理解了系統(tǒng)的需求,才有可能利用好CAP定理。

架構(gòu)師一般有兩個(gè)方向來(lái)利用CAP理論。

  • Key-Value存儲(chǔ),如Amazon Dynamo等,可以根據(jù)CAP理論靈活選擇不同傾向的數(shù)據(jù)庫(kù)產(chǎn)品。
  • 領(lǐng)域模型+分布式緩存+存儲(chǔ),可根據(jù)CAP理論結(jié)合自己的項(xiàng)目定制靈活的分布式方案,但難度較高。

對(duì)大型網(wǎng)站,可用性與分區(qū)容忍性優(yōu)先級(jí)要高于數(shù)據(jù)一致性,一般會(huì)盡量朝著A、P的方向設(shè)計(jì),然后通過(guò)其他手段保證對(duì)于一致性的商務(wù)需求。架構(gòu)設(shè)計(jì)師不要將精力浪費(fèi)在如何設(shè)計(jì)能滿足三者的完美分布式系統(tǒng),而應(yīng)該懂得取舍。

不同的數(shù)據(jù)對(duì)一致性的要求是不同的。SNS網(wǎng)站可以容忍相對(duì)較長(zhǎng)時(shí)間的不一致,而不影響交易和用戶體驗(yàn);而像支付寶這樣的交易和賬務(wù)數(shù)據(jù)則是非常敏感的,通常不能容忍超過(guò)秒級(jí)的不一致。

圖1 memcached構(gòu)成

Cache篇

緩存在Web開(kāi)發(fā)中運(yùn)用越來(lái)越廣泛,mem-cached是danga.com(運(yùn)營(yíng)LiveJournal的技術(shù)團(tuán)隊(duì))開(kāi)發(fā)的一套分布式內(nèi)存對(duì)象緩存系統(tǒng),用于在動(dòng)態(tài)系統(tǒng)中減少數(shù)據(jù)庫(kù)負(fù)載,提升性能。

memcached具有以下特點(diǎn):

協(xié)議簡(jiǎn)單;基于libevent的事件處理;內(nèi)置內(nèi)存存儲(chǔ)方式;memcached不互相通信的分布式。

memcached處理的原子是每一個(gè)(Key,Value)對(duì)(以下簡(jiǎn)稱KV對(duì)),Key會(huì)通過(guò)一個(gè)hash算法轉(zhuǎn)化成hash-Key,便于查找、對(duì)比以及做到盡可能的散列。同時(shí),memcached用的是一個(gè)二級(jí)散列,通過(guò)一張大hash表來(lái)維護(hù)。

memcached由兩個(gè)核心組件組成:服務(wù)端(ms)和客戶端(mc),在一個(gè)memcached的查詢中,ms先通過(guò)計(jì)算Key的hash值來(lái)確定KV對(duì)所處在的ms位置。當(dāng)ms確定后,mc就會(huì)發(fā)送一個(gè)查詢請(qǐng)求給對(duì)應(yīng)的ms,讓它來(lái)查找確切的數(shù)據(jù)。因?yàn)檫@之間沒(méi)有交互以及多播協(xié)議,所以 memcached交互帶給網(wǎng)絡(luò)的影響是最小化的。

MemcacheDB是一個(gè)分布式、Key-Value形式的持久存儲(chǔ)系統(tǒng)。它不是一個(gè)緩存組件,而是一個(gè)基于對(duì)象存取的、可靠的、快速的持久存儲(chǔ)引擎。協(xié)議與memcached一致(不完整),所以很多memcached客戶端都可以跟它連接。MemcacheDB采用Berkeley DB作為持久存儲(chǔ)組件,因此很多Berkeley DB的特性它都支持。

圖2 Greenplum數(shù)據(jù)引擎軟件

類似這樣的產(chǎn)品也很多,如淘寶Tair就是Key-Value結(jié)構(gòu)存儲(chǔ),在淘寶得到了廣泛使用。后來(lái)Tair也做了一個(gè)持久化版本,思路基本與新浪MemcacheDB一致。

分布式數(shù)據(jù)庫(kù)篇

支付寶公司在國(guó)內(nèi)最早使用Greenplum數(shù)據(jù)庫(kù),將數(shù)據(jù)倉(cāng)庫(kù)從原來(lái)的Oracle RAC平臺(tái)遷移到Greenplum集群。Greenplum強(qiáng)大的計(jì)算能力用來(lái)支持支付寶日益發(fā)展的業(yè)務(wù)需求。

Greenplum數(shù)據(jù)引擎軟件專為新一代數(shù)據(jù)倉(cāng)庫(kù)所需的大規(guī)模數(shù)據(jù)和復(fù)雜查詢功能所設(shè)計(jì),基于MPP(海量并行處理)和Shared-Nothing(完全無(wú)共享)架構(gòu),基于開(kāi)源軟件和x86商用硬件設(shè)計(jì)(性價(jià)比更高)。

分布式文件系統(tǒng)篇

談到分布式文件系統(tǒng),不得不提的是Google的GFS?;诖罅堪惭b有Linux操作系統(tǒng)的普通PC構(gòu)成的集群系統(tǒng),整個(gè)集群系統(tǒng)由一臺(tái) Master(通常有幾臺(tái)備份)和若干臺(tái)TrunkServer構(gòu)成。GFS中文件備份成固定大小的Trunk分別存儲(chǔ)在不同的TrunkServer 上,每個(gè)Trunk有多份(通常為3份)拷貝,也存儲(chǔ)在不同的TrunkServer上。Master負(fù)責(zé)維護(hù)GFS中的 Metadata,即文件名及其Trunk信息。客戶端先從Master上得到文件的Metadata,根據(jù)要讀取的數(shù)據(jù)在文件中的位置與相應(yīng)的 TrunkServer通信,獲取文件數(shù)據(jù)。

圖3 引自Facebook工程師的Hive與Hadoop關(guān)系圖

在Google的論文發(fā)表后,就誕生了Hadoop。截至今日,Hadoop被很多中國(guó)最大互聯(lián)網(wǎng)公司所追捧,百度的搜索日志分析,騰訊、淘寶和支付寶的數(shù)據(jù)倉(cāng)庫(kù)都可以看到Hadoop的身影。

Hadoop具備低廉的硬件成本、開(kāi)源的軟件體系、較強(qiáng)的靈活性、允許用戶自己修改代碼等特點(diǎn),同時(shí)能支持海量數(shù)據(jù)存儲(chǔ)和計(jì)算任務(wù)。

Hive是一個(gè)基于Hadoop的數(shù)據(jù)倉(cāng)庫(kù)平臺(tái),將轉(zhuǎn)化為相應(yīng)的MapReduce程序基于Hadoop執(zhí)行。通過(guò)Hive,開(kāi)發(fā)人員可以方便地進(jìn)行ETL開(kāi)發(fā)。

如圖3所示,引用一張F(tuán)acebook工程師做的Hive和Hadoop的關(guān)系圖。

NoSQL篇

隨著數(shù)據(jù)量增長(zhǎng),越來(lái)越多的人關(guān)注NoSQL,特別是2010年下半年,F(xiàn)acebook選擇HBase來(lái)做實(shí)時(shí)消息存儲(chǔ)系統(tǒng),替換原來(lái)開(kāi)發(fā)的 Cassandra系統(tǒng)。這使得很多人開(kāi)始關(guān)注HBase。Facebook選擇HBase是基于短期小批量臨時(shí)數(shù)據(jù)和長(zhǎng)期增長(zhǎng)的很少被訪問(wèn)到的數(shù)據(jù)這兩個(gè)需求來(lái)考慮的。

HBase是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng),利用HBase技術(shù)可在廉價(jià)PC Server上搭建大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群。HBase是BigTable的開(kāi)源實(shí)現(xiàn),使用HDFS作為其文件存儲(chǔ)系統(tǒng)。Google運(yùn)行 MapReduce來(lái)處理BigTable中的海量數(shù)據(jù),HBase同樣利用MapReduce來(lái)處理HBase中的海量數(shù)據(jù);BigTable利用 Chubby作為協(xié)同服務(wù),HBase則利用Zookeeper作為對(duì)應(yīng)。

圖4 線上應(yīng)用系統(tǒng)與數(shù)據(jù)平臺(tái)的無(wú)縫融入

總結(jié)篇

近來(lái)NoSQL數(shù)據(jù)庫(kù)的使用越來(lái)越普及,幾乎所有的大型互聯(lián)網(wǎng)公司都在這個(gè)領(lǐng)域進(jìn)行著實(shí)踐和探索。在享受了這類數(shù)據(jù)庫(kù)與生俱來(lái)的擴(kuò)展性、容錯(cuò)性、高讀寫(xiě)吞吐外(盡管各主流NoSQL仍在不斷完善中),越來(lái)越多的實(shí)際需求把人們帶到了NoSQL并不擅長(zhǎng)的其他領(lǐng)域,比如搜索、準(zhǔn)實(shí)時(shí)統(tǒng)計(jì)分析、簡(jiǎn)單事務(wù)等。實(shí)踐中一般會(huì)在NoSQL的外圍組合一些其他技術(shù)形成一個(gè)整體解決方案。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容