閱讀本文前建議先閱讀云梯跨機(jī)房方案介紹,了解云梯跨機(jī)房項(xiàng)目背景,難點(diǎn)以及解決方案。本文重點(diǎn)介紹下跨機(jī)房
測(cè)試的整體解決方案
測(cè)試用例管理:http://kelude.taobao.net/testsuites?project_id=12202
數(shù)據(jù)安全性測(cè)試
數(shù)據(jù)安全簡單的說就是不能丟數(shù)據(jù),跨機(jī)房后集群規(guī)模到達(dá)近萬臺(tái),數(shù)據(jù)存儲(chǔ)到達(dá)數(shù)百PB,如何確保數(shù)據(jù)安全是一個(gè)很大的挑戰(zhàn)
在跨機(jī)房的情況下,我們通過(Sange、Slive、DFSIO)模擬線上比例的各種混合性操作,通過NN的FSCK, CN的 CrossCheck工具定位異常數(shù)據(jù)如CORRUPT,一直處于BEING WRITTEN無法關(guān)閉的文件,跨機(jī)房失敗的文件
數(shù)據(jù)安全性測(cè)試?yán)镄枰紤]的一種重要場(chǎng)景是NN和DN重啟,在實(shí)際的升級(jí)過程中,在集群重啟前各業(yè)務(wù)線并沒有停止讀寫數(shù)據(jù),重啟后數(shù)據(jù)的一致性和可恢復(fù)性非常重要;在實(shí)際的跨機(jī)房測(cè)試中我們?cè)l(fā)現(xiàn)一個(gè)因?yàn)橹貑⒑鬆顟B(tài)不一致導(dǎo)致無法加載EDITLOG從而使NN無法啟動(dòng)的BUG,如果這種問題發(fā)生到線上,后果不堪設(shè)想
性能測(cè)試的關(guān)鍵點(diǎn)是如何建立性能基準(zhǔn),對(duì)線上性能進(jìn)行準(zhǔn)確評(píng)估,跨機(jī)房測(cè)試性能基準(zhǔn)工具主要包括:
DFSIO: HDFS I/O(讀寫) 性能基準(zhǔn)
Slive: 主要模擬線上各種RPC,在每個(gè)TASK發(fā)起混合型RPC操作,并可以指定文件和block大小,該工具可以同時(shí)測(cè)試NN和DN的性能;
Sange: 主要模擬線上各種RPC操作壓力,在每個(gè)TASK啟動(dòng)大量Thread進(jìn)行混合性RPC操作 ,對(duì)NN產(chǎn)生壓力,進(jìn)而評(píng)估NN RPC 處理能力;SANGE工具不能指定文件和Block大小,會(huì)產(chǎn)生大量小文件,比SLIVE對(duì)NN可以產(chǎn)生更大的RPC壓力
Terasort:MapReduce 數(shù)據(jù)排序能力基準(zhǔn)
Gridmix :Gridmix和Rumen結(jié)合可以模擬和生產(chǎn)作業(yè)相應(yīng)的負(fù)載,更真實(shí)的模擬生產(chǎn)環(huán)境
SmallJobBench:通過創(chuàng)建大量sleep job到不同group來測(cè)試jobtracker性能
SubmitJobBench:通過每個(gè)map啟動(dòng)(-nThreads)個(gè)線程,每個(gè)線程順序提交(-nTasks)個(gè)作業(yè), 每個(gè)線程有自己的獨(dú)立賬號(hào),來模擬線上多賬號(hào)并行度2K情況下JTProxy性能
跨機(jī)房性能主要對(duì)比場(chǎng)景:
主要針對(duì)上述場(chǎng)景進(jìn)行性能對(duì)比和評(píng)估包括NN帶寬,內(nèi)存,CPU load, NN RPC 指標(biāo), NN 各個(gè)operation的吞吐量(opsper second)和平均執(zhí)行時(shí)間, NN同步editlog性能指標(biāo),跨機(jī)房帶寬流量,跨機(jī)房復(fù)制速率,跨機(jī)房副本刪除速率,CROSSFSCK時(shí)間
跨機(jī)房測(cè)試還有很重要的一點(diǎn)是要保證計(jì)算一定優(yōu)先從本機(jī)房讀數(shù)據(jù),除非本機(jī)房沒有數(shù)據(jù)才會(huì)跨機(jī)房讀;實(shí)際測(cè)試中TERASORT跨機(jī)房讀對(duì)比本機(jī)房讀性能會(huì)有32%左右的下降,而且對(duì)帶寬也是很大的浪費(fèi)。
重要性能指標(biāo)參考:
1. cpu_user 2. cpu_wio 3. mem_free 4. bytes_in 5. bytes_out 6. load_five 7. total-iops 8. total-ReadBytes 9. total-WriteBytes 10. dfs.namenode.Syncs_avg_time 11. dfs.namenode.Syncs_num_ops 12. dfs.namenode.Transactions_num_ops 13. rpc.metrics.RpcProcessingTime_avg_time 14. rpc.metrics.RpcQueueTime_avg_time 15. rpc.metrics.RpcProcessingTime_num_ops 16. rpc.metrics.delayedCallsQueueLen 17. rpc.metrics.RpcQueueTime_num_ops 18. rpc.metrics.addBlock_num_ops 19. rpc.metrics.append_num_ops 20. rpc.metrics.create_num_ops 21. rpc.metrics.delete_num_ops 22. rpc.metrics.getFileInfo_num_ops 23. rpc.metrics.getListing_num_ops 24. rpc.metrics.listCorruptFileBlocks_num_ops 25. rpc.metrics.mkdirs_num_ops 26. rpc.metrics.rename_num_ops 27. rpc.metrics.RpcProcessingTime_num_ops 28. rpc.metrics.RpcQueueTime_num_ops 29. rpc.metrics.blockReport_num_ops 30. rpc.metrics.blockReceivedAndDeleted_num_ops 31. rpc.metrics.sendHeartbeat_num_ops 32. rpc.metrics.rollEditLog_num_ops 33. rpc.metrics.getBlockLocationsHA_num_ops 34. rpc.metrics.getBlockLocations_num_ops |
壓力測(cè)試
壓力測(cè)試和性能測(cè)試關(guān)系緊密,壓力測(cè)試更側(cè)重于在線上最大壓力的情況下系統(tǒng)是否可以正常工作,性能測(cè)試則側(cè)重于新上線的版本是否有性能下降問題,主要是基于基準(zhǔn)進(jìn)行性能對(duì)比
壓力測(cè)試比較難的一點(diǎn)是如何在小規(guī)模的測(cè)試集群模擬線上真實(shí)的壓力,基本思路是 啟動(dòng)MR程序, 每個(gè)Task啟動(dòng)多個(gè)Thread,在每個(gè)thread進(jìn)行大量模擬操作,NN和DN壓力測(cè)試我們可以用到SANGE和Slive,JTPROXY壓力測(cè)試可以用到SubmitJobBench,JT壓力測(cè)試可以用到SmallJobBench和GurgleClient(TaskTracker模擬器)
跨機(jī)房壓力測(cè)試主要是評(píng)估crossnode的自身壓力和crossnode對(duì)namenode、datanode的壓力影響;crossnode對(duì)namenode壓力主要體現(xiàn)在RPC的請(qǐng)求,對(duì)datanode的壓力目前主要體現(xiàn)在帶寬和磁盤上
數(shù)據(jù)準(zhǔn)備:利用SLIVE工具產(chǎn)生跟線上一樣數(shù)量的Block和文件數(shù)
跨機(jī)房壓力主要場(chǎng)景:
穩(wěn)定性測(cè)試
構(gòu)建BI仿真實(shí)驗(yàn)室,模擬整個(gè)云梯跨機(jī)房項(xiàng)目變更流程,運(yùn)行BI線一日的作業(yè),查看作業(yè)運(yùn)行情況和做數(shù)據(jù)產(chǎn)出對(duì)比,驗(yàn)證跨機(jī)房后數(shù)據(jù)的正確性和業(yè)務(wù)線運(yùn)行時(shí)間是否受影響
總結(jié)
整個(gè)項(xiàng)目過程中,測(cè)試人員共發(fā)現(xiàn)有效bug 100多個(gè),其中5個(gè)bug嚴(yán)重影響性能,10個(gè)bug可能導(dǎo)致丟數(shù)據(jù),4個(gè)bug會(huì)導(dǎo)致服務(wù)不可用
本文主要是跨機(jī)房的測(cè)試整體介紹,整個(gè)跨機(jī)房測(cè)試是一個(gè)非常復(fù)雜的過程,可能大家覺得不是很過癮,后續(xù)會(huì)進(jìn)行跨機(jī)房測(cè)試經(jīng)典BUG和工具分享,敬請(qǐng)期待