官术网_书友最值得收藏!

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)化階段

主站蜘蛛池模板: 缙云县| 五河县| 晋城| 襄垣县| 固原市| 交城县| 广水市| 射洪县| 达孜县| 从化市| 化德县| 门源| 永昌县| 论坛| 合作市| 金堂县| 抚顺市| 丁青县| 东兴市| 山阳县| 虞城县| 崇礼县| 水富县| 邵武市| 富宁县| 涿鹿县| 玉环县| 南京市| 蒲江县| 洛川县| 罗山县| 昭觉县| 河西区| 五大连池市| 嘉义县| 攀枝花市| 颍上县| 保定市| 宿迁市| 漳州市| 龙州县|