- 云原生數(shù)據(jù)中臺(tái):架構(gòu)、方法論與實(shí)踐
- 彭鋒 宋文欣 孫浩峰
- 1424字
- 2021-04-30 12:38:48
4.1 大數(shù)據(jù)平臺(tái)建設(shè)階段
處在這個(gè)階段的企業(yè)已完成一個(gè)包含絕大部分大數(shù)據(jù)基礎(chǔ)組件的平臺(tái),將數(shù)據(jù)導(dǎo)入系統(tǒng),并運(yùn)行一些基本的大數(shù)據(jù)查詢(xún)和報(bào)表生成任務(wù)。此階段一般會(huì)經(jīng)歷三個(gè)步驟:大數(shù)據(jù)平臺(tái)起步、系統(tǒng)自動(dòng)化和大數(shù)據(jù)平臺(tái)的生產(chǎn)化。
4.1.1 大數(shù)據(jù)平臺(tái)起步
最開(kāi)始,企業(yè)的大數(shù)據(jù)團(tuán)隊(duì)可能會(huì)安裝一個(gè)Hadoop集群和Hive(可能帶有Sqoop),以便將數(shù)據(jù)傳輸?shù)郊翰⑦\(yùn)行一些查詢(xún)。近年來(lái),Kafka和Spark等組件也被考慮在內(nèi)。如果要進(jìn)行日志分析,也可以安裝ELK(Elasticsearch、Logstash、Kibana)等套件。
但是,這些系統(tǒng)大多數(shù)是復(fù)雜的分布式系統(tǒng),其中一些系統(tǒng)需要數(shù)據(jù)庫(kù)支持。雖然許多系統(tǒng)提供單節(jié)點(diǎn)模式,但團(tuán)隊(duì)仍需要熟悉常見(jiàn)的DevOps工具,如Ansible、Puppet、Chef、Fabric等。
由于開(kāi)源社區(qū)的辛勤工作,對(duì)大多數(shù)軟件工程團(tuán)隊(duì)來(lái)說(shuō),使用這些工具和原型設(shè)計(jì)應(yīng)該是可行的。技術(shù)實(shí)力比較強(qiáng)的團(tuán)隊(duì)可能在幾周內(nèi)就可以設(shè)置好一個(gè)能夠聯(lián)通及運(yùn)行的系統(tǒng),具體的工作量一般取決于要安裝的組件數(shù)量。
4.1.2 系統(tǒng)自動(dòng)化
安裝好大數(shù)據(jù)組件之后,企業(yè)已經(jīng)擁有了一個(gè)基本的大數(shù)據(jù)系統(tǒng),接下來(lái)可能有如下需求(見(jiàn)圖4-1)。
·一些定期運(yùn)行的Hive查詢(xún),比如每小時(shí)一次或每天一次,以生成商業(yè)智能報(bào)告。
·使用一些Spark程序運(yùn)行機(jī)器學(xué)習(xí)程序,生成一些用戶(hù)分析模型,使產(chǎn)品系統(tǒng)可以提供個(gè)性化服務(wù)。
·一些需要不定時(shí)從遠(yuǎn)程站點(diǎn)提取數(shù)據(jù)的爬蟲(chóng)程序。
·一些流數(shù)據(jù)處理程序,用于創(chuàng)建實(shí)時(shí)數(shù)據(jù)儀表板,顯示在大屏幕上。

圖4-1 系統(tǒng)自動(dòng)化階段
要實(shí)現(xiàn)這些需求,大數(shù)據(jù)平臺(tái)需要一個(gè)作業(yè)調(diào)度系統(tǒng),以根據(jù)時(shí)間或數(shù)據(jù)可用性來(lái)運(yùn)行它們,例如使用Oozie、Azkaban、Airflow等工作流系統(tǒng),可以指定何時(shí)運(yùn)行程序(類(lèi)似于Linux系統(tǒng)上的Cron程序)。
工作流系統(tǒng)之間的功能差異很大。例如,一些系統(tǒng)提供依賴(lài)關(guān)系管理,允許指定調(diào)度邏輯,如作業(yè)A僅在作業(yè)B和作業(yè)C完成時(shí)運(yùn)行;一些系統(tǒng)允許僅管理Hadoop程序,而另一些系統(tǒng)則允許更多類(lèi)型的工作流程。平臺(tái)必須選一個(gè)最符合自己要求的系統(tǒng)。
除了工作流系統(tǒng),還有其他需要自動(dòng)化的任務(wù)。例如,如果HDFS上的某些數(shù)據(jù)需要在一段時(shí)間后刪除,假設(shè)數(shù)據(jù)只保留一年,那么在第366天,系統(tǒng)需要從數(shù)據(jù)集最早的一天中刪除數(shù)據(jù),這稱(chēng)為數(shù)據(jù)保留策略。
4.1.3 大數(shù)據(jù)平臺(tái)的生產(chǎn)化
現(xiàn)在企業(yè)已經(jīng)擁有了一個(gè)自動(dòng)數(shù)據(jù)管道,數(shù)據(jù)終于可以在這個(gè)數(shù)據(jù)流水線(xiàn)上流動(dòng)起來(lái)了。大功告成?現(xiàn)實(shí)情況是,生產(chǎn)環(huán)境中還會(huì)遇到下面這些棘手的問(wèn)題:
·硬盤(pán)故障(據(jù)統(tǒng)計(jì),硬盤(pán)第1年的故障率為5.1%);
·服務(wù)器故障(據(jù)統(tǒng)計(jì),服務(wù)器第4年的故障率為11%);
·使用的大量開(kāi)源程序有很多bug;
·自行開(kāi)發(fā)的數(shù)據(jù)應(yīng)用程序可能也會(huì)有一些bug;
·外部數(shù)據(jù)源有延遲;
·數(shù)據(jù)庫(kù)有宕機(jī)時(shí)間;
·網(wǎng)絡(luò)有錯(cuò)誤;
·運(yùn)維時(shí)的誤操作。
這些問(wèn)題在規(guī)模稍微大一些的系統(tǒng)中都會(huì)經(jīng)常發(fā)生。為了保證系統(tǒng)的正常運(yùn)行,我們還需要做好以下這些(見(jiàn)圖4-2)。
·監(jiān)控系統(tǒng):監(jiān)控硬件、操作系統(tǒng)、資源使用情況、程序運(yùn)行。
·系統(tǒng)探針:系統(tǒng)需要的各種運(yùn)行指標(biāo),以便可以被監(jiān)控。
·警報(bào)系統(tǒng):出現(xiàn)問(wèn)題時(shí),需要通知運(yùn)維工程師。
·避免單點(diǎn)故障(SPOF):避免一個(gè)組件或者節(jié)點(diǎn)的失效造成整個(gè)系統(tǒng)的崩潰。
·備份:需要盡快備份重要數(shù)據(jù);不要依賴(lài)Hadoop的3份數(shù)據(jù)副本,因?yàn)樗鼈円部赡鼙蝗藶檎`操作而刪除。
·恢復(fù):如果不希望每次發(fā)生故障時(shí)都手動(dòng)處理所有錯(cuò)誤,那么最好盡可能讓這些錯(cuò)誤自動(dòng)恢復(fù)。
可見(jiàn),建立企業(yè)級(jí)系統(tǒng)并不像安裝一些開(kāi)源程序那么容易,把系統(tǒng)安裝好并不意味著就可以直接在生產(chǎn)中使用它。雖然這些問(wèn)題在系統(tǒng)剛剛成形的一兩個(gè)月內(nèi)不太明顯,但對(duì)于任何一個(gè)在生產(chǎn)環(huán)境中運(yùn)行大數(shù)據(jù)平臺(tái)的團(tuán)隊(duì),運(yùn)維問(wèn)題都是必須面對(duì)的。

圖4-2 大數(shù)據(jù)平臺(tái)的生產(chǎn)化階段
- MySQL數(shù)據(jù)庫(kù)進(jìn)階實(shí)戰(zhàn)
- 數(shù)據(jù)庫(kù)應(yīng)用實(shí)戰(zhàn)
- 數(shù)據(jù)產(chǎn)品經(jīng)理高效學(xué)習(xí)手冊(cè):產(chǎn)品設(shè)計(jì)、技術(shù)常識(shí)與機(jī)器學(xué)習(xí)
- 數(shù)亦有道:Python數(shù)據(jù)科學(xué)指南
- MySQL 8.x從入門(mén)到精通(視頻教學(xué)版)
- Power BI商業(yè)數(shù)據(jù)分析完全自學(xué)教程
- 數(shù)據(jù)分析師養(yǎng)成寶典
- Gideros Mobile Game Development
- 云計(jì)算寶典:技術(shù)與實(shí)踐
- 數(shù)據(jù)庫(kù)原理與設(shè)計(jì)實(shí)驗(yàn)教程(MySQL版)
- 大數(shù)據(jù)分析:R基礎(chǔ)及應(yīng)用
- Hands-On Deep Learning for Games
- Google Cloud Platform for Architects
- Visual Studio 2012 and .NET 4.5 Expert Development Cookbook
- NoSQL數(shù)據(jù)庫(kù)原理(第2版·微課版)