佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > 全面了解Facebook的大數(shù)據(jù)處理架構及應用的軟件

全面了解Facebook的大數(shù)據(jù)處理架構及應用的軟件

熱門標簽:服務外包 網(wǎng)站排名優(yōu)化 Linux服務器 地方門戶網(wǎng)站 AI電銷 鐵路電話系統(tǒng) 呼叫中心市場需求 百度競價排名

Facebook大數(shù)據(jù)技術架構的演進路線
  Facebook一直是大數(shù)據(jù)技術最積極的應用者,因為它擁有的數(shù)據(jù)量極其巨大,一份資料顯示2011年它擁有的壓縮數(shù)據(jù)已經(jīng)有25PB,未壓縮數(shù)據(jù)150PB,每天產(chǎn)生的未壓縮的新數(shù)據(jù)有400TB。在Facebook,大數(shù)據(jù)技術被廣泛應用在廣告、新聞源、消息/聊天、搜索、站點安全、特定分析、報告等各個領域。Facebook也是Apache大數(shù)據(jù)開源項目的最大貢獻者之一。Facebook是2007年前后正式轉向Hadoop計算框架,隨之它向Apache基金會貢獻了大名鼎鼎的Hive、ZooKeeper、Scribe、Cassandra等開源工具,當前Facebook的開源進程仍在積極推進著。Facebook大數(shù)據(jù)技術架構經(jīng)歷了三個演變階段。

    Facebook早期的大數(shù)據(jù)技術架構是建立在Hadoop、HBase、Hive、Scribe等開源工具基礎上的。日志數(shù)據(jù)流從HTTP服務器產(chǎn)生,通過日志收集系統(tǒng)Scribe耗費秒級時間傳送到共享存儲NFS文件系統(tǒng),然后通過小時級的Copier/Loader(即MapReduce作業(yè))將數(shù)據(jù)文件上傳到Hadoop。數(shù)據(jù)摘要通過每天例行的流水作業(yè)產(chǎn)生,它是基于Hive的類SQL語言開發(fā),結果會定期會更新到前端的Mysql服務器,以便通過OLTP工具產(chǎn)生報表。Hadoop集群節(jié)點有3000個,擴展性和容錯性方面的問題能夠很好地解決,但是早期系統(tǒng)的主要問題是整體的處理延遲較大,從日志產(chǎn)生起1~2天后才能得到最終的報表。

    Facebook當前的大數(shù)據(jù)技術架構是在早期架構基礎上對數(shù)據(jù)傳輸通道和數(shù)據(jù)處理系統(tǒng)進行了優(yōu)化,如圖所示,主要分為分布式日志系統(tǒng)Scribe、分布式存儲系統(tǒng)HDFS和HBase、分布式計算和分析系統(tǒng)(MapReduce、Puma和Hive)等。

其中,Scribe日志系統(tǒng)用于聚合來自大量HTTP服務器的日志數(shù)據(jù)。Thrift是Facebook提供的軟件框架,用于跨語言的服務開發(fā),能夠在C 、Java、PHP 、Python和Ruby等語言之間實現(xiàn)無縫的支持。采用Thrift RPC來調(diào)用Scribe日志收集服務進行日志數(shù)據(jù)匯總。Scribe Policy是日志流量和模型管理節(jié)點,將元數(shù)據(jù)傳送給Scribe客戶端和Scribe HDFS,采集的日志數(shù)據(jù)存儲在Scribe HDFS。Facebook對早期系統(tǒng)優(yōu)化后的數(shù)據(jù)通道稱為Data Freeway,能夠處理峰值9GB/s的數(shù)據(jù)并且端到端的延遲在10s以內(nèi),支持超過2500種的日志種類。Data Freeway主要包括4個組件,Scribe、Calligraphus、Continuous Copier和PTail。Scribe用于客戶端,負責通過Thrift RPC發(fā)送數(shù)據(jù);Calligraphus在中間層梳理數(shù)據(jù)并寫到HDFS,它提供了日志種類的管理,利用Zookeeper進行輔助;Continuous Copier將文件從一個HDFS拷貝到另一個HDFS;PTail并行地tail多個HDFS上的目錄,并寫文件數(shù)據(jù)到標準輸出。在當前架構中,一部分數(shù)據(jù)處理仍然以批處理的方式通過MapReduce進行小時級的處理,存儲在中央的HDFS,每天通過Hive進行分析處理。另一部分接近實時的數(shù)據(jù)流則通過Puma來進行分鐘級的處理。Facebook對專門分析提供Peregrine(Hipal)工具、對周期性分析提供Nocron工具進行分析。

    Facebook未來的大數(shù)據(jù)技術架構的雛形已經(jīng)出來。首先開源的是可能替代Hadoop系統(tǒng)中MapReduce的Corona,類似于Yahoo提出的YARN。Corona最大的一個進步是其集群管理器做到了基于CPU、內(nèi)存和其他作業(yè)處理的需求資源的管理,這可以使得Corona既可以處理MapReduce 作業(yè),也可以處理非MapReduce 作業(yè),使Hadoop集群的應用領域更加廣泛。二是Facebook最新的交互式大數(shù)據(jù)查詢系統(tǒng)Presto,類似于Cloudera的Impala和Hortonworks的Stinger,解決了Facebook迅速膨脹的海量數(shù)據(jù)倉庫快速查詢需求。據(jù)Facebook稱,使用Presto進行簡單的查詢只需要幾百毫秒,即使是非常復雜的查詢,也只需數(shù)分鐘便可完成,它在內(nèi)存中運行,并且不會向磁盤寫入。第三是Wormhole流計算系統(tǒng),類似于Twiitter的Storm和Yahoo的Storm-YARN。第四個重要項目是Prism,它能夠運行一個超大的、能夠將全球數(shù)據(jù)中心都連起來的Hadoop集群,可能在一個數(shù)據(jù)中心宕掉的時候即時的將數(shù)據(jù)重新分布,這是一個與Google的Spanner類似的項目。

    Facebook的大數(shù)據(jù)技術架構演進路徑代表了大數(shù)據(jù)技術的發(fā)展路線,難能可貴的是,開源是Facebook一貫的路線,它和Yahoo等公司一起為大數(shù)據(jù)技術的發(fā)展作出了巨大貢獻。

Facebook所用的軟件

從某些方面來說,F(xiàn)acebook還是屬于LAMP類型網(wǎng)站,但是,為了配合其他大量的組件和服務,F(xiàn)acebook對已有的方法,已經(jīng)做了必要的改變、拓展和修改。
比如:
Facebook依然使用PHP,但Facebook已重建新的編譯器,以滿足在其Web服務器上加載本地代碼,從而提升性能;
Facebook使用Linux系統(tǒng),但為了自身目的,也已做了必要的優(yōu)化。(尤其是在網(wǎng)絡吞吐量方面);
Facebook使用MySQL,但也對其做優(yōu)化。
還有定制的系統(tǒng),比如, Haystack — 高度可擴展的對象存儲,用來處理Facebook的龐大的圖片;Scribe — Facebook的日志系統(tǒng)。

下面展現(xiàn)給大家的是,全球最大的社交網(wǎng)站Facebook所使用到的軟件。

Memcached
Memcached是一款相當有名的軟件。它是分布式內(nèi)存緩存系統(tǒng)。Facebook(還有大量的網(wǎng)站)用它作為Web服務器和MySQL服務器之間的緩存層。經(jīng)過多年,F(xiàn)acebook已在Memcached和其相關軟件(比如,網(wǎng)絡棧)上做了大量優(yōu)化工作。
Facebook運行著成千上萬的Memcached服務器,借以及時處理TB級的緩存數(shù)據(jù)??梢赃@樣說,F(xiàn)acebook擁有全球最大的Memcached設備。

HipHop for PHP
和運行在本地服務器上代碼相比,PHP的運行速度相對較慢。HipHop把PHP代碼轉換成C++代碼,提高編譯時的性能。因為Facebook很依賴PHP來處理信息,有了HipHop,F(xiàn)acebook在Web服務器方面更是如虎添翼。
HipHop誕生過程:在Facebook,一小組工程師(最初是3位)用了18個月研發(fā)而成。

Haystack
Haystack是Facebook高性能的圖片存儲/檢索系統(tǒng)。(嚴格來說,Haystack是一對象存儲,所以它不一定要存儲圖片。)Haystack的工作量超大。Facebook上有超過2百億張圖片,每張圖片以四種不同分辨率保存,所以,F(xiàn)acebook有超過8百億張圖片。
Haystack的作用不單是處理大量的圖片,它的性能才是亮點。我們在前面已提到,F(xiàn)acebook每秒大概處理120萬張圖片,這個數(shù)據(jù)并不包括其CDN處理的圖片數(shù)。這可是個驚人的數(shù)據(jù)?。。?br />

BigPipe
BigPipe是Facebook開發(fā)的動態(tài)網(wǎng)頁處理系統(tǒng)。為了達到最優(yōu),F(xiàn)acebook用它來處理每個網(wǎng)頁的分塊(也稱“Pagelets”)。
比如,聊天窗口是獨立檢索的,新聞源也是獨立檢索的。這些Pagelets是可以并發(fā)檢索,性能也隨之提高。如此,即使網(wǎng)站的某部分停用或崩潰后,用戶依然可以使用。

Cassandra
Cassandra是一個沒有單點故障的分布式存儲系統(tǒng)。它是前NoSQL運動的成員之一,現(xiàn)已開源(已加入Apache工程)。Facebook用它來做郵箱搜索。
除了Facebook之外,Cassandra也適用于很多其他服務,比如Digg。

Scribe
Scribe是個靈活多變的日志系統(tǒng),F(xiàn)acebook把它用于多種內(nèi)部用途。Scribe用途:處理Facebook級別日志,一旦有新的日志分類生成,Scribe將自動處理。(Facebook有上百個日志分類)。

Hadoop and Hive
Hadoop是款開源Map/Reduce框架,它可以輕松處理海量數(shù)據(jù)。Facebook用它來做數(shù)據(jù)分析。(前面就說到了,F(xiàn)acebook的數(shù)據(jù)量是超海量的。)Hive起源于Facebook,Hive可以使用SQL查詢,讓非程序員比較容易使用Hadoop。(注1: Hive是是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結構化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供完整的sql查詢功能,可以將sql語句轉換為MapReduce任務進行運行。 )


Varnish
Varnish是一個HTTP加速器,擔當負載均衡角色,同時也用于快速處理緩存內(nèi)容。
Facebook用Varnish處理圖片和用戶照片,每天都要處理十億級的請求。和Facebook其他的應用應用一樣,Varnish也是開源的。

Facebook可以平穩(wěn)運行,還得利于其他方面

雖然上面已經(jīng)提到了一些構成Facebook系統(tǒng)的軟件,但是處理如此龐大的系統(tǒng),本身就是一項復雜的任務。所以,下面還將列出使Facebook能平穩(wěn)運行的一些東西。

雖然這里無法過多深入硬件方面,但硬件絕對是Facebook能達到空前規(guī)模的重要因素。比如,和其他大型網(wǎng)站一樣,F(xiàn)acebook也用CDN來處理靜態(tài)內(nèi)容。Facebook還在美國西部的俄勒岡州建有一超大的數(shù)據(jù)中心,可以隨時增加服務器。
當然了,除了前面已經(jīng)提到的,還有其他大量的軟件沒有說到。但是,希望能突出其中非常有特色的。

標簽:黃山 湘潭 銅川 崇左 蘭州 仙桃 湖南 衡水

巨人網(wǎng)絡通訊聲明:本文標題《全面了解Facebook的大數(shù)據(jù)處理架構及應用的軟件》,本文關鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    南平市| 黄龙县| 于田县| 威信县| 电白县| 黄大仙区| 高淳县| 东丽区| 迭部县| 辽源市| 大余县| 天等县| 闽侯县| 剑阁县| 女性| 革吉县| 三台县| 吴旗县| 江北区| 宁明县| 云阳县| 仪陇县| 大关县| 都江堰市| 枝江市| 邵阳市| 定远县| 平遥县| 泸定县| 遂川县| 九龙城区| 龙陵县| 黔西县| 西昌市| 青海省| 东明县| 洪雅县| 靖江市| 龙川县| 泌阳县| 隆安县|