大數據應用測試過程與傳統的web系統有較大的不同,大數據應用測試通常會分為web側和ETL側測試,web側基本就是功能測試,而ETL(Extracting-Transfroming-Loading)測試主要指從任何外部系統提取、轉換、載入數據到目標地。從底層數據采集、數據處理、到上層應用展現。
一、從技術架構設計上,分為以下幾塊:
- 數據采集:采集使用java和python程序從文件服務器下載文件,並把文件寫入kafka、Hbase和Hive、Mysql中;
- 計算引擎:使用Hive on Tez計算引擎實現ETL跑批任務;使用spark streaming實現實時計算;使用Phoenix做前台交互式查詢。
- 數據存儲:使用Kafka、Hive、Hbase、MySQL滿足各層次存儲技術需求。
- 任務調度:使用Quartz實現作業調度及管理。
- 監控接口:使用Kafka、文件接口對接統一監控平台。
- 數據可視化:使用JQuery、Echarts、Easy UI等技術實現圖表、表格展示;使用Apache POI實現excel、CSV的導入導出;使用Log4J記錄日志;使用Spring框架實現頁面、服務、數據的集成管理;使用DBCP實現數據庫連接池。
- 數據模型層次說明
ODS:貼源層,存儲原始數據,數據采集直接寫入;
DWD:數據倉庫明細層,存儲從源數據抽去過來的明細數據;
DW:數據倉庫層,保存經過數據降維匯聚的計算后生成的匯總數據;
DM:數據集市層,滿足特定功能而建立的各種數據集市。
- 數據處理過程說明
- 數據采集模塊從采集機采集相關業務數據;
- 數據采集模塊定期把原始數據導入Hive庫中的ODS層相關表中;實時數據及時寫入kafka提供給spark streaming處理;公參數據寫入mysql中。
- ETL模塊從ODS層相關表中抽取數據到DWD層;
- ETL模塊根據輕度匯總要求進行數據輕度匯總操作,並把匯總后的數據放到DW層中;
- 一些功能所需數據無法從輕度匯總表計算出來,需要從DWD中原始表進行匯總;
- ETL模塊從DW層獲取輕度匯總數據,根據各業務功能要求進一步匯總數據,形成DM層數據;
- 即席查詢數據從Hive關聯到Hbase中;
- Phoenix關聯到HBase中,供頁面查詢使用;
- 部分ETL模塊數據把Hive中匯總后數據導入MySQL中,供模型建模使用;
二、Hadoop運行:
mapreduce機制:
常用命令:
功能 | 命令 |
---|---|
查看目錄 | |
上傳文件 | |
創建目錄 | hadoop fs -mkdir ${dirname} |
獲取文件 | |
刪除多個文件或目錄 | |
復制文件 | |
移動文件 |
|
三、hive和hbase比較:
Hive(非數據庫) |
Hbase(數據庫) |
|
適用場景 |
用於對一段時間內的數據進行分析查詢,離線批處理 |
大數據的實時查詢 |
特點 |
1、一種類SQL的引擎,運行MapReduce任務; 2、查詢一般是全量查詢,時間較長,可通過分區來優化; 3、基於行查詢,定義時每行有固定列數據,每列數據固定大小; 4、操作:不支持更新操作 |
1、一種在Hadoop之上的NoSQL型Key/Value數據庫; 2、查詢是通過特定語言編寫,可通過Phonenix實現類SQL功能; 3、基於列查詢,可定義各種不同的列,每列數據大小不固定; |
四、hive常用操作
hive | 基礎操作 | 說明 |
---|---|---|
查看數據庫 | show databases | |
使用數據庫 | use DbName | |
刪除數據庫 | drop database if exists DbName CASCADE | 如果數據庫不為空,刪除會報錯,加上cascade可忽略 |
查看表 | show tables in DbName ; show tables like ‘h*’ | |
創建表 | 內部表:CREATE TABLE page_view if not exists(viewTime INT, userid BIGINT, |
外部表: CREATE EXTERNAL TABLE page_view(viewTime INT, userid BIGINT, |
加載表 | LOAD DATA LOCAL INPATH `/tmp/pv_2013-06-08_us.txt` INTO TABLE c02 PARTITION(date='2013-06-08', country='US') |
注:
存儲格式有四種種:textfile、sequencefile(二進制文件)、RCFfile(行列存儲相結合)、ORC
只有TEXTFILE表能直接加載數據,必須本地load數據和external外部表直接加載運路徑數據,都只能用TEXTFILE表。更深一步,hive默認支持的壓縮文件(hadoop默認支持的壓縮格式)也只能用TEXTFILE表直接讀取。其他格式不行。可以通過TEXTFILE表加載后insert到其他表中。
內外部表區別:
創建內部表時,會將數據移動到數據倉庫指向的路徑,存儲在hive.metastore.warehouse.dir路徑屬性下,默認情況下位於/user/hive/warehouse/databasename.db/tablename/ 文件夾路徑中,刪除內部表會將元數據和數據同步刪除。創建外部表時,僅記錄數據所在的路徑(location),不對數據的位置做任何變化,外部表文件可以由Hive外部的進程訪問和管理。外部表可以訪問存儲在Azure Storage Volumes(ASV)或遠程HDFS位置等源中的數據,刪除外部表時,只刪除元數據,不刪除文件中數據。
五、HBase Shell的一些基本操作命令,列出了幾個常用的HBase Shell命令,如下:
查看存在哪些表 | list |
創建表 | create '表名稱', '列名稱1','列名稱2','列名稱N' |
添加記錄 | put '表名稱', '行名稱', '列名稱:', '值' |
查看記錄 | get '表名稱', '行名稱' |
查看表中的記錄總數 | count '表名稱' |
刪除記錄 | delete '表名' ,'行名稱' , '列名稱' |
刪除一張表 | 先要屏蔽該表,才能對該表進行刪除,第一步 disable '表名稱' 第二步 drop '表名稱' |
查看所有記錄 | scan "表名稱" |
查看某個表某個列中所有數據 | scan "表名稱" , ['列名稱:'] |
更新記錄 | 就是重寫一遍進行覆 |