大數據應用測試經驗總結


       大數據應用測試過程與傳統的web系統有較大的不同,大數據應用測試通常會分為web側和ETL側測試,web側基本就是功能測試,而ETL(Extracting-Transfroming-Loading)測試主要指從任何外部系統提取、轉換、載入數據到目標地。從底層數據采集、數據處理、到上層應用展現。

一、從技術架構設計上,分為以下幾塊:

  1. 數據采集:采集使用java和python程序從文件服務器下載文件,並把文件寫入kafka、Hbase和Hive、Mysql中;
  2. 計算引擎:使用Hive on Tez計算引擎實現ETL跑批任務;使用spark streaming實現實時計算;使用Phoenix做前台交互式查詢。
  3. 數據存儲:使用Kafka、Hive、Hbase、MySQL滿足各層次存儲技術需求。
  4. 任務調度:使用Quartz實現作業調度及管理。
  5. 監控接口:使用Kafka、文件接口對接統一監控平台。
  6. 數據可視化:使用JQuery、Echarts、Easy UI等技術實現圖表、表格展示;使用Apache POI實現excel、CSV的導入導出;使用Log4J記錄日志;使用Spring框架實現頁面、服務、數據的集成管理;使用DBCP實現數據庫連接池。
  7. 數據模型層次說明

                ODS:貼源層,存儲原始數據,數據采集直接寫入;

                DWD:數據倉庫明細層,存儲從源數據抽去過來的明細數據;

                DW:數據倉庫層,保存經過數據降維匯聚的計算后生成的匯總數據;

                DM:數據集市層,滿足特定功能而建立的各種數據集市。

  1. 數據處理過程說明

  1. 數據采集模塊從采集機采集相關業務數據;
  2. 數據采集模塊定期把原始數據導入Hive庫中的ODS層相關表中;實時數據及時寫入kafka提供給spark streaming處理;公參數據寫入mysql中。
  3. ETL模塊從ODS層相關表中抽取數據到DWD層;
  4. ETL模塊根據輕度匯總要求進行數據輕度匯總操作,並把匯總后的數據放到DW層中;
  5. 一些功能所需數據無法從輕度匯總表計算出來,需要從DWD中原始表進行匯總;
  6. ETL模塊從DW層獲取輕度匯總數據,根據各業務功能要求進一步匯總數據,形成DM層數據;
  7. 即席查詢數據從Hive關聯到Hbase中;
  8. Phoenix關聯到HBase中,供頁面查詢使用;
  9. 部分ETL模塊數據把Hive中匯總后數據導入MySQL中,供模型建模使用;

二、Hadoop運行:

mapreduce機制:

 

常用命令:

 

功能 命令
查看目錄
hadoop fs -ls dir
上傳文件
hadoop fs -put ${local file} ${hdfs file}
創建目錄 hadoop fs -mkdir ${dirname}
獲取文件
hadoop fs -get ${hdfs file} ${local file}
刪除多個文件或目錄
hadoop fs -rm ${hdfs file} ...
hadoop fs -rm -r ${hdfs file}...
復制文件
hadoop fs -cp ${hdfs file} ${hdfs file}
移動文件
hadoop fs -mv ${hdfs file} ${hdfs file}

 

 

三、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,
page_url STRING, referrer_url STRING,
ip STRING COMMENT 'IP Address of the User')
COMMENT 'This is the page view table'
PARTITIONED BY(dt STRING, country STRING)
CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
COLLECTION ITEMS TERMINATED BY '\002'
MAP KEYS TERMINATED BY '\003'
STORED AS SEQUENCEFILE;

外部表:

CREATE EXTERNAL TABLE page_view(viewTime INT, userid BIGINT,
page_url STRING, referrer_url STRING,
ip STRING COMMENT 'IP Address of the User',
country STRING COMMENT 'country of origination')
COMMENT 'This is the staging page view table'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054'
STORED AS TEXTFILE
LOCATION '<hdfs_location>';

加載表
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 "表名稱" , ['列名稱:']
更新記錄 就是重寫一遍進行覆


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM