facebook開源ssd做HDD緩存(如何架構大數據系統 hadoop)

时间:2024-05-24 00:40:43 编辑: 来源:

如何架構大數據系統 hadoop

Hadoop在可伸縮性、健壯性、計算性能和成本上具有無可替代的優勢,事實上已成為當前互聯網企業主流的大數據分析平臺。本文主要介紹一種基于Hadoop平臺的多維分析和數據挖掘平臺架構。作為一家互聯網數據分析公司,我們在海量數據的分析領域那真是被“逼上梁山”。多年來在嚴苛的業務需求和數據壓力下,我們幾乎嘗試了所有可能的大數據分析方法,最終落地于Hadoop平臺之上。

1. 大數據分析大分類

Hadoop平臺對業務的針對性較強,為了讓你明確它是否符合你的業務,現粗略地從幾個角度將大數據分析的業務需求分類,針對不同的具體需求,應采用不同的數據分析架構。

按照數據分析的實時性,分為實時數據分析和離線數據分析兩種。

實時數據分析一般用于金融、移動和互聯網B2C等產品,往往要求在數秒內返回上億行數據的分析,從而達到不影響用戶體驗的目的。要滿足這樣的需求,可以采用精心設計的傳統關系型數據庫組成并行處理集群,或者采用一些內存計算平臺,或者采用HDD的架構,這些無疑都需要比較高的軟硬件成本。目前比較新的海量數據實時分析工具有EMC的Greenplum、SAP的HANA等。

對于大多數反饋時間要求不是那么嚴苛的應用,比如離線統計分析、機器學習、搜索引擎的反向索引計算、推薦引擎的計算等,應采用離線分析的方式,通過數據采集工具將日志數據導入專用的分析平臺。但面對海量數據,傳統的ETL工具往往徹底失效,主要原因是數據格式轉換的開銷太大,在性能上無法滿足海量數據的采集需求。互聯網企業的海量數據采集工具,有Facebook開源的Scribe、LinkedIn開源的Kafka、淘寶開源的Timetunnel、Hadoop的Chukwa等,均可以滿足每秒數百MB的日志數據采集和傳輸需求,并將這些數據上載到Hadoop中央系統上。

按照大數據的數據量,分為內存級別、BI級別、海量級別三種。

這里的內存級別指的是數據量不超過集群的內存最大值。不要小看今天內存的容量,Facebook緩存在內存的Memcached中的數據高達320TB,而目前的PC服務器,內存也可以超過百GB。因此可以采用一些內存數據庫,將熱點數據常駐內存之中,從而取得非常快速的分析能力,非常適合實時分析業務。圖1是一種實際可行的MongoDB分析架構。

圖1 用于實時分析的MongoDB架構

MongoDB大集群目前存在一些穩定性問題,會發生周期性的寫堵塞和主從同步失效,但仍不失為一種潛力十足的可以用于高速數據分析的NoSQL。

此外,目前大多數服務廠商都已經推出了帶4GB以上SSD的解決方案,利用內存+SSD,也可以輕易達到內存分析的性能。隨著SSD的發展,內存數據分析必然能得到更加廣泛的應用。

BI級別指的是那些對于內存來說太大的數據量,但一般可以將其放入傳統的BI產品和專門設計的BI數據庫之中進行分析。目前主流的BI產品都有支持TB級以上的數據分析方案。種類繁多,就不具體列舉了。

海量級別指的是對于數據庫和BI產品已經完全失效或者成本過高的數據量。海量數據級別的優秀企業級產品也有很多,但基于軟硬件的成本原因,目前大多數互聯網企業采用Hadoop的HDFS分布式文件系統來存儲數據,并使用MapRece進行分析。本文稍后將主要介紹Hadoop上基于MapRece的一個多維數據分析平臺。

數據分析的算法復雜度

根據不同的業務需求,數據分析的算法也差異巨大,而數據分析的算法復雜度和架構是緊密關聯的。舉個例子,Redis是一個性能非常高的內存Key-Value NoSQL,它支持List和Set、SortedSet等簡單集合,如果你的數據分析需求簡單地通過排序,鏈表就可以解決,同時總的數據量不大于內存(準確地說是內存加上虛擬內存再除以2),那么無疑使用Redis會達到非常驚人的分析性能。

還有很多易并行問題(Embarrassingly Parallel),計算可以分解成完全獨立的部分,或者很簡單地就能改造出分布式算法,比如大規模臉部識別、圖形渲染等,這樣的問題自然是使用并行處理集群比較適合。

而大多數統計分析,機器學習問題可以用MapRece算法改寫。MapRece目前最擅長的計算領域有流量統計、推薦引擎、趨勢分析、用戶行為分析、數據挖掘分類器、分布式索引等。

2. 面對大數據OLAP大一些問題

OLAP分析需要進行大量的數據分組和表間關聯,而這些顯然不是NoSQL和傳統數據庫的強項,往往必須使用特定的針對BI優化的數據庫。比如絕大多數針對BI優化的數據庫采用了列存儲或混合存儲、壓縮、延遲加載、對存儲數據塊的預統計、分片索引等技術。

Hadoop平臺上的OLAP分析,同樣存在這個問題,Facebook針對Hive開發的RCFile數據格式,就是采用了上述的一些優化技術,從而達到了較好的數據分析性能。如圖2所示。

然而,對于Hadoop平臺來說,單單通過使用Hive模仿出SQL,對于數據分析來說遠遠不夠,首先Hive雖然將HiveQL翻譯MapRece的時候進行了優化,但依然效率低下。多維分析時依然要做事實表和維度表的關聯,維度一多性能必然大幅下降。其次,RCFile的行列混合存儲模式,事實上限制死了數據格式,也就是說數據格式是針對特定分析預先設計好的,一旦分析的業務模型有所改動,海量數據轉換格式的代價是極其巨大的。最后,HiveQL對OLAP業務分析人員依然是非常不友善的,維度和度量才是直接針對業務人員的分析語言。

而且目前OLAP存在的最大問題是:業務靈活多變,必然導致業務模型隨之經常發生變化,而業務維度和度量一旦發生變化,技術人員需要把整個Cube(多維立方體)重新定義并重新生成,業務人員只能在此Cube上進行多維分析,這樣就限制了業務人員快速改變問題分析的角度,從而使所謂的BI系統成為死板的日常報表系統。

使用Hadoop進行多維分析,首先能解決上述維度難以改變的問題,利用Hadoop中數據非結構化的特征,采集來的數據本身就是包含大量冗余信息的。同時也可以將大量冗余的維度信息整合到事實表中,這樣可以在冗余維度下靈活地改變問題分析的角度。其次利用Hadoop MapRece強大的并行化處理能力,無論OLAP分析中的維度增加多少,開銷并不顯著增長。換言之,Hadoop可以支持一個巨大無比的Cube,包含了無數你想到或者想不到的維度,而且每次多維分析,都可以支持成千上百個維度,并不會顯著影響分析的性能。

而且目前OLAP存在的最大問題是:業務靈活多變,必然導致業務模型隨之經常發生變化,而業務維度和度量一旦發生變化,技術人員需要把整個Cube(多維立方體)重新定義并重新生成,業務人員只能在此Cube上進行多維分析,這樣就限制了業務人員快速改變問題分析的角度,從而使所謂的BI系統成為死板的日常報表系統。

3. 一種Hadoop多維分析平臺的架構

整個架構由四大部分組成:數據采集模塊、數據冗余模塊、維度定義模塊、并行分 析模塊。

數據采集模塊采用了Cloudera的Flume,將海量的小日志文件進行高速傳輸和合并,并能夠確保數據的傳輸安全性。單個買粉絲llector宕機之后,數據也不會丟失,并能將agent數據自動轉移到其他的買粉絲lllecter處理,不會影響整個采集系統的運行。如圖5所示。

數據冗余模塊不是必須的,但如果日志數據中沒有足夠的維度信息,或者需要比較頻繁地增加維度,則需要定義數據冗余模塊。通過冗余維度定義器定義需要冗余的維度信息和來源(數據庫、文件、內存等),并指定擴展方式,將信息寫入數據日志中。在海量數據下,數據冗余模塊往往成為整個系統的瓶頸,建議使用一些比較快的內存NoSQL來冗余原始數據,并采用盡可能多的節點進行并行冗余;或者也完全可以在Hadoop中執行批量Map,進行數據格式的轉化。

維度定義模塊是面向業務用戶的前端模塊,用戶通過可視化的定義器從數據日志中定義維度和度量,并能自動生成一種多維分析語言,同時可以使用可視化的分析器通過GUI執行剛剛定義好的多維分析命令。

并行分析模塊接受用戶提交的多維分析命令,并將通過核心模塊將該命令解析為Map-Rece,提交給Hadoop集群之后,生成報表供報表中心展示。

核心模塊是將多維分析語言轉化為MapRece的解析器,讀取用戶定義的維度和度量,將用戶的多維分析命令翻譯成MapRece程序。核心模塊的具體邏輯如圖6所示。

圖6中根據JobConf參數進行Map和Rece類的拼裝并不復雜,難點是很多實際問題很難通過一個MapRece Job解決,必須通過多個MapRece Job組成工作流(WorkFlow),這里是最需要根據業務進行定制的部分。圖7是一個簡單的MapRece工作流的例子。

MapRece的輸出一般是統計分析的結果,數據量相較于輸入的海量數據會小很多,這樣就可以導入傳統的數據報表產品中進行展現。

如何架構大數據系統 hadoop

  一、大數據建設思路

  1)數據的獲得

大數據產生的根本原因在于感知式系統的廣泛使用。隨著技術的發展,人們已經有能力制造極其微小的帶有處理功能的傳感器,并開始將這些設備廣泛的布置于社會的各個角落,通過這些設備來對整個社會的運轉進行監控。這些設備會源源不斷的產生新數據,這種數據的產生方式是自動的。因此在數據收集方面,要對來自網絡包括物聯網、社交網絡和機構信息系統的數據附上時空標志,去偽存真,盡可能收集異源甚至是異構的數據,必要時還可與歷史數據對照,多角度驗證數據的全面性和可信性。

  2)數據的匯集和存儲

互聯網是個神奇的大網,大數據開發和軟件定制也是一種模式,這里提供最詳細的報價,如果你真的想做,可以來這里,這個手機的開始數字是一八七中間的是三兒零最后的是一四二五零,按照順序組合起來就可以找到,我想說的是,除非你想做或者了解這方面的內容,如果只是湊熱鬧的話,就不要來了

數據只有不斷流動和充分共享,才有生命力。應在各專用數據庫建設的基礎上,通過數據集成,實現各級各類信息系統的數據交換和數據共享。 數據存儲要達到低成本、低能耗、高可靠性目標,通常要用到冗余配置、分布化和云計算技術,在存儲時要按照一定規則對數據進行分類,通過過濾和去重,減少存儲量,同時加入便于日后檢索的標簽。

  3)數據的管理

大數據管理的技術也層出不窮。在眾多技術中,有6種數據管理技術普遍被關注,即分布式存儲與計算、內存數據庫技術、列式數據庫技術、云數據庫、非關系型的數據庫、移動數據庫技術。其中分布式存儲與計算受關注度最高。上圖是一個圖書數據管理系統。

  4)數據的分析

數據分析處理:有些行業的數據涉及上百個參數,其復雜性不僅體現在數據樣本本身,更體現在多源異構、多實體和多空間之間的交互動態性,難以用傳統的方法描述與度量,處理的復雜度很大,需要將高維圖像等多媒體數據降維后度量與處理,利用上下文關聯進行語義分析,從大量動態而且可能是模棱兩可的數據中綜合信息,并導出可理解的內容。大數據的處理類型很多,主要的處理模式可以分為流處理和批處理兩種。批處理是先存儲后處理,而流處理則是直接處理數據。挖掘的任務主要是關聯分析、聚類分析、分類、預測、時序模式和偏差分析等。

  5)大數據的價值:決策支持系統

大數據的神奇之處就是通過對過去和現在的數據進行分析,它能夠精確預測未來;通過對組織內部的和外部的數據整合,它能夠洞察事物之間的相關關系;通過對海量數據的挖掘,它能夠代替人腦,承擔起企業和社會管理的職責。

  6)數據的使用

大數據有三層內涵:一是數據量巨大、來源多樣和類型多樣的數據集;二是新型的數據處理和分析技術;三是運用數據分析形成價值。大數據對科學研究、經濟建設、社會發展和文化生活等各個領域正在產生革命性的影響。大數據應用的關鍵,也是其必要條件,就在于"IT"與"經營"的融合,當然,這里的經營的內涵可以非常廣泛,小至一個零售門店的經營,大至一個城市的經營。

二、大數據基本架構

基于上述大數據的特征,通過傳統IT技術存儲和處理大數據成本高昂。一個企業要大力發展大數據應用首先需要解決兩個問題:一是低成本、快速地對海量、多類別的數據進行抽取和存儲;二是使用新的技術對數據進行分析和挖掘,為企業創造價值。因此,大數據的存儲和處理與云計算技術密不可分,在當前的技術條件下,基于廉價硬件的分布式系統(如Hadoop等)被認為是最適合處理大數據的技術平臺。

Hadoop是一個分布式的基礎架構,能夠讓用戶方便高效地利用運算資源和處理海量數據,目前已在很多大型互聯網企業得到了廣泛應用,如亞馬遜、Facebook和Yahoo等。其是一個開放式的架構,架構成員也在不斷擴充完善中,通常架構如圖2所示:

  Hadoop體系架構

(1)Hadoop最底層是一個HDFS(Hadoop Distributed File System,分布式文件系統),存儲在HDFS中的文件先被分成塊,然后再將這些塊復制到多個主機中(DataNode,數據節點)。

(2)Hadoop的核心是MapRece(映射和化簡編程模型)引擎,Map意為將單個任務分解為多個,而Rece則意為將分解后的多任務結果匯總,該引擎由JobTrackers(工作追蹤,對應命名節點)和TaskTrackers(任務追蹤,對應數據節點)組成。當處理大數據查詢時,MapRece會將任務分解在多個節點處理,從而提高了數據處理的效率,避免了單機性能瓶頸限制。

(3)Hive是Hadoop架構中的數據倉庫,主要用于靜態的結構以及需要經常分析的工作。Hbase主要作為面向列的數據庫運行在HDFS上,可存儲PB級的數據。Hbase利用MapRece來處理內部的海量數據,并能在海量數據中定位所需的數據且訪問它。

(4)Sqoop是為數據的互操作性而設計,可以從關系數據庫導入數據到Hadoop,并能直接導入到HDFS或Hive。

(5)Zookeeper在Hadoop架構中負責應用程序的協調工作,以保持Hadoop集群內的同步工作。

(6)Thrift是一個軟件框架,用來進行可擴展且跨語言的服務的開發,最初由Facebook開發,是構建在各種編程語言間無縫結合的、高效的服務。

  Hadoop核心設計

  Hbase——分布式數據存儲系統

Client:使用HBase RPC機制與HMaster和HRegionServer進行通信

Zookeeper:協同服務管理,HMaster通過Zookeepe可以隨時感知各個HRegionServer的健康狀況

HMaster: 管理用戶對表的增刪改查操作

HRegionServer:HBase中最核心的模塊,主要負責響應用戶I/O請求,向HDFS文件系統中讀寫數據

HRegion:Hbase中分布式存儲的最小單元,可以理解成一個Table

HStore:HBase存儲的核心。由MemStore和StoreFile組成。

HLog:每次用戶操作寫入Memstore的同時,也會寫一份數據到HLog文件

結合上述Hadoop架構功能,大數據平臺系統功能建議如圖所示:

應用系統:對于大多數企業而言,運營領域的應用是大數據最核心的應用,之前企業主要使用來自生產經營中的各種報表數據,但隨著大數據時代的到來,來自于互聯網、物聯網、各種傳感器的海量數據撲面而至。于是,一些企業開始挖掘和利用這些數據,來推動運營效率的提升。

數據平臺:借助大數據平臺,未來的互聯網絡將可以讓商家更了解消費者的使用**慣,從而改進使用體驗。基于大數據基礎上的相應分析,能夠更有針對性的改進用戶體驗,同時挖掘新的商業機會。

數據源:數據源是指數據庫應用程序所使用的數據庫或者數據庫服務器。豐富的數據源是大數據產業發展的前提。數據源在不斷拓展,越來越多樣化。如:智能汽車可以把動態行駛過程變成數據,嵌入到生產設備里的物聯網可以把生產過程和設備動態狀況變成數據。對數據源的不斷拓展不僅能帶來采集設備的發展,而且可以通過控制新的數據源更好地控制數據的價值。然而我國數字化的數據資源總量遠遠低于美歐,就已有有限的數據資源來說,還存在標準化、準確性、完整性低,利用價值不高的情況,這**降低了數據的價值。

  三、大數據的目標效果

通過大數據的引入和部署,可以達到如下效果:

  1)數據整合

·統一數據模型:承載企業數據模型,促進企業各域數據邏輯模型的統一;

·統一數據標準:統一建立標準的數據編碼目錄,實現企業數據的標準化與統一存儲;

·統一數據視圖:實現統一數據視圖,使企業在客戶、產品和資源等視角獲取到一致的信息。

  2)數據質量管控

·數據質量校驗:根據規則對所存儲的數據進行一致性、完整性和準確性的校驗,保證數據的一致性、完整性和準確性;

·數據質量管控:通過建立企業數據的質量標準、數據管控的組織、數據管控的流程,對數據質量進行統一管控,以達到數據質量逐步完善。

  3)數據共享

·消除網狀接口,建立大數據共享中心,為各業務系統提供共享數據,降低接口復雜度,提高系統間接口效率與質量;

·以實時或準實時的方式將整合或計算好的數據向外系統提供。

  4)數據應用

·查詢應用:平臺實現條件不固定、不可預見、格式靈活的按需查詢功能;

·固定報表應用:視統計維度和指標固定的分析結果的展示,可根據業務系統的需求,分析產生各種業務報表數據等;

·動態分析應用:按關心的維度和指標對數據進行主題性的分析,動態分析應用中維度和指標不固定。

  四、總結

基于分布式技術構建的大數據平臺能夠有效降低數據存儲成本,提升數據分析處理效率,并具備海量數據、高并發場景的支撐能力,可大幅縮短數據查詢響應時間,滿足企業各上層應用的數據需求。

搜索关键词: