大数据测试

一、绪论:

大数据是大容量、高速率、多形态的信息资产,且需要成本效益、信息处理来增加洞察力和决策创新形式。大数据是指大小超出了典型数据库软件工具收集、存储、管理和分析能力的数据集。

大数据分析框架测试、算法质量测试、性能测试、大数据安全和隐私软件测试的经典定义:为发现软件错误,而运行软件的活动。

基本思路:根据软件需求规格说明书,执行软件操作和输入数据,依据软件实际输出结果和预期输出结果来评判软件是否满足规格的要求

本书以Hadoop为主线:底层支撑框架层聚焦于单元测试和框架基准测试;基本算法中涵盖了聚类、分类及其个性化推荐;应用层中,介绍了其性能测试中的若干问题,阐述了数据集的设计与分析;最后讨论了大数据的安全和隐私问题。

大数据特征

数据类型繁多;处理速度快;数据体量大;数据价值;真实性

大数据的过程模型

数据源;数据收集及录入;数据过滤及分类;数据分类/建模/预测;数据交付及可视化;消费者的数据分析及应用

大数据相关标准

大数据相关的标准可分为两大类:基础类和技术类。基础类包括大数据平台技术参考架构、大数据总体技术要求、大数据标准化指南。技术类可分为数据采集、数据存储、数据处理和分析、数据管理。

1.数据采集 数据抽取和预处理等相关规范

2.数据存储 各种类型数据的存储和访问接口规范。

3.数据处理和分析

4.数据管理 针对数据的源数据管理、质量管理及数据管理接口规范

大数据的应用

趋势预测;疫情分析;消费行为分析;智慧金融;智慧金融;精确营销; 舆情分析;

大数据引起的软件变化

传统的软件架构无法满足大数据处理的要求;大数据软件处理的结果是未知的;大数据的软件思维模式发生逆转。

软件测试的新挑战

测试ORACLE问题: 软件测试的基本前提是在确定的输入下,存在确定的输出。测试要将软件运行的实际结果和预期的结果相比较,从而得出软件运行正确与否。

测试能力问题:测试结果的判定问题:在大数据的分析背景下,典型的应用场景不存在确定的输出,大数据的分析的准确性很大程度上依赖于数据的输入和数据的分布特性。

隐私问题:(略)

二、面向大数据框架的测评

本章将介绍Hadoop大数据框架的单元测试、大数据的数据清洗、数据质量评估框架以及大数据的基准性能测试技术。

2.1大数据的数据处理流程

在处理大数据之前需要对来自不同数据源的数据进行数据处理,包括数据抽取和数据集成。通过数据抽取和数据集成操作提取出关系和实体,对其进行关联和聚类的相关操作后,采用统一定义的结构来存储这些数据。数据清洗在数据集成与数据抽取之前,保证数据质量与可行性。

2.2面向数据质量的测评

数据质量的定义

数据本身质量:数据真实性、数据完备性、数据自治性。

数据过程质量:数据使用质量、数据存储质量、数据传输质量。

数据质量问题的分类

数据预处理

1.数据清理

不符合要求的数据:数据缺失;数据错误;数据重复(mapreduce去重)

2.数据集成/数据变换

数据集成是指从逻辑上或者物理上将来源或格式以及特点性质不同的数据有机地集中起来,为数据挖掘提供完整的数据源。

数据集成问题分类:数据表链接不匹配;冗余;数据值冲突。

数据变换:属性的数据类型转换;属性构造;数据离散化;数据标准化。

3.数据规约

可以获得数据集的简化表示;属性选择、实例选择。

数据质量测评

1.数据清洗框架和工具

数据清洗:映射、匹配、聚集、合并、跟踪。

2.数据清洗评估

相关性;准确性;及时性;完整性;一致性;

2.3分布式数据模型及测试

框架:

Hadoop的核心是HDFS和MapReduce,为用户提供了系统底层透明的分布式基础框架。

mapreduce:分布式数据处理模型和执行环境,运用于大规模的通用计算机集群。

HDFS:Hadoop的分布式文件系统,运用于大规模的通用计算机集群。

HBase:分布式按列存储的数据,使用HDFS作为底层存储,同时支持MapReduce的批量式计算和点查询。

Hive:分布式、按列存储的数据仓库。

数据模型

最底层的两个抽象实体,分别是HDFS和MapReduce。

单元测试

MRUnit是针对MapReduce的单元测试框架;针对不同的测试对象,MRUnit使用以下几种Driver:

MapDriver 测试单独的Map

ReduceDriver 测试单独的Reduce

MapReduce Driver 将Map与Reduce结合起来测试

从Apache下载MRUnit最新版的jar包,并将jar包添加到hadoop的IDE Classpath 路径中。

测试代码:
public class SMSCDRMapperReducerTest{
    MapDriver<LongWritable,Text,Text,IntWritable>mapDriver; 
    ReduceDriver<Text,IntWritable,Text,IntWritable>reduceDriver;
    MapReduceDriver<LongWritable,Text,Text,IntWritable,Text,IntWritable>mapReduceDriver;
    @Before
       public void setUp(){
           SMSCDRMapper mapper = new SMSCDRMapper();
           SMSCDReducer reducer = new SMSCDRReducer();
           mapReduceDriver = MapReduceDriver.newMapReduceDriver(mapper,reducer);
       }
   @Text    
       public void testMapReduce(){
               Text mapInputValue1 = new Text("595877;1;7585458855;4441417;5")
               Text mapInputValue2 = new Text("735856;1;5498749558;8478941;3")
               mapReduceDriver.withInput(new LongWritable(1),mapInputValue1);
               mapReduceDriver.withInput(new LongWritable(1),mapInputValue2);
               mapReduceDriver.addOutput(new Text("5"),new IntWritable(1));
               mapReduceDriver.addOutput(new Text("3"),new IntWritable(1));
               maReduceDriver.runTest();
       }
}

2.4大数据的基准测试

基准测试是一种测量和评估软件性能指标的典型活动。可以在某个时刻通过基准测试建立一个已知的性能水平,当系统的软硬件环境发生变化后再进行一次基准测试,以确定那些变化对性能的影响。

2.4.1测试方法
1)测试步骤

通常是在系统上运行一系列的测试程序,并把性能计数器的结果保存起来,这些结果称为“性能指标”。

2)测试工具集

包括工业界、科研界提出的测试工具集和大数据提供的测试基准。

具体包括:

1.BigBench

2.hadoop自带的测试基准,这些程序可以从多个角度对Hadoop进行测试,TestDFSIO,mrbench和nnbench是三个广泛使用的测试。

TestDFSIO用于测试HDFS的IO性能。

nnbench用于测试NameNode负载。

mrbench会多次重复执行一个小作业,用于检查在机群上小作业的运行是否可以重复以及运行是否高效。

3.HBase系统本身提供了性能测试工具。

3)数据准备

数据基准测试中常用的数据生成工具包括HiBench与BDGS。

HiBench的容量是扩展的,可以生成非结构的文本数据类型并支持hadoop hive。BDGS在保留原始数据特性的基础上以小规模的真实数据生成大规模的数据。

并行数据生成框架是一种适应性很强的数据生成工具,可以在短时间内生成大量的关系数据。PDGF利用并行随机数发生器来生成独立的相关值。

2.4.2测试内容

下面给出不同的测试工具集包括的测试内容:

1.big data bench from uc berkeley
redshift \hive\shark\impala

2.bigdatabench

3.hibench基准测试

4.hadoop基准测试

TestDFSIO的测试步骤:

用法:

Usage: TestDFSIO[genericOptions]   -read|-write|-append|-clean[-nrFiles N]

命令行:

例子将往HDFS中写入10个1000MB的文件:

hadoop jar $HADOOP_HOME/hadoop - *test*.jar TestDFSIO -read -nrFiles 10  -fileSize 1000

nnbench:用于测试NameNode的负载,它会生成很多与HDFRS相关的请求,给NameNode施加压力。
例如,使用12个mapper和6个reducer来创建1000个文件。

hadoop jar $HADOOP_HOME/hadoop - *test*.jar nnbench\
   -operation create_write -maps 12 -reduces 6 -blockSize 1\
   -bytesToWrite 0 -numberOfFiles 1000 -replicationFactorPerFiles 3\
   -readFileAfterOpen true -baseDir/benchmarks/NNBench - 'hostname -s'

mrbench会多次重复执行一个小作业,用于检查在机群上小作业的运行是否可以重复以及运行是否高效。
例如,运行一个小作业50次。

hadoop jar $HADOOP_HOME/hadoop - *test*.jar mrbench -numRuns 50

Terasort是测试Hadoop的一个有效的排序程序。通过Hadoop自带的Terasort排序程序,测试不同的Map任务和Reduce 任务数量,对hadoop性能的影响。
一个完整的Terasort测试需要按三个步骤执行:

1.用TeraGen生成1GB的随机数据,并输入到目录/examples/terasort- input

hadoop jar $HADOOP_HOME/hadoop-examples-0.20.2-cdh3u3.jar teragen \
    10000000/examples/terasort- input

2.输入数据运行TeraSort对数据进行排序,并将结果输出到目录:examples/terasort- output

hadoop jar $HADOOP_HOME/hadoop-examples-0.20.2-cdh3u3.jar terasort \
    examples/terasort- input/examples/terasort- output

3.用TeraValidate验证排好序的输出数据,如果有问题,将乱序的Key输出到目录

hadoop jar $HADOOP_HOME/hadoop-examples-0.20.2-cdh3u3.jar teravalidate \                            
      examples/terasort- input/examples/terasort- validate   

5.微基准测试

用hadoop对sort greo,wordcount进行微基准测试实例,包括数据生成和测试执行两步骤。

6.关系查询

针对数据库中的相关信息进行,基准测试主要包括:装载数据、查询准备和执行查询三个步骤。

7.HBase

HBase自带的测试主要步骤

1)环境配置
2)测试
3)Bulk load对HBase测试

三.大数据智能算法及测评技术

3.1概述

大数据基础算法:

聚类算法与评估:层次聚类、流聚类、K-均值。

分类算法与评估:朴素贝叶斯、支持向量机、K近邻

大数据应用算法:

推荐系统算法与评估:用户聚类、物品聚类、用户行为分类、推荐算法

3.2聚类算法及测评

聚类的目的是在海量或难以理解的数据集中发现层次和规律,或让数据集更容易被理解,属于无监督机器学习算法。

聚类的典型算法及分析

1.层次聚类法

1)首先开始将每个点视为簇

2)找出所有簇中距离最近的两个簇

3)合并成为一个新的簇

4)重复步骤

算法思想非常简单,仅可适用于规模相对较小的数据集。

2.K-均值聚类算法

1)首先选择K个点,称为聚类质心

2)遍历数据集中的每个点,按照距离K个质心的距离,将其与距离最近的质心关联起来,与同一质心相关联的所有点聚成一类。

3)计算每一类中所有点位置的均值,将该类的质心移动到新质心的位置。

4)重复上述步骤。

3.并行化聚类法
将聚类算法部署在MapReduce框架中能够大大提高算法的并行程度。

K-均值算法目前已经在Apache的开源机器学习软件库中已经实现。

聚类算法的测试与评估

3.3分类算法及评估

有监督的机器学习

朴素贝叶斯分类算法

支持向量机算法 :数据集总体上是线性可分的。对于线性不可分的情况,支持向量机的核心思想是将输入数据的特征向量映射到高维的特征向量空间,并在该特征空间中构造最优的分类面,这种方法称为核技巧。

并行化分类算法

分类算法的测试(略)

分类器性能的评估(略)

3.4推荐系统算法及其测评

一个完整的推荐系统主要由四个核心模块组成:用户特征的收集模块、用户行为的建模与分析模块、物品的排序与推荐模块、推荐系统的评估模块。

1)基于内容的推荐算法

根据物品的特征来计算物品与物品之间的相似度 。

2)基于用户的协同过滤推荐

一个用户会喜欢和他有相似偏好的用户喜欢的物品。计算用户的相似度,找到与目标用户偏好相似的用户集合。在这个用户集合中分析并找出目标用户可能喜欢,并且没有听说过的物品推荐给用户。

3)基于物品的协同过滤推荐

一个用户会喜欢和他之前喜欢的物品类似的物品。
计算物品之间的相似度。根据物品之间的相似度和用户的历史行为给用户推荐他们可能感兴趣的物品。

推荐系统的测评实现(略)

推荐系统评估(略)

四.大数据应用的性能测试技术

性能测试包括并发测试、负载测试、压力测试和容量测试。

1.应用性能指标:

呈现时间、数据传输时间、系统处理时间。
性能度量数据包括:
响应时间、用户数、吞吐量。

2.监控指标:

用户监控、在某段时间内在线人数监控、页面访问次数等等。
大数据的数据结构特点:

4.1大数据应用的性能测评模型

4.1.1应用负载模型

4.1.2数据负载模型

性能测试流程:
需求分析、测试方案、测试设计、测试开发、环境准备、测试执行、结果汇总、分析调优。结构化数据、非结构化数据、半结构化数据。

五.大数据应用的安全测评技术

5.1影响架构安全的因素

1)分布式计算框架安全

MapReduce是常用的分布式计算框架,由map和reduce两个函数组成。map函数主要负责读入输入数据,把它分成可以用相同方法解决的小数据块,然后把这些小数据块分发到不同的节点上,每一个工作节点做同样的事,再把处理的结果返回reduce函数。reduce函数把所有结果组合输出。所以map和reduce都是并行运行的,从而能够处理一般服务器不能处理的大数据量处理问题。

实际存在许多不安全因素:

1.不可信的Map函数

2.缺乏用户及服务器安全认证机制和访问控制机制

3.缺乏传输以及存储加密

2)非关系型数据存储安全

NoSQL是一种非关系型数据库。

1.薄弱的验证机制

2.低效的鉴权机制

3.NoSQL易受各类注入攻击

4.事务处理的一致性较弱

5.2影响数据安全的要素

1)数据来源的可靠性

1.伪造或刻意制造的数据

2.数据在传播过程中的逐步失真或被人为破坏

3.元数据可能被伪造和修改

2)数据泄露

3)数据挖掘和分析中的隐私问题

5.3大数据架构的安全测评

分布式计算框架的安全测评

在用户使用mapreduce框架中常出现的危险类型有以下几种:

1.一个故障的map工作节点产生了错误结果,使得最终的数据分析结论不符合事实。

2.黑客利用自己伪造的map函数对云架构实施攻击。

3.一个伪造的Map节点被加入集群中,发生大量重复数据,并不断引入新的伪造map节点,对数据分析产生影响。

针对以上所述的危险,需要从两个维度上保证mapreduce的安全;确保mapper的可信度和确保数据的可信性。确保mapper的可信度可以从建立信任来实现。建立信任包括两个步骤:一是建立初始行信任;二是在初始认证后,周期性检查每个worker节点的安全属性和与预先确定的安全策略是否一致。

确保数据可信度可以通过访问控制来实现。

hadoop提供了两种安全机制:simple和Kerberos

下面以Hadoop中的安全配置为例,说明mapreduce的安全测评过程

1.检查身份认证和授权配置

2.检查调度器配置

3.检查作业队列权限配置

4.检查DFS permission配置

非关系型数据库的安全测评

针对NoSQL数据库,HBase

1.检查身份认证配置

2.检查接口调用的安全配置

3.检查访问控制

5.4 数据的安全测评

5.4.1数据来源的安全测评

1.恶意数据输入的预防机制及其测评

2.基于数据源技术的数据可信度评估

5.4.2隐私保护程度的测评

1.数据去隐私处理效果的测评

2.访问控制机制的测评

3.对计算结果隐私程度的测评

你可能感兴趣的:(大数据)