1.什么是大數(shù)據(jù)
大數(shù)據(jù)是一個大的數(shù)據(jù)集合乳丰,通過傳統(tǒng)的計算技術(shù)無法進行處理。這些數(shù)據(jù)集的測試需要使用各種工具霎桅、技術(shù)和框架進行處理凹联。大數(shù)據(jù)涉及數(shù)據(jù)創(chuàng)建、存儲哆档、檢索蔽挠、分析,而且它在數(shù)量瓜浸、多樣性澳淑、速度方法都很出色,是需要新處理模式才能具有更強的決策力插佛、洞察發(fā)現(xiàn)力和流程優(yōu)化能力的海量杠巡、高增長率和多樣化的信息資產(chǎn)。
2.大數(shù)據(jù)測試類型
測試大數(shù)據(jù)應用程序更多的是驗證其數(shù)據(jù)處理雇寇,而不是測試軟件產(chǎn)品的個別功能氢拥。當涉及到大數(shù)據(jù)測試時蚌铜,性能和功能測試是關(guān)鍵。
處理可以是三種類型:
- 批量
- 實時
- 交互
在測試應用程序之前嫩海,有必要檢查數(shù)據(jù)的質(zhì)量冬殃,并將其視為數(shù)據(jù)庫測試的一部分。它涉及檢查各種字段叁怪,如一致性审葬,準確性,重復奕谭,一致性涣觉,有效性,數(shù)據(jù)完整性
等血柳。
3.測試步驟
3.1 步驟一官册、數(shù)據(jù)預處理驗證
在進行大數(shù)據(jù)測試時,首先要預hadoop前驗證數(shù)據(jù)的準確性等等难捌。
我們數(shù)據(jù)來源可能是關(guān)系數(shù)據(jù)庫攀隔、日志系統(tǒng)、社交網(wǎng)絡(luò)等等栖榨,所有我們應該確保數(shù)據(jù)能正確的加載到系統(tǒng)中,我們要驗證:
加載的數(shù)據(jù)和源數(shù)據(jù)是一致的
確保正確的提取和加載數(shù)據(jù)至hdfs中
3.2 步驟二明刷、Map Reduce驗證
在進行大數(shù)據(jù)測試時婴栽,第二個關(guān)鍵步驟是Map Reduce驗證。在本階段辈末,我們主要驗證每一個處理節(jié)點的業(yè)務邏輯是否正確愚争,并驗證在多個運行后,確保:
- Map Reduce過程工作正常
- 數(shù)據(jù)聚合挤聘、分離規(guī)則已經(jīng)實現(xiàn)
- 數(shù)據(jù)key-value關(guān)系已正確生成
- 驗證經(jīng)過map reduce后數(shù)據(jù)的準確性等特性
3.3 步驟三轰枝、結(jié)果驗證
在本階段主要驗證在經(jīng)過大數(shù)據(jù)工具/框架處理后,生成的最終數(shù)據(jù)的成果组去。
檢查轉(zhuǎn)換(Transformation)規(guī)則被正確應用
檢查數(shù)據(jù)完整性和成功的數(shù)據(jù)加載到目標系統(tǒng)中
4.性能測試
性能測試是評估一個大數(shù)據(jù)分析系統(tǒng)的最為關(guān)鍵的維度鞍陨,大數(shù)據(jù)系統(tǒng)性能主要包括吞吐量,任務完工時間从隆,內(nèi)存利用率等多個指標诚撵,可反應大數(shù)據(jù)分析平臺的處理能力,資源利用能力等性能键闺∈傺蹋可通過hadoop性能監(jiān)控器來監(jiān)測運行狀態(tài)性能指標和瓶頸問題,性能測試采用自動化化方式進行辛燥,測試系統(tǒng)在不同負載情況下的性能筛武。
5.容錯性測試
可從部分失效中自動恢復缝其,而且不會驗證的影響整體性能,特別地徘六,當故障發(fā)生時内边,大數(shù)據(jù)分析系統(tǒng)應該在進行恢復的同時繼續(xù)以可接受的方式進行操作,在發(fā)生錯誤時某種程度上可以繼續(xù)操作硕噩,需根據(jù)應用場景來設(shè)計解決方案和具體部署假残,然后手動測試。
6.可用性測試
高可用性已是大數(shù)據(jù)分析不可或缺的特性之一炉擅,從而保證數(shù)據(jù)應用業(yè)務的連續(xù)性.大數(shù)據(jù)高可用性對很多應用非常關(guān)鍵辉懒,需要嚴格進行測試和驗證,以手動測試為主谍失。
7.擴展性測試
彈性擴展能力對于大數(shù)據(jù)時代的文件系統(tǒng)尤其重要眶俩,文件系統(tǒng)擴展性測試主要包括測試系統(tǒng)彈性擴展能力(擴展/回縮)及擴展系統(tǒng)帶來的性能影響,驗證是否具有線性擴展能力,以手動測試為主快鱼。
8.穩(wěn)定性測試
大數(shù)據(jù)分析系統(tǒng)通常是不間斷長期運行颠印,穩(wěn)定性的重要性不言而喻,穩(wěn)定測試主要驗證系統(tǒng)在長時間(7/30/180/365*24)允許下抹竹,系統(tǒng)是否仍然能夠正常運行线罕,功能是否正常.穩(wěn)定性測試通常采用自動化方式進行,LTP窃判,10ZONE钞楼,POSTMARK,FIO等工具對測試系統(tǒng)產(chǎn)生負載,同時需要驗證功能袄琳。
9.部署方式測試
大數(shù)據(jù)具備scale-out的特點询件,能夠構(gòu)建大規(guī)模,高性能的文件系統(tǒng)集群唆樊。針對不同應用和解決方案宛琅,文件系統(tǒng)部署方式會有顯著不同;部署方式測試需要測試不同場景下的系統(tǒng)部署方式逗旁,包括自動安裝配置嘿辟,集群規(guī)模,硬件配置(服務器,存儲片效,網(wǎng)絡(luò)),自動負載均衡等仓洼,這部分測試不大可能進行自動化測試,需要根據(jù)應用場景來設(shè)計解決方案和具體部署堤舒,再進行手動測試色建。
10.數(shù)據(jù)一致性測試
這里的數(shù)據(jù)一致性是指文件系統(tǒng)中的數(shù)據(jù)與從外部寫入前的數(shù)據(jù)保持一致,即寫入數(shù)據(jù)與讀出數(shù)據(jù)始終是一致的舌缤。數(shù)據(jù)一致性能夠表明文件系統(tǒng)可保證數(shù)據(jù)的完整性箕戳,不會導致數(shù)據(jù)丟失或數(shù)據(jù)錯誤某残,這是文件系統(tǒng)最基本的功能,測試可用diff,md5sum編寫腳本自動化測試陵吸,LTP也提供了數(shù)據(jù)一致性的測試工具玻墅。
11.壓力測試
大數(shù)據(jù)分析系統(tǒng)的負載能力是存在上限的,系統(tǒng)過載時壮虫,系統(tǒng)就可能存在性能下降澳厢,功能異常,拒絕訪問等問題囚似。壓力測試是驗證系統(tǒng)造大壓力下剩拢,包括數(shù)據(jù)多客戶端,高OPS壓力饶唤,高IOPS/吞吐量壓力徐伐,系統(tǒng)是否仍然能夠正常運行,功能是否正常募狂,系統(tǒng)資源消耗情況办素,從而為大數(shù)據(jù)運營提供依。
12.大數(shù)據(jù)技術(shù)板塊劃分
- 數(shù)據(jù)采集:flume kafka logstash filebeat …
- 數(shù)據(jù)存儲:mysql redis hbase hdfs …
雖然mysql不屬于大數(shù)據(jù)范疇 但是我在這也列出來了祸穷,因為你在工作中離不開它
- 數(shù)據(jù)查詢:hive impala elasticsearch kylin …
- 數(shù)據(jù)計算
- 實時計算:storm sparkstreaming flink …
- 離線計算:hadoop spark …
- 其他框架: zookeeper …
13.大數(shù)據(jù)學習步驟
1)linux基礎(chǔ)和javase基礎(chǔ)【包含mysql】
這些是基本功性穿,剛開始也不可能學的很精通,最起碼要對linux中的一些基本的命令混個臉熟雷滚,后面學習各種框架的時候都會用到需曾,用多了就熟悉了。javase的話建議主要看面向?qū)ο蠼掖耄希琲o刻蚯,多線程绊含,以及jdbc操作即可。
2)zookeeper
zookeeper是很多大數(shù)據(jù)框架的基礎(chǔ)炊汹,中文名稱是動物園的意思躬充,因為目前的大數(shù)據(jù)框架的圖標很多都是動物的形狀,所以zookeeper其實就是可以管理很多大數(shù)據(jù)框架的讨便。針對這個框架充甚,主要掌握如何搭建單節(jié)點和集群,以及掌握如何在zkcli客戶端下對zookeeper的節(jié)點進行增刪改查操作即可霸褒。
3)hadoop
目前企業(yè)中一般都是用hadoop2.x的版本了伴找,所以就沒有必要再去學hadoop1.x版本了,hadoop2.x主要包含三大塊hdfs 前期废菱,主要學習hdfs的一些命令即可技矮,上傳抖誉,下載,刪除衰倦,移動袒炉,查看等命令…mapreduce 這個需要重點學習下,要理解mr的原理以及代碼實現(xiàn)樊零,雖然現(xiàn)在工作中真正寫mr的代碼次數(shù)很少了我磁,但是原理還是要理解的。
yarn 前期了解即可驻襟,只需要知道yarn是一個資源調(diào)度平臺夺艰,主要負責給任務分配資源即可,yarn不僅可以給mapreduce任務調(diào)度資源塑悼,還可以為 spark任務調(diào)度資源…yarn是一個公共的資源調(diào)度平臺劲适,所有滿足條件的框架都可以使用yarn來進行資源調(diào)度。
4)hive
hive是一個數(shù)據(jù)倉庫厢蒜,所有的數(shù)據(jù)都是存儲在hdfs上的霞势,具體【數(shù)據(jù)倉庫和數(shù)據(jù)庫】的區(qū)別大家可以去網(wǎng)上搜索一下,有很多介紹斑鸦。其實如果對 mysql的使用比較熟悉的話愕贡,使用hive也就簡單很多了,使用hive主要是寫hql巷屿,hql是hive的sql語言固以,非常類似于mysql數(shù)據(jù)庫的 sql,后續(xù)學習hive的時候主要理解一些hive的語法特性即可嘱巾。其實hive在執(zhí)行hql憨琳,底層在執(zhí)行的時候還是執(zhí)行的mapredce程序。
注意:其實hive本身是很強大的旬昭,數(shù)據(jù)倉庫的設(shè)計在工作中也是很重要的篙螟,但是前期學習的時候,主要先學會如何使用就好了问拘。后期可以好好研究一下hive遍略。
5)hbase
hbase是一個nosql 數(shù)據(jù)庫,是一個key-value類型的數(shù)據(jù)庫骤坐,底層的數(shù)據(jù)存儲在hdfs上绪杏。在學習hbase的時候主要掌握 row-key的設(shè)計,以及列簇的設(shè)計纽绍。要注意一個特點就是蕾久,hbase基于rowkey查詢效率很快,可以達到秒級查詢拌夏,但是基于列簇中的列進行查詢腔彰, 特別是組合查詢的時候叫编,如果數(shù)據(jù)量很大的話,查詢性能會很差霹抛。
6)redis
redis也是一個nosql(非關(guān)系型數(shù)據(jù)庫) 數(shù)據(jù)庫和key-value類型的數(shù)據(jù)庫搓逾,但是這個數(shù)據(jù)庫是純基于內(nèi)存的,也就是redis數(shù)據(jù)庫中的數(shù)據(jù)都是存儲在內(nèi)存中的杯拐,所以它的一個特點就是適用 于快速讀寫的應用場景霞篡,讀寫可以達到10W次/秒,但是不適合存儲海量數(shù)據(jù)端逼,畢竟機器的內(nèi)存是有限的朗兵,當然,redis也支持集群顶滩,也可以存儲大量數(shù)據(jù)余掖。在學習redis的時候主要掌握string,list礁鲁,set盐欺,sortedset,hashmap這幾種數(shù)據(jù)類型的區(qū)別以及使用仅醇,還有 pipeline管道冗美,這個在批量入庫數(shù)據(jù)的時候是非常有用的,以及transaction事務功能析二。
7)flume
flume是一個日志采集工具粉洼,這個還是比較常用的,最常見的就是采集應用產(chǎn)生的日志文件中的數(shù)據(jù)叶摄。一般有兩個流程属韧,一個是flume采集數(shù)據(jù)存 儲到kafka中,為了后面使用storm或者sparkstreaming進行實時處理蛤吓。另一個流程是flume采集的數(shù)據(jù)落盤到hdfs上宵喂,為了后期 使用hadoop或者spark進行離線處理。在學習flume的時候其實主要就是學會看flume官網(wǎng)的文檔柱衔,學習各種組建的配置參數(shù)樊破,因為使用 flume就是寫各種的配置愉棱。
8)kafka
kafka 是一個消息隊列唆铐,在工作中常用于實時處理的場景中,作為一個中間緩沖層奔滑,例如艾岂,flume->kafka->storm/sparkstreaming。學習kafka主要掌握topic朋其,partition王浴,replicate
等的概念和原理脆炎。
9)storm
storm是一個實時計算框架,和hadoop的區(qū)別就是氓辣,hadoop是對離線的海量數(shù)據(jù)進行處理秒裕,而storm是對實時新增的每一條數(shù)據(jù)進行處理,是一條一條的處理钞啸,可以保證數(shù)據(jù)處理的時效性几蜻。學習storm主要學習topology的編寫,storm并行度的調(diào)整体斩,以及storm如何整合 kafka實時消費數(shù)據(jù)梭稚。
10)spark
spark 現(xiàn)在發(fā)展的也很不錯,也發(fā)展成了一個生態(tài)圈絮吵,spark里面包含很多技術(shù)弧烤,spark core,spark steaming蹬敲,spark mlib暇昂,spark graphx
。
spark生態(tài)圈里面包含的有離線處理spark core粱栖,和實時處理spark streaming话浇,在這里需要注意一下,storm和spark streaming 闹究,兩個都是實時處理框架幔崖,但是主要區(qū)別是:storm是真正的一條一條的處理,而spark streaming 是一批一批的處理渣淤。
spark中包含很多框架赏寇,在剛開始學習的時候主要學習spark core和spark streaming即可。這個一般搞大數(shù)據(jù)的都會用到价认。spark mlib和spark graphx 可以等后期工作需要或者有時間了在研究即可嗅定。
11)elasticsearch
elasticsearch是一個適合海量數(shù)據(jù)實時查詢的全文搜索引擎,支持分布式集群用踩,其實底層是基于lucene的渠退。在查詢的時候支持快速模 糊查詢,求count脐彩,distinct碎乃,sum,avg等操作惠奸,但是不支持join操作梅誓。elasticsearch目前也有一個生態(tài) 圈,elk(elasticsearch logstash kibana)是一個典型的日志收集,存儲梗掰,快速查詢出圖表的一整套解決方案嵌言。在學習elasticsearch的時候,前期主要學習如何使用es進行增 刪改查及穗,es中的index摧茴,type,document的概念埂陆,以及es中的mapping的設(shè)計蓬蝶。