01保留歷史數據的現場
在數(shu)(shu)(shu)據(ju)遷(qian)移的(de)過(guo)程(cheng)中,盡量增(zeng)大(da)舊歷史數(shu)(shu)(shu)據(ju)保存天數(shu)(shu)(shu),比(bi)(bi)如:yarn-history、spark-history以及備份(fen)數(shu)(shu)(shu)據(ju)、日(ri)志。在割(ge)接(jie)后任務的(de)性能(neng)(neng)問(wen)題(ti)是一個(ge)大(da)問(wen)題(ti),不只是堆機器這么簡單,如何能(neng)(neng)快速的(de)找到數(shu)(shu)(shu)據(ju)問(wen)題(ti)的(de)根源,一般就是要和歷史數(shu)(shu)(shu)據(ju)/執(zhi)行計劃進(jin)行對比(bi)(bi)。
02不做任何不可逆的操作
任何不可(ke)逆(ni)的(de)(de)(de)操作都存在風險(xian),無論是(shi)(shi)下(xia)應用(yong)(yong),還是(shi)(shi)刪(shan)數(shu)據。尤其是(shi)(shi)一些有狀(zhuang)態的(de)(de)(de)或手工部署的(de)(de)(de)應用(yong)(yong),以及一些看似沒(mei)用(yong)(yong)的(de)(de)(de)數(shu)據和(he)腳本。寧可(ke)麻(ma)煩(fan)一些,給自己(ji)留下(xia)退路。
03數據校驗盡量雙跑
數據校驗是整個遷移的重中之重,一般有三個方面:1. 對比測試集群和原始集群雙跑對比相同任務腳本產出數據。2. 對比原始集群和線上集群歷史數據。3.對比原始集群和線上集群經過增量同步的數據。
一(yi)般歷史數據(ju)遷移(yi)并沒有太大問(wen)(wen)題(ti),出(chu)現問(wen)(wen)題(ti)多的一(yi)般是增量(liang)同步(bu)數據(ju)導致(zhi),在增量(liang)同步(bu)過程一(yi)般根據(ju)文件(jian)更(geng)新時(shi)間進(jin)(jin)行(xing)同步(bu),但是需要注(zhu)意(yi)的是對(dui)于臨時(shi)snapshot的問(wen)(wen)題(ti)不(bu)能進(jin)(jin)行(xing)同步(bu),否則新集群讀取會(hui)有問(wen)(wen)題(ti)。雙跑是必須要做的,并且(qie)務必對(dui)核心(xin)鏈路的數據(ju)進(jin)(jin)行(xing)對(dui)比,從性能和數據(ju)完整性兩方面(mian)。
04開源組件
對(dui)(dui)于(yu)一(yi)些(xie)(xie)(xie)底層組(zu)件(jian)如hadoop、hive、 spark等,擁(yong)抱(bao)開源是(shi)(shi)很重要的(de)第一(yi)點(dian),尤其是(shi)(shi)對(dui)(dui)于(yu)一(yi)些(xie)(xie)(xie)想要上云的(de)企(qi)(qi)業,對(dui)(dui)于(yu)修改了一(yi)些(xie)(xie)(xie)自定義代(dai)碼的(de)組(zu)件(jian),原始集群(qun)運行穩定,但是(shi)(shi)新集群(qun)可(ke)能就(jiu)水土不服,一(yi)些(xie)(xie)(xie)很小(xiao)的(de)問題都(dou)需要做大量的(de)排(pai)查。對(dui)(dui)于(yu)一(yi)些(xie)(xie)(xie)有(you)規(gui)模的(de)企(qi)(qi)業來(lai)說,如果有(you)底層更(geng)改的(de)需求,盡量同步到社(she)區,然后(hou)更(geng)新到線上,擁(yong)抱(bao)開源是(shi)(shi)一(yi)種責(ze)任,也(ye)是(shi)(shi)給自己(ji)未來(lai)鋪路。
05歷史包袱
基本上每個(ge)集(ji)群都有(you)很(hen)多歷史包(bao)袱,包(bao)括不同(tong)語言(yan)差異導(dao)致,業務(wu)(wu)導(dao)致,依賴導(dao)致,人員流動(dong)導(dao)致。而且很(hen)多歷史包(bao)袱還(huan)是核心功(gong)能,牽一發而動(dong)全身。所以一個(ge)平臺(tai)想要做的(de)更加長遠,不能只是追求(qiu)新(xin)技術,對業務(wu)(wu)方(fang)服務(wu)(wu),更要去做歷史系統的(de)整合,梳(shu)理,優化。