测试开发进阶:⼀⽂教你从0到1搞懂⼤数据测试!
1.什么是⼤数据
⼤数据是⼀个⼤的数据集合,通过传统的计算技术⽆法进⾏处理。这些数据集的测试需要使⽤各种⼯具、技术和框架进⾏处理。⼤数据涉及数据创建、存储、检索、分析,⽽且它在数量、多样性、速度⽅法都很出⾊,是需要新处理模式才能具有更强的决策⼒、洞察发现⼒和流程优化能⼒的海量、⾼增长率和多样化的信息资产。
2.⼤数据测试类型
测试⼤数据应⽤程序更多的是验证其数据处理,⽽不是测试软件产品的个别功能。当涉及到⼤数据测试时,性能和功能测试是关键。
处理可以是三种类型:
批量
实时
交互
在测试应⽤程序之前,有必要检查数据的质量,并将其视为数据库测试的⼀部分。它涉及检查各种字段,如⼀致性,准确性,重复,⼀致性,有效性,数据完整性等。
3.测试步骤
3.1 步骤⼀、数据预处理验证
在进⾏⼤数据测试时,⾸先要预hadoop前验证数据的准确性等等。
我们数据来源可能是关系数据库、⽇志系统、社交⽹络等等,所有我们应该确保数据能正确的加载到系统中,我们要验证:
hbase属于什么数据库加载的数据和源数据是⼀致的
确保正确的提取和加载数据⾄hdfs中
3.2 步骤⼆、Map Reduce验证
在进⾏⼤数据测试时,第⼆个关键步骤是Map Reduce验证。在本阶段,我们主要验证每⼀个处理节点的业务逻辑是否正确,并验证在多个运⾏后,确保:
Map Reduce过程⼯作正常
数据聚合、分离规则已经实现
数据key-value关系已正确⽣成
验证经过map reduce后数据的准确性等特性
3.3 步骤三、结果验证
在本阶段主要验证在经过⼤数据⼯具/框架处理后,⽣成的最终数据的成果。
检查转换(Transformation)规则被正确应⽤
检查数据完整性和成功的数据加载到⽬标系统中
4.性能测试
性能测试是评估⼀个⼤数据分析系统的最为关键的维度,⼤数据系统性能主要包括吞吐量,任务完⼯时间,内存利⽤率等多个指标,可反应⼤数据分析平台的处理能⼒,资源利⽤能⼒等性能。可通过hadoop性能监控器来监测运⾏状态性能指标和瓶颈问题,性能测试采⽤⾃动化化⽅式进⾏,测试系统在不同负
载情况下的性能。
5.容错性测试
可从部分失效中⾃动恢复,⽽且不会验证的影响整体性能,特别地,当故障发⽣时,⼤数据分析系统应该在进⾏恢复的同时继续以可接受的⽅式进⾏操作,在发⽣错误时某种程度上可以继续操作,需根据应⽤场景来设计解决⽅案和具体部署,然后⼿动测试。
6.可⽤性测试
⾼可⽤性已是⼤数据分析不可或缺的特性之⼀,从⽽保证数据应⽤业务的连续性.⼤数据⾼可⽤性对很多应⽤⾮常关键,需要严格进⾏测试和验证,以⼿动测试为主。
7.扩展性测试
弹性扩展能⼒对于⼤数据时代的⽂件系统尤其重要,⽂件系统扩展性测试主要包括测试系统弹性扩展能⼒(扩展/回缩)及扩展系统带来的性能影响,验证是否具有线性扩展能⼒,以⼿动测试为主。
8.稳定性测试
⼤数据分析系统通常是不间断长期运⾏,稳定性的重要性不⾔⽽喻,稳定测试主要验证系统在长时间(7/30/180/365*24)允许下,系统是否仍然能够正常运⾏,功能是否正常.稳定性测试通常采⽤⾃动化⽅式进⾏,LTP,10ZONE,POSTMARK,FIO等⼯具对测试系统产⽣负载,同时需要验证功能。
9.部署⽅式测试
⼤数据具备scale-out的特点,能够构建⼤规模,⾼性能的⽂件系统集。针对不同应⽤和解决⽅案,⽂件系统部署⽅式会有显著不同;部署⽅式测试需要测试不同场景下的系统部署⽅式,包括⾃动安装配置,集规模,硬件配置(服务器,存储,⽹络),⾃动负载均衡等,这部分测试不⼤可能进⾏⾃动化测试,需要根据应⽤场景来设计解决⽅案和具体部署,再进⾏⼿动测试。
10.数据⼀致性测试
这⾥的数据⼀致性是指⽂件系统中的数据与从外部写⼊前的数据保持⼀致,即写⼊数据与读出数据始终是⼀致的。数据⼀致性能够表明⽂件系统可保证数据的完整性,不会导致数据丢失或数据错误,这是⽂件系统最基本的功能,测试可⽤diff,md5sum编写脚本⾃动化测试,LTP也提供了数据⼀致性的测试⼯具。
11.压⼒测试
⼤数据分析系统的负载能⼒是存在上限的,系统过载时,系统就可能存在性能下降,功能异常,拒绝访问等问题。压⼒测试是验证系统造⼤压⼒下,包括数据多客户端,⾼OPS压⼒,⾼IOPS/吞吐量压⼒,系统是否仍然能够正常运⾏,功能是否正常,系统资源消耗情况,从⽽为⼤数据运营提供依。
12.⼤数据技术板块划分
数据采集:flume kafka logstash filebeat …
数据存储:mysql redis hbase hdfs …
虽然mysql不属于⼤数据范畴但是我在这也列出来了,因为你在⼯作中离不开它
数据查询:hive impala elasticsearch kylin …
数据计算
实时计算:storm sparkstreaming flink …
离线计算:hadoop spark …
其他框架: zookeeper …
13.⼤数据学习步骤
1)linux基础和javase基础【包含mysql】
这些是基本功,刚开始也不可能学的很精通,最起码要对linux中的⼀些基本的命令混个脸熟,后⾯学习各种框架的时候都会⽤到,⽤多了就熟悉了。javase的话建议主要看⾯向对象,集合,io,多线程,以及jdbc操作即可。
2)zookeeper
zookeeper是很多⼤数据框架的基础,中⽂名称是动物园的意思,因为⽬前的⼤数据框架的图标很多都是动物的形状,所以zookeeper其实就是可以管理很多⼤数据框架的。针对这个框架,主要掌握如何搭建单节点和集,以及掌握如何在zkcli客户端下对zookeeper的节点进⾏增删改查操作即可。
3)hadoop
⽬前企业中⼀般都是⽤hadoop2.x的版本了,所以就没有必要再去学hadoop1.x版本了,hadoop2.x主要包含三⼤块hdfs 前期,主要学习hdfs 的⼀些命令即可,上传,下载,删除,移动,查看等命令…mapreduce 这个需要重点学习下,要理解mr的原理以及代码实现,虽然现在⼯作中真正写mr的代码次数很少了,但是原理还是要理解的。
yarn 前期了解即可,只需要知道yarn是⼀个资源调度平台,主要负责给任务分配资源即可,yarn不仅可以给mapreduce任务调度资源,还可
以为 spark任务调度资源…yarn是⼀个公共的资源调度平台,所有满⾜条件的框架都可以使⽤yarn来进⾏资源调度。
4)hive
hive是⼀个数据仓库,所有的数据都是存储在hdfs上的,具体【数据仓库和数据库】的区别⼤家可以去⽹上搜索⼀下,有很多介绍。其实如果对 mysql的使⽤⽐较熟悉的话,使⽤hive也就简单很多了,使⽤hive主要是写hql,hql是hive的sql语⾔,⾮常类似于mysql数据库的 sql,后续学习hive的时候主要理解⼀些hive的语法特性即可。其实hive在执⾏hql,底层在执⾏的时候还是执⾏的mapredce程序。
注意:其实hive本⾝是很强⼤的,数据仓库的设计在⼯作中也是很重要的,但是前期学习的时候,主要先学会如何使⽤就好了。后期可以好好研究⼀下hive。
5)hbase
hbase是⼀个nosql 数据库,是⼀个key-value类型的数据库,底层的数据存储在hdfs上。在学习hbase的时候主要掌握 row-key的设计,以及列簇的设计。要注意⼀个特点就是,hbase基于rowkey查询效率很
快,可以达到秒级查询,但是基于列簇中的列进⾏查询,特别是组合查询的时候,如果数据量很⼤的话,查询性能会很差。
6)redis
redis也是⼀个nosql(⾮关系型数据库)数据库和key-value类型的数据库,但是这个数据库是纯基于内存的,也就是redis数据库中的数据都是存储在内存中的,所以它的⼀个特点就是适⽤于快速读写的应⽤场景,读写可以达到10W次/秒,但是不适合存储海量数据,毕竟机器的内存是有限的,当然,redis也⽀持集,也可以存储⼤量数据。在学习redis的时候主要掌握string,list,set,sortedset,hashmap这⼏种数据类型的区别以及使⽤,还有 pipeline管道,这个在批量⼊库数据的时候是⾮常有⽤的,以及transaction事务功能。
7)flume
flume是⼀个⽇志采集⼯具,这个还是⽐较常⽤的,最常见的就是采集应⽤产⽣的⽇志⽂件中的数据。⼀般有两个流程,⼀个是flume采集数据存储到kafka中,为了后⾯使⽤storm或者sparkstreaming进⾏实时处理。另⼀个流程是flume采集的数据落盘到hdfs上,为了后期使⽤hadoop或者spark进⾏离线处理。在学习flume的时候其实主要就是学会看flume官⽹的⽂档,学习各种组建的配置参数,因为使⽤ flume就是写各种的配置。
8)kafka
kafka 是⼀个消息队列,在⼯作中常⽤于实时处理的场景中,作为⼀个中间缓冲层,例如,flume->kafka->storm/sparkstreaming。学习kafka 主要掌握topic,partition,replicate等的概念和原理。
9)storm
storm是⼀个实时计算框架,和hadoop的区别就是,hadoop是对离线的海量数据进⾏处理,⽽storm是对实时新增的每⼀条数据进⾏处理,是⼀条⼀条的处理,可以保证数据处理的时效性。学习storm主要学习topology的编写,storm并⾏度的调整,以及storm如何整合 kafka实时消费数据。
10)spark
spark 现在发展的也很不错,也发展成了⼀个⽣态圈,spark⾥⾯包含很多技术,spark core,spark steaming,spark mlib,spark graphx。
spark⽣态圈⾥⾯包含的有离线处理spark core,和实时处理spark streaming,在这⾥需要注意⼀下,storm和spark streaming ,两个都是实时处理框架,但是主要区别是:storm是真正的⼀条⼀条的处理,⽽spark streaming 是⼀批⼀批的处理。
spark中包含很多框架,在刚开始学习的时候主要学习spark core和spark streaming即可。这个⼀般搞⼤数据的都会⽤到。spark mlib和spark graphx 可以等后期⼯作需要或者有时间了在研究即可。
11)elasticsearch
elasticsearch是⼀个适合海量数据实时查询的全⽂搜索引擎,⽀持分布式集,其实底层是基于lucene的。在查询的时候⽀持快速模糊查询,求count,distinct,sum,avg等操作,但是不⽀持join操作。elasticsearch⽬前也有⼀个⽣态圈,elk(elasticsearch logstash kibana)是⼀个典型的⽇志收集,存储,快速查询出图表的⼀整套解决⽅案。在学习elasticsearch的时候,前期主要学习如何使⽤es进⾏增删改查,es 中的index,type,document的概念,以及es中的mapping的设计。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论