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ù)應(yīng)用程序更多的是驗證其數(shù)據(jù)處理,而不是測試軟件產(chǎn)品的個別功能。當涉及到大數(shù)據(jù)測試時,性能和功能測試是關(guān)鍵。處理可以是三種類型:
● 批量
● 實時
● 交互 在測試應(yīng)用程序之前,有必要檢查數(shù)據(jù)的質(zhì)量,并將其視為數(shù)據(jù)庫測試的一部分。它涉及檢查各種字段,如一致性,準確性,重復,一致性,有效性,數(shù)據(jù)完整性等。
3.測試步驟

3.1 步驟一、數(shù)據(jù)預(yù)處理驗證
在進行大數(shù)據(jù)測試時,首先要預(yù)hadoop前驗證數(shù)據(jù)的準確性等等。我們數(shù)據(jù)來源可能是關(guān)系數(shù)據(jù)庫、日志系統(tǒng)、社交網(wǎng)絡(luò)等等,所有我們應(yīng)該確保數(shù)據(jù)能正確的加載到系統(tǒng)中,我們要驗證:加載的數(shù)據(jù)和源數(shù)據(jù)是一致的 確保正確的提取和加載數(shù)據(jù)至hdfs中
3.2 步驟二、Map Reduce驗證
在進行大數(shù)據(jù)測試時,第二個關(guān)鍵步驟是Map Reduce驗證。在本階段,我們主要驗證每一個處理節(jié)點的業(yè)務(wù)邏輯是否正確,并驗證在多個運行后,確保:
● 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ī)則被正確應(yīng)用 檢查數(shù)據(jù)完整性和成功的數(shù)據(jù)加載到目標系統(tǒng)中
4.性能測試
性能測試是評估一個大數(shù)據(jù)分析系統(tǒng)的最為關(guān)鍵的維度,大數(shù)據(jù)系統(tǒng)性能主要包括吞吐量,任務(wù)完工時間,內(nèi)存利用率等多個指標,可反應(yīng)大數(shù)據(jù)分析平臺的處理能力,資源利用能力等性能??赏ㄟ^hadoop性能監(jiān)控器來監(jiān)測運行狀態(tài)性能指標和瓶頸問題,性能測試采用自動化化方式進行,測試系統(tǒng)在不同負載情況下的性能。
5.容錯性測試
可從部分失效中自動恢復,而且不會驗證的影響整體性能,特別地,當故障發(fā)生時,大數(shù)據(jù)分析系統(tǒng)應(yīng)該在進行恢復的同時繼續(xù)以可接受的方式進行操作,在發(fā)生錯誤時某種程度上可以繼續(xù)操作,需根據(jù)應(yīng)用場景來設(shè)計解決方案和具體部署,然后手動測試。
6.可用性測試
高可用性已是大數(shù)據(jù)分析不可或缺的特性之一,從而保證數(shù)據(jù)應(yīng)用業(yè)務(wù)的連續(xù)性.大數(shù)據(jù)高可用性對很多應(yīng)用非常關(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)集群。針對不同應(yīng)用和解決方案,文件系統(tǒng)部署方式會有顯著不同;部署方式測試需要測試不同場景下的系統(tǒng)部署方式,包括自動安裝配置,集群規(guī)模,硬件配置(服務(wù)器,存儲,網(wǎng)絡(luò)),自動負載均衡等,這部分測試不大可能進行自動化測試,需要根據(jù)應(yīng)用場景來設(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ū)ο螅?,io,多線程,以及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)度平臺,主要負責給任務(wù)分配資源即可,yarn不僅可以給mapreduce任務(wù)調(diào)度資源,還可以為 spark任務(wù)調(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)存中的,所以它的一個特點就是適用 于快速讀寫的應(yīng)用場景,讀寫可以達到10W次/秒,但是不適合存儲海量數(shù)據(jù),畢竟機器的內(nèi)存是有限的,當然,redis也支持集群,也可以存儲大量數(shù)據(jù)。在學習redis的時候主要掌握string,list,set,sortedset,hashmap這幾種數(shù)據(jù)類型的區(qū)別以及使用,還有 pipeline管道,這個在批量入庫數(shù)據(jù)的時候是非常有用的,以及transaction事務(wù)功能。
7)flume
flume是一個日志采集工具,這個還是比較常用的,最常見的就是采集應(yīng)用產(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è)計。
文章來源:網(wǎng)絡(luò)? 版權(quán)歸原作者所有
上文內(nèi)容不用于商業(yè)目的,如涉及知識產(chǎn)權(quán)問題,請權(quán)利人聯(lián)系小編,我們將立即處理