午夜亚洲国产日本电影一区二区三区,九九久久99综合一区二区,国产一级毛片视频,草莓视频在线观看精品最新

加急見(jiàn)刊

分析:如何建立高效的企業(yè)大數(shù)據(jù)平臺(tái)

佚名

()要建立一個(gè)大數(shù)據(jù)系統(tǒng),我們需要從數(shù)據(jù)流的源頭跟蹤到最后有價(jià)值的輸出,并在現(xiàn)有的Hadoop和大數(shù)據(jù)生態(tài)圈內(nèi)根據(jù)實(shí)際需求挑選并整合各部分合適的組件來(lái)構(gòu)建一個(gè)能夠支撐多種查詢(xún)和分析功能的系統(tǒng)平臺(tái)。這其中既包括了對(duì)數(shù)據(jù)存儲(chǔ)的選擇,也涵蓋了數(shù)據(jù)線上和線下處理分離等方面的思考和權(quán)衡。此外,沒(méi)有任何一個(gè)引入大數(shù)據(jù)解決方案的商業(yè)應(yīng)用在生產(chǎn)環(huán)境上承擔(dān)的起安全隱患。

一、計(jì)算框架篇

大數(shù)據(jù)的價(jià)值

只有在能指導(dǎo)人們做出有價(jià)值的決定時(shí),數(shù)據(jù)才能體現(xiàn)其自身的價(jià)值。因此,大數(shù)據(jù)技術(shù)要服務(wù)于實(shí)際的用途,才是有意義的。一般來(lái)說(shuō),大數(shù)據(jù)可以從以下三個(gè)方面指導(dǎo)人們做出有價(jià)值的決定:

1、報(bào)表生成(比如根據(jù)用戶(hù)歷史點(diǎn)擊行為的跟蹤和綜合分析、應(yīng)用程序活躍程度和用戶(hù)粘性計(jì)算等);

2、診斷分析(例如分析為何用戶(hù)粘性下降、根據(jù)日志分析系統(tǒng)為何性能下降、垃圾郵件以及病毒的特征檢測(cè)等);

3、決策(例如個(gè)性化新聞閱讀或歌曲推薦、預(yù)測(cè)增加哪些功能能增加用戶(hù)粘性、幫助廣告主進(jìn)行廣告精準(zhǔn)投放、設(shè)定垃圾郵件和病毒攔截策略等)。

進(jìn)一步來(lái)看,大數(shù)據(jù)技術(shù)從以下三個(gè)方面解決了傳統(tǒng)技術(shù)難以達(dá)成的目標(biāo):

在歷史數(shù)據(jù)上的低延遲(交互式)查詢(xún),目標(biāo)是加快決策過(guò)程和時(shí)間,例如分析一個(gè)站點(diǎn)為何變緩慢并嘗試修復(fù)它;

在實(shí)時(shí)數(shù)據(jù)上的低延遲查詢(xún),目的是幫助用戶(hù)和應(yīng)用程序在實(shí)時(shí)數(shù)據(jù)上做出決策,例如實(shí)時(shí)檢測(cè)并阻攔病毒蠕蟲(chóng)(一個(gè)病毒蠕蟲(chóng)可以在1.3秒內(nèi)攻擊1百萬(wàn)臺(tái)主機(jī));

更加精細(xì)高級(jí)的數(shù)據(jù)處理算法,這可以幫助用戶(hù)做出“更好”的決策,例如圖數(shù)據(jù)處理、異常點(diǎn)檢測(cè)、趨勢(shì)分析及其他機(jī)器學(xué)習(xí)算法。

蛋糕模式

從將數(shù)據(jù)轉(zhuǎn)換成價(jià)值的角度來(lái)說(shuō),在Hadoop生態(tài)圈十年蓬勃成長(zhǎng)的過(guò)程中,YARN和Spark這二者可以算得上是里程碑事件。Yarn的出現(xiàn)使得集群資源管理和數(shù)據(jù)處理流水線分離,大大革新并推動(dòng)了大數(shù)據(jù)應(yīng)用層面各種框架的發(fā)展(SQLonHadoop框架,流數(shù)據(jù),圖數(shù)據(jù),機(jī)器學(xué)習(xí))。

它使得用戶(hù)不再受到MapReduce開(kāi)發(fā)模式的約束,而是可以創(chuàng)建種類(lèi)更為豐富的分布式應(yīng)用程序,并讓各類(lèi)應(yīng)用程序運(yùn)行在統(tǒng)一的架構(gòu)上,消除了為其他框架維護(hù)獨(dú)有資源的開(kāi)銷(xiāo)。就好比一個(gè)多層蛋糕,下面兩層是HDFS和Yarn,而MapReduce就只是蛋糕上層的一根蠟燭而已,在蛋糕上還能插各式各樣的蠟燭。

在這一架構(gòu)體系中,總體數(shù)據(jù)處理分析作業(yè)分三塊(圖2),在HBase上做交互式查詢(xún)(ApachePhoenix,ClouderaImpala等),在歷史數(shù)據(jù)集上編寫(xiě)MapReduce程序抑或利用Hive等做批處理業(yè)務(wù),另外對(duì)于實(shí)時(shí)流數(shù)據(jù)分析ApacheStorm則會(huì)是一種標(biāo)準(zhǔn)選擇方案。

雖然Yarn的出現(xiàn)極大地豐富了Hadoop生態(tài)圈的應(yīng)用場(chǎng)景,但仍存有兩個(gè)顯而易見(jiàn)的挑戰(zhàn):一是在一個(gè)平臺(tái)上需要維護(hù)三個(gè)開(kāi)發(fā)堆棧;二是在不同框架內(nèi)很難共享數(shù)據(jù),比如很難在一個(gè)框架內(nèi)對(duì)流數(shù)據(jù)做交互式查詢(xún)。這也意味著我們需要一個(gè)更為統(tǒng)一和支持更好抽象的計(jì)算框架的出現(xiàn)。

一統(tǒng)江湖Spark的出現(xiàn)使得批處理任務(wù),交互式查詢(xún),實(shí)時(shí)流數(shù)據(jù)處理被整合到一個(gè)統(tǒng)一的框架內(nèi),同時(shí)Spark和現(xiàn)有的開(kāi)源生態(tài)系統(tǒng)也能夠很好地兼容(Hadoop,HDFS,Yarn,Hive,F(xiàn)lume)。通過(guò)啟用內(nèi)存分布數(shù)據(jù)集,優(yōu)化迭代工作負(fù)載,用戶(hù)能夠更簡(jiǎn)單地操作數(shù)據(jù),并在此基礎(chǔ)上開(kāi)發(fā)更為精細(xì)的算法,如機(jī)器學(xué)習(xí)和圖算法等。

有三個(gè)最主要的原因促使Spark目前成為了時(shí)下最火的大數(shù)據(jù)開(kāi)源社區(qū)(擁有超過(guò)來(lái)自200多個(gè)公司的800多個(gè)contributors):

1、Spark可以擴(kuò)展部署到超過(guò)8000節(jié)點(diǎn)并處理PB級(jí)別的數(shù)據(jù),同時(shí)也提供了很多不錯(cuò)的工具供應(yīng)用開(kāi)發(fā)者進(jìn)行管理和部署;

2、Spark提供了一個(gè)交互式shell供開(kāi)發(fā)者可以用Scala或者Python即時(shí)性試驗(yàn)不同的功能;

3、Spark提供了很多內(nèi)置函數(shù)使得開(kāi)發(fā)者能夠比較容易地寫(xiě)出低耦合的并且能夠并發(fā)執(zhí)行的代碼,這樣開(kāi)發(fā)人員就更能集中精力地為用戶(hù)提供更多的業(yè)務(wù)功能而不是花費(fèi)時(shí)間在優(yōu)化并行化代碼之上。

當(dāng)然Spark也和當(dāng)年的MapReduce一樣不是萬(wàn)靈藥,比如對(duì)實(shí)時(shí)性要求很高的流數(shù)據(jù)處理上ApacheStorm還是被作為主流選擇,因?yàn)镾parkStreaming實(shí)際上是microbatch(將一個(gè)流數(shù)據(jù)按時(shí)間片切成batch,每個(gè)batch提交一個(gè)job)而不是事件觸發(fā)實(shí)時(shí)系統(tǒng),所以雖然支持者們認(rèn)為microbatch在系統(tǒng)延時(shí)性上貢獻(xiàn)并不多,但在生產(chǎn)環(huán)境中和ApacheStorm相比還不是特別能滿(mǎn)足對(duì)低延時(shí)要求很高的應(yīng)用場(chǎng)景。

比如在實(shí)踐過(guò)程中,如果統(tǒng)計(jì)每條消息的平均處理時(shí)間,很容易達(dá)到毫秒級(jí)別,但一旦統(tǒng)計(jì)類(lèi)似serviceassurance(確保某條消息在毫秒基本能被處理完成)的指標(biāo),系統(tǒng)的瓶頸有時(shí)還是不能避免。

但同時(shí)我們不能不注意到,在許多用例當(dāng)中,與流數(shù)據(jù)的交互以及和靜態(tài)數(shù)據(jù)集的結(jié)合是很有必要的,例如我們需要在靜態(tài)數(shù)據(jù)集上進(jìn)行分類(lèi)器的模型計(jì)算,并在已有分類(lèi)器模型的基礎(chǔ)上,對(duì)實(shí)時(shí)進(jìn)入系統(tǒng)的流數(shù)據(jù)進(jìn)行交互計(jì)算來(lái)判定類(lèi)別。

由于Spark的系統(tǒng)設(shè)計(jì)對(duì)各類(lèi)工作(批處理、流處理以及交互式工作)進(jìn)行了一個(gè)共有抽象,并且生態(tài)圈內(nèi)延伸出了許多豐富的庫(kù)(MLlib機(jī)器學(xué)習(xí)庫(kù)、SQL語(yǔ)言API、GraphX),使得用戶(hù)可以在每一批流數(shù)據(jù)上進(jìn)行靈活的Spark相關(guān)操作,在開(kāi)發(fā)上提供了許多便利。

Spark的成熟使得Hadoop生態(tài)圈在短短一年之間發(fā)生了翻天覆地的變化,Cloudera和Hortonworks紛紛加入了Spark陣營(yíng),而Hadoop項(xiàng)目群中除了Yarn之外已經(jīng)沒(méi)有項(xiàng)目是必須的了(雖然Mesos已在一些場(chǎng)合替代了Yarn),因?yàn)榫瓦BHDFS,Spark都可以不依賴(lài)。但很多時(shí)候我們?nèi)匀恍枰馡mpala這樣的依賴(lài)分布式文件系統(tǒng)的MPP解決方案并利用Hive管理文件到表的映射,因此Hadoop傳統(tǒng)生態(tài)圈依然有很強(qiáng)的生命力。

另外在這里簡(jiǎn)要對(duì)比一下交互式分析任務(wù)中各類(lèi)SQLonHadoop框架,因?yàn)檫@也是我們?cè)趯?shí)際項(xiàng)目實(shí)施中經(jīng)常遇到的問(wèn)題。我們主要將注意力集中在SparkSQL,Impala和HiveonTez上,其中SparkSQL是三者之中歷史最短的,論文發(fā)表在15年的SIGMOD會(huì)議上,原文對(duì)比了數(shù)據(jù)倉(cāng)庫(kù)上不同類(lèi)型的查詢(xún)?cè)赟hark(Spark最早對(duì)SQL接口提供的支持)、SparkSQL和Impala上的性能比較。

也就是說(shuō),雖然SparkSQL在Shark的基礎(chǔ)上利用Catalystoptimizer在代碼生成上做了很多優(yōu)化,但總體性能還是比不上Impala,尤其是當(dāng)做join操作的時(shí)候,Impala可以利用“predicatepushdown”更早對(duì)表進(jìn)行選擇操作從而提高性能。

不過(guò)SparkSQL的Catalystoptimizer一直在持續(xù)優(yōu)化中,相信未來(lái)會(huì)有更多更好的進(jìn)展。Cloudera的Benchmark評(píng)測(cè)中Impala一直比其他SQLonHadoop框架性能更加優(yōu)越,但同時(shí)Hortonworks評(píng)測(cè)則指出雖然單個(gè)數(shù)據(jù)倉(cāng)庫(kù)查詢(xún)Impala可以在很短的時(shí)間內(nèi)完成,但是一旦并發(fā)多個(gè)查詢(xún)HiveonTez的優(yōu)勢(shì)就展示出來(lái)。另外HiveonTez在SQL表達(dá)能力也要比Impala更強(qiáng)(主要是因?yàn)镮mpala的嵌套存儲(chǔ)模型導(dǎo)致的),因此根據(jù)不同的場(chǎng)景選取不同的解決方案是很有必要的。

各領(lǐng)風(fēng)騷抑或代有才人出?

近一年比較吸引人眼球的ApacheFlink(與Spark一樣已有5年歷史,前身已經(jīng)是柏林理工大學(xué)一個(gè)研究性項(xiàng)目,被其擁躉推崇為繼MapReduce,Yarn,Spark之后第四代大數(shù)據(jù)分析處理框架)。與Spark相反,F(xiàn)link是一個(gè)真正的實(shí)時(shí)流數(shù)據(jù)處理系統(tǒng),它將批處理看作是流數(shù)據(jù)的特例,同Spark一樣它也在嘗試建立一個(gè)統(tǒng)一的平臺(tái)運(yùn)行批量,流數(shù)據(jù),交互式作業(yè)以及機(jī)器學(xué)習(xí),圖算法等應(yīng)用。

Flink有一些設(shè)計(jì)思路是明顯區(qū)別于Spark的,一個(gè)典型的例子是內(nèi)存管理,F(xiàn)link從一開(kāi)始就堅(jiān)持自己精確的控制內(nèi)存使用并且直接操作二進(jìn)制數(shù)據(jù),而Spark一直到1.5版本都還是試用java的內(nèi)存管理來(lái)做數(shù)據(jù)緩存,這也導(dǎo)致了Spark很容易遭受OOM以及JVMGC帶來(lái)的性能損失。

但是從另外一個(gè)角度來(lái)說(shuō),Spark中的RDD在運(yùn)行時(shí)被存成javaobjects的設(shè)計(jì)模式也大大降低了用戶(hù)編程設(shè)計(jì)門(mén)檻,同時(shí)隨著Tungsten項(xiàng)目的引入,Spark現(xiàn)在也逐漸轉(zhuǎn)向自身的內(nèi)存管理,具體表現(xiàn)為Spark生態(tài)圈內(nèi)從傳統(tǒng)的圍繞RDD(分布式j(luò)ava對(duì)象集合)為核心的開(kāi)發(fā)逐漸轉(zhuǎn)向以DataFrame(分布式行對(duì)象集合)為核心。

總的來(lái)說(shuō),這兩個(gè)生態(tài)圈目前都在互相學(xué)習(xí),F(xiàn)link的設(shè)計(jì)基因更為超前一些,但Spark社區(qū)活躍度大很多,發(fā)展到目前毫無(wú)疑問(wèn)是更為成熟的選擇,比如對(duì)數(shù)據(jù)源的支持(HBase,Cassandra,Parquet,JSON,ORC)更為豐富以及更為統(tǒng)一簡(jiǎn)潔的計(jì)算表示。另一方面,ApacheFlink作為一個(gè)由歐洲大陸發(fā)起的項(xiàng)目,目前已經(jīng)擁有來(lái)自北美、歐洲以及亞洲的許多貢獻(xiàn)者,這是否能夠一改歐洲在開(kāi)源世界中一貫的被動(dòng)角色,我們將在未來(lái)拭目以待。

二、NoSQL數(shù)據(jù)庫(kù)篇

NoSQL數(shù)據(jù)庫(kù)在主流選擇上依舊集中在MongoDB,HBase和Cassandra這三者之間。在所有的NoSQL選擇中,用C++編寫(xiě)的MongoDB幾乎應(yīng)該是開(kāi)發(fā)者最快也最易部署的選擇。MongoDB是一個(gè)面向文檔的數(shù)據(jù)庫(kù),每個(gè)文檔/記錄/數(shù)據(jù)(包括爬取的網(wǎng)頁(yè)數(shù)據(jù)及其他大型對(duì)象如視頻等)是以一種BSON(BinaryJSON)的二進(jìn)制數(shù)據(jù)格式存儲(chǔ),這使得MongoDB并不需要事先定義任何模式,也就是模式自由(可以把完全不同結(jié)構(gòu)的記錄放在同一個(gè)數(shù)據(jù)庫(kù)里)。

MongoDB對(duì)于完全索引的支持在應(yīng)用上是很方便的,同時(shí)也具備一般NoSQL分布式數(shù)據(jù)庫(kù)中可擴(kuò)展,支持復(fù)制和故障恢復(fù)等功能。MongoDB一般應(yīng)用于高度伸縮性的緩存及大尺寸的JSON數(shù)據(jù)存儲(chǔ)業(yè)務(wù)中,但不能執(zhí)行“JOIN”操作,而且數(shù)據(jù)占用空間也比較大,最被用戶(hù)詬病的就是由于MongoDB提供的是數(shù)據(jù)庫(kù)級(jí)鎖粒度導(dǎo)致在一些情況下建索引操作會(huì)引發(fā)整個(gè)數(shù)據(jù)庫(kù)阻塞。一般來(lái)說(shuō),MongoDB完全可以滿(mǎn)足一些快速迭代的中小型項(xiàng)目的需求。

下面來(lái)主要談?wù)凜assandra和HBase之間的比較選擇。Cassandra和HBase有著截然不同的基因血統(tǒng)。HBase和其底層依賴(lài)的系統(tǒng)架構(gòu)源自于著名的GoogleFileSystem(發(fā)表于2003年)和GoogleBigTable設(shè)計(jì)(發(fā)表于2006年),其克服了HDFS注重吞吐量卻犧牲I/O的缺點(diǎn),提供了一個(gè)存儲(chǔ)中間層使得用戶(hù)或者應(yīng)用程序可以隨機(jī)讀寫(xiě)數(shù)據(jù)。

具體來(lái)說(shuō),HBase的更新和刪除操作實(shí)際上是先發(fā)生在內(nèi)存MemStore中,當(dāng)MemStore滿(mǎn)了以后會(huì)Flush到StoreFile,之后當(dāng)StoreFile文件數(shù)量增長(zhǎng)到一定閾值后會(huì)觸發(fā)Compact合并操作,因此HBase的更新操作其實(shí)是不斷追加的操作,而最終所有更新和刪除數(shù)據(jù)的持久化操作都是在之后Compact過(guò)程中進(jìn)行的。

這使得應(yīng)用程序在向內(nèi)存MemStore寫(xiě)入數(shù)據(jù)后,所做的修改馬上就能得到反映,用戶(hù)讀到的數(shù)據(jù)絕不會(huì)是陳舊的數(shù)據(jù),保證了I/O高性能和數(shù)據(jù)完全一致性;另一方面來(lái)說(shuō),HBase基于Hadoop生態(tài)系統(tǒng)的基因就已經(jīng)決定了他自身的高度可擴(kuò)展性、容錯(cuò)性。

在數(shù)據(jù)模型上,Cassandra和HBase類(lèi)似實(shí)現(xiàn)了一個(gè)key-value提供面向列式存儲(chǔ)服務(wù),其系統(tǒng)設(shè)計(jì)參考了AmazonDynamo(發(fā)表于2007年)分布式哈希(DHT)的P2P結(jié)構(gòu)(實(shí)際上大部分Cassandra的初始工作都是由兩位從Amazon的Dynamo組跳槽到Facebook的工程師完成),同樣具有很高的可擴(kuò)展性和容錯(cuò)性等特點(diǎn)。

除此之外,相對(duì)HBase的主從結(jié)構(gòu),Cassandra去中心化的P2P結(jié)構(gòu)能夠更簡(jiǎn)單地部署和維護(hù),比如增加一臺(tái)機(jī)器只需告知Cassandra系統(tǒng)新節(jié)點(diǎn)在哪,剩下的交給系統(tǒng)完成就行了。同時(shí),Cassandra對(duì)多數(shù)據(jù)中心的支持也更好,如果需要在多個(gè)數(shù)據(jù)中心進(jìn)行數(shù)據(jù)遷移Cassandra會(huì)是一個(gè)更優(yōu)的選擇。

EricBrewer教授提出的經(jīng)典CAP理論認(rèn)為任何基于網(wǎng)絡(luò)的數(shù)據(jù)共享系統(tǒng),最多只能滿(mǎn)足數(shù)據(jù)一致性、可用性、分區(qū)容忍性三要素中的兩個(gè)要素。實(shí)際分布式系統(tǒng)的設(shè)計(jì)過(guò)程往往都是在一致性與可用性上進(jìn)行取舍,相比于HBase數(shù)據(jù)完全一致性的系統(tǒng)設(shè)計(jì),Cassandra選擇了在優(yōu)先考慮數(shù)據(jù)可用性的基礎(chǔ)上讓用戶(hù)自己根據(jù)應(yīng)用程序需求決定系統(tǒng)一致性級(jí)別。

比如:用戶(hù)可以配置QUONUM參數(shù)來(lái)決定系統(tǒng)需要幾個(gè)節(jié)點(diǎn)返回?cái)?shù)據(jù)才能向客戶(hù)端做出響應(yīng),ONE指只要有一個(gè)節(jié)點(diǎn)返回?cái)?shù)據(jù)就可以對(duì)客戶(hù)端做出響應(yīng),ALL指等于數(shù)據(jù)復(fù)制份數(shù)的所有節(jié)點(diǎn)都返回結(jié)果才能向客戶(hù)端做出響應(yīng),對(duì)于數(shù)據(jù)一致性要求不是特別高的可以選擇ONE,它是最快的一種方式。

從基因和發(fā)展歷史上來(lái)說(shuō),HBase更適合用做數(shù)據(jù)倉(cāng)庫(kù)和大規(guī)模數(shù)據(jù)處理與分析(比如對(duì)網(wǎng)頁(yè)數(shù)據(jù)建立索引),而Cassandra則更適合用作實(shí)時(shí)事務(wù)和交互式查詢(xún)服務(wù)。Cassandra在國(guó)外市場(chǎng)占有比例和發(fā)展要遠(yuǎn)比國(guó)內(nèi)紅火,在不少權(quán)威測(cè)評(píng)網(wǎng)站上排名都已經(jīng)超過(guò)了HBase。目前ApacheCassandra的商業(yè)化版本主要由軟件公司DataStax進(jìn)行開(kāi)發(fā)和銷(xiāo)售推廣。另外還有一些NoSQL分布式數(shù)據(jù)庫(kù)如Riak,CouchDB也都在各自支持的廠商推動(dòng)下取得了不錯(cuò)的發(fā)展。

雖然我們也考慮到了HBase在實(shí)際應(yīng)用中的不便之處比如對(duì)二級(jí)索引的支持程度不夠(只支持通過(guò)單個(gè)行鍵訪問(wèn),通過(guò)行鍵的范圍查詢(xún),全表掃描),不過(guò)在明略的大數(shù)據(jù)基礎(chǔ)平臺(tái)上,目前整合的是依然是HBase。

理由也很簡(jiǎn)單,HBase出身就與Hadoop的生態(tài)系統(tǒng)緊密集成,其能夠很容易與其他SQLonHadoop框架(ClouderaImpala,ApachePhoenix,orHiveonTez)進(jìn)行整合,而不需要重新部署一套分布式數(shù)據(jù)庫(kù)系統(tǒng),而且可以很方便地將同樣的數(shù)據(jù)內(nèi)容在同一個(gè)生態(tài)系統(tǒng)中根據(jù)不同框架需要來(lái)變換存儲(chǔ)格式(比如存儲(chǔ)成Hive表或者Parquet格式)。

我們?cè)诤芏囗?xiàng)目中都有需要用到多種SQLonHadoop框架,來(lái)應(yīng)對(duì)不同應(yīng)用場(chǎng)景的情況,也體會(huì)到了在同一生態(tài)系統(tǒng)下部署多種框架的簡(jiǎn)便性。但同時(shí)我們也遇到了一些問(wèn)題,因?yàn)镠Base項(xiàng)目本身與HDFS和Zookeeper系統(tǒng)分別是由不同開(kāi)源團(tuán)隊(duì)進(jìn)行維護(hù)的,所以在系統(tǒng)整合時(shí)我們需要先對(duì)HBase所依賴(lài)的其他模塊進(jìn)行設(shè)置再對(duì)HBase進(jìn)行配置,在一定程度上降低了系統(tǒng)維護(hù)的友好性。

目前我們也已經(jīng)在考慮將Cassandra應(yīng)用到一些新的客戶(hù)項(xiàng)目中,因?yàn)楹芏嗥髽I(yè)級(jí)的應(yīng)用都需要將線上線下數(shù)據(jù)庫(kù)進(jìn)行分離,HBase更適合存儲(chǔ)離線處理的結(jié)果和數(shù)據(jù)倉(cāng)庫(kù),而更適合用作實(shí)時(shí)事務(wù)和并發(fā)交互性能更好的Cassandra作為線上服務(wù)數(shù)據(jù)庫(kù)會(huì)是一種很好的選擇。

三、大數(shù)據(jù)安全篇

隨著越來(lái)越多各式各樣的數(shù)據(jù)被存儲(chǔ)在大數(shù)據(jù)系統(tǒng)中,任何對(duì)企業(yè)級(jí)數(shù)據(jù)的破壞都是災(zāi)難性的,從侵犯隱私到監(jiān)管違規(guī),甚至?xí)斐晒酒放频钠茐牟⒆罱K影響到股東收益。給大數(shù)據(jù)系統(tǒng)提供全面且有效的安全解決方案的需求已經(jīng)十分迫切:

大數(shù)據(jù)系統(tǒng)存儲(chǔ)著許多重要且敏感的數(shù)據(jù),這些數(shù)據(jù)是企業(yè)長(zhǎng)久以來(lái)的財(cái)富

與大數(shù)據(jù)系統(tǒng)互動(dòng)的外部系統(tǒng)是動(dòng)態(tài)變化的,這會(huì)給系統(tǒng)引入新的安全隱患

在一個(gè)企業(yè)的內(nèi)部,不同BusinessUnits會(huì)用不同的方式與大數(shù)據(jù)系統(tǒng)進(jìn)行交互,比如線上的系統(tǒng)會(huì)實(shí)時(shí)給集群推送數(shù)據(jù)、數(shù)據(jù)科學(xué)家團(tuán)隊(duì)則需要分析存儲(chǔ)在數(shù)據(jù)倉(cāng)庫(kù)內(nèi)的歷史數(shù)據(jù)、運(yùn)維團(tuán)隊(duì)則會(huì)需要對(duì)大數(shù)據(jù)系統(tǒng)擁有管理權(quán)限。

因此為了保護(hù)公司業(yè)務(wù)、客戶(hù)、財(cái)務(wù)和名譽(yù)免于被侵害,大數(shù)據(jù)系統(tǒng)運(yùn)維團(tuán)隊(duì)必須將系統(tǒng)安全高度提高到和其他遺留系統(tǒng)一樣的級(jí)別。同時(shí)大數(shù)據(jù)系統(tǒng)并不意味著引入大的安全隱患,通過(guò)精細(xì)完整的設(shè)計(jì),仍然能夠把一些傳統(tǒng)的系統(tǒng)安全解決方案對(duì)接到最新的大數(shù)據(jù)集群系統(tǒng)中。

一般來(lái)說(shuō),一個(gè)完整的企業(yè)級(jí)安全框架包括五個(gè)部分:

Administration:大數(shù)據(jù)集群系統(tǒng)的集中式管理,設(shè)定全局一致的安全策略

Authentication:對(duì)用戶(hù)和系統(tǒng)的認(rèn)證

Authorization:授權(quán)個(gè)人用戶(hù)和組對(duì)數(shù)據(jù)的訪問(wèn)權(quán)限

Audit:維護(hù)數(shù)據(jù)訪問(wèn)的日志記錄

DataProtection:數(shù)據(jù)脫敏和加密以達(dá)到保護(hù)數(shù)據(jù)的目的

系統(tǒng)管理員要能夠提供覆蓋以上五個(gè)部分的企業(yè)級(jí)安全基礎(chǔ)設(shè)施,否則任何一環(huán)的缺失都可能給整個(gè)系統(tǒng)引入安全性風(fēng)險(xiǎn)。

在大數(shù)據(jù)系統(tǒng)安全集中式管理平臺(tái)這塊,由Hortonworks推出的開(kāi)源項(xiàng)目ApacheRanger就可以十分全面地為用戶(hù)提供Hadoop生態(tài)圈的集中安全策略的管理,并解決授權(quán)(Authorization)和審計(jì)(Audit)。例如,運(yùn)維管理員可以輕松地為個(gè)人用戶(hù)和組對(duì)文件、數(shù)據(jù)等的訪問(wèn)策略,然后審計(jì)對(duì)數(shù)據(jù)源的訪問(wèn)。

與Ranger提供相似功能的還有Cloudera推出的ApacheSentry項(xiàng)目,相比較而言Ranger的功能會(huì)更全面一些。

而在認(rèn)證(Authentication)方面,一種普遍采用的解決方案是將基于Kerberos的認(rèn)證方案對(duì)接到企業(yè)內(nèi)部的LDAP環(huán)境中,Kerberos也是唯一為Hadoop全面實(shí)施的驗(yàn)證技術(shù)。

另外值得一提的是ApacheKnoxGateway項(xiàng)目,與Ranger提高集群內(nèi)部組件以及用戶(hù)互相訪問(wèn)的安全不同,Knox提供的是Hadoop集群與外界的唯一交互接口,也就是說(shuō)所有與集群交互的RESTAPI都通過(guò)Knox處理。這樣,Knox就給大數(shù)據(jù)系統(tǒng)提供了一個(gè)很好的基于邊緣的安全(perimeter-basedsecurity)。

基于以上提到的五個(gè)安全指標(biāo)和Hadoop生態(tài)圈安全相關(guān)的開(kāi)源項(xiàng)目,已經(jīng)足已證明基于Hadoop的大數(shù)據(jù)平臺(tái)我們是能夠構(gòu)建一個(gè)集中、一致、全面且有效的安全解決方案。

四、總結(jié)

本文主要介紹了如何將Hadoop和大數(shù)據(jù)生態(tài)圈的各部分重要組件有機(jī)地聯(lián)系在一起去創(chuàng)建一個(gè)能夠支撐批處理、交互式和實(shí)時(shí)分析工作的大數(shù)據(jù)平臺(tái)系統(tǒng)。其中,我們重點(diǎn)嘗試從計(jì)算框架、NoSQL數(shù)據(jù)庫(kù)以及大數(shù)據(jù)平臺(tái)安全這三方面分析了在不同的應(yīng)用場(chǎng)景中相應(yīng)的技術(shù)選型以及需要考慮到的權(quán)衡點(diǎn),希望讓大家對(duì)如何建立一個(gè)完整可用的安全大數(shù)據(jù)平臺(tái)能有一個(gè)直觀的認(rèn)識(shí)。(來(lái)源:大數(shù)據(jù)雜談 文/江金陵)

下載