構建海量資料平台 雲梯生態系統

2021-06-21 11:12:09 字數 2069 閱讀 1220

**

《大資料時代》一書說:技術終究會過去,分析的模型也將定型,未來的制高點在於是否擁有資料。其實目前的資料技術正在蓬勃發展,也不知道維克托•邁爾•捨恩伯格說的啥時候到來。

雲梯系統為阿里已經服務了將近5年了,其上儲存著數十pb的資料,每日執行數十萬的job,節點數已經逼近10000臺了。借助於社群的開源hadoop技術也只是雲梯生態圈的一部分。本文將簡要講述雲梯生態圈的各個元件。筆者認為構建資料平台的四要素:資料儲存、資料傳輸、資料計算、計算排程。當然還要方便使用者使用。

雲梯平台生態圈基本可以用以下的圖表示:

我大致分了8層,每層都有各層特別的事項及對應的開源軟體。雖然虛擬技術室雲計算的基礎,但對於內部構件海量資料平台並不需要虛擬主機。虛擬主機畢竟有一定的效能損耗。對於目前存在的虛擬hadoop技術的目標是讓使用者在雲端自建hadoop集群。

基礎設施層

主要包括主機、網路、機房、供電等基礎設施。這些基本是硬體投入,是雲計算的基礎部分,也可以認為是資料中心。由於國內獨特的網路環境,很多企業的伺服器都是託管在一些電信機房內,筆者了解所自建機房的企業很少。在國外,微軟、ibm、google、facebook等公司都在全球建立了大小的資料中心,其中以google的最為先進,puc最接近1的公司。越來越多的資料中心也開始用綠色能源。說白了,雲計算、雲主機等服務都是為使用者節約自購硬體的成本。對於hadoop來講,最關注的是主機,主機一般關注的是網路頻寬、cpu的主頻及個數、硬碟的轉速及個數(有的實時計算乾脆直接用了ssd甚至fusionio)、記憶體大小。對於超大型的hadoop集群,會考慮master節點,搭配的是ssd的磁碟及高頻的cpu。記憶體**的便宜繁榮了類似spark的記憶體框架。

基礎軟體層

此主要是執行在主機上的軟體,路由器及交換機在購置時廠商一般會配置好相關的軟體。主機最上直接執行的就是作業系統,hadoop就是用linux,最近微軟開發了相當多的patch以支援win。不過還是建議用linux。jdk/jvm是也十分基礎。對於如阿里這些都是專門的團隊維護的,如:linux核心團隊、jvm團隊。在一些特別的場景下,如:namenode的超大記憶體需要特別的hack jvm。在阿里,基礎軟體層及基礎設施層都是已經做好了。

儲存層資料不可丟失是最起碼的要求。資料放置3個副本在目前情況下基本是可靠的。阿里的儲存層已經在業內分享了許多次了,包括了namenode\datanode\crossnode三個最主要的的元件。crossnode是阿里自己開發的協調多機房副本分配的元件,資料可以看是否需要直接在另乙個機房生成相關的副本以實現計算的本地化。

計算層計算是比較豐富的。目前來講,有離線計算、準實時計算、實時流式計算、實時計算。計算模型有mr模型、dag模型等。對應的框架是相當多,就目前發展來看,mr是基本的也是離線計算的代表。準實時計算目前是以spark為代表。impala、stinger目前是支援sql查詢較快框架。實時流式計算則以storm為代表的。這些框架可以通過yarn排程框架實現在同乙個集群上執行,最大限度地錯峰節約資源。目前阿里雲梯正在探索中。

資料交換

資料需要交換,如:從應用系統同步日誌到hdfs中,從mysql同步資料到hdfs中。其實可以把訊息系統也算資料交換的,如:kafka。有的資料交換系統直接可以嫁接到hadoop的計算層上,如:資料交換,資料分布式從mysql中拖出,再寫到hdfs中,這樣還節約網路。社群有chukwa、flume、scribe等相關的日誌資料庫同步工具,不過一般的公司都按照自己的需求重寫了。如:阿里的tt就是支援業務日誌的同步。datax支援多源之間的不同資料格式的轉化同步。

排程層當使用者的job非常多時,每個job之間還有一定的依賴關係。此時不能通過crontab來實現排程需求了。社群有乙個oozie,不過大部分的公司應該是自己編寫相關的排程層,很多時候跟內部的一些系統還是有一定關係的。阿里有乙個名為天網和宙斯的排程系統。

使用者檢視層

使用者檢視,此可大可小可沒有。主要看資料平台的成熟度。很多公司直接讓使用者在網頁端編寫hive指令碼,發布指令碼的流程管理、許可權申請等。簡單地講,此使用者工作平台主要是方便使用者使用資料資料平台的。

應用bi

這層就是使用者具體應用了,比如:阿里巴巴的資料魔方、**指數等。

在圖中還有很多的豎條的線條:

以上簡單地描述了整個雲梯生態圈元件。也是自己在1年多時間對資料平台的全貌認識的乙個總結。後續,筆者將詳細思述各層的具體的技術。

Hadoop生態系統

摘要 介紹hadoop生態系統,從hadoop生態系統有什麼成員,成員能做什麼和hadoop生態系統能夠提供大資料問題解決方案兩方面來認識。hadoop生態圖,通俗地說,就是hadoop核心模組和衍生的子專案。一幅hadoop生態圖,讓我想到了兩個問題。問題一 hadoop生態系統包括哪些成員?每個...

Docker生態系統

docker是以docker容器為資源分割和排程的基本單位,封裝軟體的執行時環境.用於快速構建,發布,執行分布式應用的平台。docker的執行時容器的本質是程序.在linux中,通過namespace進行資源隔離,cgroups進行資源限制,使docker容器看上去像是乙個執行在宿主機中的虛擬機器....

SOA生態系統

richard veryard在他的最近的一篇日誌裡提到 soa世界終於開始跟上一點生態系統的思想了.以生物性的方式來建立業務和軟體服務。根據richard的說法,這一方式與解決方案驅動的soa方式截然不同。在這種情況下,不是基於特定的解決方案來定義服務,而是基於它們所屬於的生態系統 可與 自頂向下...