⼤数据应⽤测试经验总结
⼤数据应⽤测试过程与传统的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_` INTO TABLE c02 PARTITION(date='2013-06-08', country='US')
注:
存储格式有四种种:textfile、sequencefile(⼆进制⽂件)、RCFfile(⾏列存储相结合)、ORC
只有TEXTFILE表能直接加载数据,必须本地load数据和external外部表直接加载运路径数据,都只能⽤TEXTFILE表。更深⼀步,hive默认⽀持的压缩⽂件(hadoop默认⽀持的压缩格式)也只能⽤TEXTFILE表直接读取。其他格式不⾏。可以通过TEXTFILE表加载后insert到其他表中。
内外部表区别:
创建内部表时,会将数据移动到数据仓库指向的路径,存储在astore.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 "表名称" , ['列名称:']
更新记录就是重写⼀遍进⾏覆
hbase应用案例
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论