2026年大数据测试笔试题及答案_第1页
2026年大数据测试笔试题及答案_第2页
2026年大数据测试笔试题及答案_第3页
2026年大数据测试笔试题及答案_第4页
2026年大数据测试笔试题及答案_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年大数据测试笔试题及答案一、单项选择题(本大题共20小题,每小题1.5分,共30分。在每小题给出的四个选项中,只有一项是符合题目要求的)1.在Hadoop3.x版本中,HDFS默认的副本存放策略是,如果机架感知功能开启,第一个副本会存放在本地机架的某个节点上,第二个副本存放在()。A.本地机架的不同节点B.远程机架的某个节点C.同一节点的不同磁盘D.随机机架的任意节点2.ApacheSpark中,RDD(弹性分布式数据集)的核心特性是“惰性求值”,这意味着()。A.RDD一旦创建就不能被修改B.转换操作(如map,filter)不会立即执行,直到遇到行动操作(如collect,count)C.所有的操作都会立即在内存中执行D.RDD必须持久化才能被使用3.在大数据测试中,针对数据一致性的验证,通常不包括以下哪一项?()A.数据重复性检查B.数据参照完整性检查C.数据格式标准化检查D.数据的索引是否被正确使用4.Hive中,以下关于内部表和外部表的区别描述正确的是()。A.内部表删除时,元数据和HDFS上的文件都会被删除;外部表删除时,只删除元数据B.外部表删除时,元数据和HDFS上的文件都会被删除;内部表删除时,只删除元数据C.两者删除时都只删除元数据D.两者删除时都删除元数据和HDFS文件5.在Kafka消息队列中,为了保证消息的有序性,Producer发送消息时必须指定()。A.Topic名称B.ConsumerGroupIDC.相同的PartitionKeyD.Broker地址6.下列哪个工具常用于测试HBase集群的性能,通过随机读写、扫描等操作来评估IO吞吐量?()A.JMeterB.YCSB(Yahoo!CloudServingBenchmark)C.SeleniumD.Postman7.SparkSQL中,对于DataFrame的缓存操作,以下哪种缓存级别在内存不足时最不容易丢失数据?()A.MEMORY_ONLYB.MEMORY_AND_DISKC.MEMORY_ONLY_SERD.DISK_ONLY8.在进行ETL测试时,验证数据转换逻辑的正确性,通常采用的方法是()。A.抽样检查B.全量比对C.仅检查源端数据D.仅检查目标端数据9.Hadoop生态系统中,负责资源管理和调度的组件是()。A.HDFSB.MapReduceC.YARND.ZooKeeper10.在数据仓库建模中,星型模型和雪花型模型的主要区别在于()。A.星型模型包含事实表和维度表,雪花型模型只有事实表B.雪花型模型对维度表进行了规范化,星型模型维度表是反规范化的C.星型模型查询性能通常比雪花型模型差D.雪花型模型更易于维护和理解11.关于Flink中的“状态”管理,以下说法错误的是()。A.KeyedState是基于Key进行分区的B.OperatorState是与算子并行实例绑定的C.Checkpoint机制用于定期保存状态,以实现容错D.状态后端必须使用RocksDB,无法使用内存12.在使用Sqoop进行MySQL数据导入HDFS时,如果需要指定导入的边界条件,应使用参数()。A.--whereB.--queryC.--split-byD.--columns13.大数据测试中的“数据倾斜”问题,最可能发生在以下哪个阶段?()A.数据采集阶段B.数据存储阶段C.Shuffle阶段(如Reduce、Join)D.数据可视化阶段14.以下哪种文件格式在Hive中通常支持列式存储,且具有良好的压缩性能和查询效率?()A.TextFileB.SequenceFileC.ParquetD.RCFile15.在Python进行PySpark测试时,如何创建一个SparkSession对象?()A.spark=SparkContext()B.spark=HiveContext()C.spark=SparkSession.builder.appName("Test").getOrCreate()D.spark=SQLContext()16.关于ZooKeeper在Hadoop集群中的作用,描述不正确的是()。A.负责HDFS的NameNode高可用(HA)选举B.负责HBaseRegionServer的协调C.负责存储Hive的元数据D.负责Kafka的ConsumerGroup协调17.在性能测试中,衡量分布式系统吞吐量的常用指标是()。A.响应时间B.错误率C.TPS/QPS(TransactionsPerSecond/QueriesPerSecond)D.CPU利用率18.ClickHouse是一款面向列式的分布式数据库,它最擅长的应用场景是()。A.事务处理(OLTP)B.在线分析处理(OLAP)C.全文检索D.图数据库存储19.在HDFS中,默认的BlockSize大小(Hadoop2.x/3.x)是()。A.64MBB.128MBC.256MBD.512MB20.在进行大数据自动化测试时,验证HiveSQL查询结果与预期结果是否一致,通常使用的工具或库不包括()。A.AssertJB.PyTestC.iBATISD.TestNG二、多项选择题(本大题共10小题,每小题2分,共20分。在每小题给出的四个选项中,有两项或两项以上是符合题目要求的。多选、少选、错选均不得分)1.大数据的“4V”特征包括哪些?()A.Volume(大量)B.Velocity(高速)C.Variety(多样)D.Value(低价值密度)2.以下哪些属于HDFS的NameNode元数据管理内容?()A.文件与Block的映射关系B.Block与DataNode的映射关系C.文件的权限、Owner信息D.DataNode上实际存储的数据块内容3.SparkRDD的依赖关系分为窄依赖和宽依赖,以下属于宽依赖的算子有()。A.mapB.groupByKeyC.filterD.reduceByKey4.在进行数据质量测试时,需要验证的维度通常包括()。A.完整性B.唯一性C.有效性D.及时性5.下列哪些组件通常可以作为Spark的作业资源调度器?()A.StandaloneB.YARNC.MesosD.Kubernetes6.HBase中,关于RowKey的设计原则,正确的有()。A.长度尽量短B.散列性要好,避免热点C.根据查询需求设计,利用前缀匹配D.必须是字符串类型7.在测试实时流处理应用(如SparkStreaming或Flink)时,需要关注的关键指标有()。A.延迟B.吞吐量C.消息丢失率D.数据精确一次语义的保证8.关于Hive分区表,以下描述正确的有()。A.分区表实际上是在HDFS上对应不同的文件夹B.查询时可以利用分区剪枝,提高效率C.支持动态分区插入D.分区字段必须是表中已存在的物理列9.在Linux环境下,测试Hadoop集群连通性常用的命令有()。A.hdfsdfs-lsB.hdfsdfs-putC.jpsD.start-all.sh10.以下哪些技术属于数据湖范畴的存储格式或表格式?()A.ORCB.DeltaLakeC.ApacheHudiD.ApacheIceberg三、判断题(本大题共10小题,每小题1分,共10分。请判断每小题的表述是否正确,正确的填“A”,错误的填“B”)1.Hadoop集群中,SecondaryNameNode的主要作用是作为NameNode的热备,当NameNode挂掉时立即接管服务。()2.Spark是基于内存的分布式计算框架,因此在任何情况下它的计算速度都比基于磁盘的MapReduce快。()3.在大数据测试中,由于数据量巨大,通常无法像传统软件测试那样进行全量回归测试,必须依赖抽样测试。()4.Kafka的Topic可以被划分为多个Partition,以提高并发消费能力。()5.HiveQL语句在执行时,默认会被编译成MapReduce任务运行在YARN上。()6.Flume主要用于日志的采集,它不支持自定义拦截器来过滤或转换数据。()7.在HBase中,数据是按照RowKey进行字典序排序存储的,因此设计RowKey时要利用这个特性。()8.数据仓库中的ETL过程,通常包括抽取、转换、加载三个步骤,测试时需要重点验证转换逻辑。()9.Flink是基于事件驱动的流处理引擎,它不仅支持流处理,也支持批处理。()10.使用Python进行大数据测试时,Pandas库可以处理超过内存大小的超大规模数据集,无需特殊配置。()四、填空题(本大题共10小题,每小题1.5分,共15分。请在每小题的空格处填入正确答案)1.在HadoopRPC通信中,默认使用的序列化框架是________。2.Spark中,________算子可以将多个RDD中的元素根据Key进行聚合,类似于MapReduce中的Reduce阶段。3.在Hive中,要查看表的详细结构信息(包括存储位置、输入输出格式等),应使用命令________。4.在LinuxShell中,查看YARN集群所有运行中任务的命令是________。5.HBase使用________来实现数据的快速检索,它是HBase的核心数据结构。6.Kafka中,________参数用于控制消费者每次从Broker拉取的最大消息字节数。7.在进行数据一致性测试时,源端和目标端的数据条数总和校验公式通常为:count(source)________count(target)。8.Flink中,________窗口是基于时间的,窗口之间不重叠。9.Sqoop导入数据时,使用________参数可以指定Java生成的类存放的包名。10.在大数据性能测试中,________测试旨在测试系统在极限负载下的表现,以寻找系统的崩溃点。五、简答题(本大题共6小题,每小题5分,共30分)1.请简述HDFS的读写流程(以读取为例)。2.在大数据测试中,什么是“数据倾斜”?请举例说明一个常见的场景,并给出一种通用的解决思路。3.请对比Hive的内部表和外部表在应用场景上的区别。4.简述Spark中RDD、DataFrame和Dataset三者的区别与联系。5.在进行ETL自动化测试时,如何设计测试数据来验证“空值处理”和“数据类型转换”逻辑?6.请列举至少5个在大数据环境下进行性能监控的关键指标,并简要说明其含义。六、综合应用题(本大题共3小题,共45分)1.(15分)假设你是一名大数据测试工程师,负责测试一个用户行为分析系统。该系统使用Flume采集Nginx日志到Kafka,SparkStreaming消费Kafka数据进行实时清洗,并将结果写入HBase,同时使用SparkSQL对HDFS上的历史离线数据进行每日分析,结果存入Hive。请回答:(1)针对Flume到Kafka这一链路,你会如何设计测试用例来验证数据的完整性?(5分)(2)在SparkStreaming处理逻辑中,如果发现HBase写入速率过慢导致背压,你会从哪些方面进行排查和测试?(5分)(3)离线分析任务要求每日凌晨2点运行,计算前一天的日活用户数(DAU)。请写出一条HiveQL伪代码,实现从用户行为日志表(log_table,字段:user_id,event_time,event_type)中统计2023-10-01的DAU。(5分)2.(15分)现有如下两张Hive表:表A(订单表):order_id(bigint),user_id(bigint),amount(decimal(10,2)),order_date(string)表B(用户表):user_id(bigint),city(string),level(string)需求:统计每个城市、每个用户等级的订单总金额和订单总数。(1)请写出HiveSQL语句实现该需求。(8分)(2)如果数据量非常大(表A数十亿级,表B数亿级),在执行Join操作时极易发生数据倾斜。假设倾斜发生在Level='VIP'的用户上。请结合SparkSQL或Hive的调优手段,给出两种具体的优化方案。(7分)3.(15分)阅读以下PySpark代码片段,回答问题。```pythonfrompyspark.sqlimportSparkSessionfrompyspark.sql.functionsimportcol,sumas_sumspark=SparkSession.builder.appName("SalesAnalysis").getOrCreate()#读取数据df=spark.read.parquet("/data/sales/2023/")#转换操作df_filtered=df.filter(col("status")=="success")df_grouped=df_filtered.groupBy("region","category").agg(_sum("amount").alias("total_amount"))#触发Actionresult=df_grouped.collect()spark.stop()```(1)请画出上述代码对应的DAG(有向无环图)逻辑执行计划(用文字描述阶段划分及依赖关系)。(5分)(2)如果在collect()操作时报错“ContainerkilledbyYARNforexceedingmemorylimits”,请分析可能的原因,并给出至少三条具体的代码级或配置级优化建议。(6分)(3)在测试环境中,如何验证`df_filtered`这个DataFrame中数据的正确性?请结合Python测试框架(如PyTest)写一个简单的伪代码测试函数。(4分)参考答案及解析一、单项选择题1.B解析:HDFS默认副本策略(机架感知):第一个副本在本地节点,第二个副本在本地机架的不同节点,第三个副本在远程机架的不同节点。题目问第二个副本,应为远程机架。2.B解析:RDD的转换操作是惰性的,只有遇到行动操作时才会真正触发Job的提交和执行。3.D解析:数据一致性测试关注数据本身的逻辑正确性,如重复、完整性、格式等。索引是否被正确使用属于物理性能优化的范畴,不属于数据一致性逻辑验证。4.A解析:内部表由Hive管理生命周期,删除表时删除元数据和数据;外部表仅管理元数据,删除表只删除元数据,HDFS文件保留。5.C解析:Kafka中,只有发送到同一个Partition的消息才能保证有序性。PartitionKey通过Hash算法决定消息落入哪个Partition。6.B解析:YCSB是专门用于NoSQL数据库(如HBase,Cassandra)性能测试的标准工具。7.B解析:MEMORY_AND_DISK表示优先存内存,内存不够则存磁盘,是最不容易丢失数据的常用内存+磁盘级别。MEMORY_ONLY在内存不足时会直接丢弃部分分区。8.B解析:ETL测试中,验证转换逻辑最严谨的方法是全量比对(或者基于哈希值的比对),抽样只能发现部分问题。9.C解析:YARN是YetAnotherResourceNegotiator的缩写,负责集群的资源管理和任务调度。10.B解析:星型模型维度表直接连接事实表,结构简单但可能冗余;雪花模型维度表进一步规范化,消除了冗余,但查询Join多。11.D解析:Flink支持多种状态后端,包括MemoryStateBackend、FsStateBackend和RocksDBStateBackend,不是必须使用RocksDB。12.A解析:`--where`用于指定导入数据的WHERE条件;`--query`用于自由编写SQL(需包含$CONDITIONS);`--split-by`用于指定切分字段。13.C解析:数据倾斜通常发生在Shuffle阶段,如GroupByKey、ReduceByKey、Join等操作中,导致大量数据流向同一个Reducer或Task。14.C解析:Parquet是列式存储格式,支持高效的压缩和谓词下推,是Hive和Spark生态中最常用的分析型格式。15.C解析:Spark2.x+推荐使用SparkSession作为统一入口点。16.C解析:Hive的元数据通常存储在关系型数据库(如MySQL、PostgreSQL)中,而不是ZooKeeper。ZK主要用于高可用协调和分布式锁服务。17.C解析:TPS(每秒事务数)或QPS(每秒查询数)是衡量吞吐量的核心指标。18.B解析:ClickHouse是典型的OLAP数据库,不适合高并发的事务修改(OLTP)。19.B解析:Hadoop2.x和3.x默认块大小为128MB(1.x是64MB)。20.C解析:iBATIS(MyBatis前身)是Java持久层框架,主要用于SQL映射,不用于大数据单元测试断言。AssertJ,PyTest,TestNG都是常用的断言或测试框架。二、多项选择题1.ABCD解析:大数据4V特征:Volume(体量),Velocity(速度),Variety(多样性),Value(价值)。2.ABC解析:NameNode管理元数据:文件名、目录结构、文件与Block的映射、Block与DataNode的映射。不存储实际数据块内容(DataNode管)。3.BD解析:宽依赖涉及Shuffle。groupByKey和reduceByKey需要根据Key重新分发数据,是宽依赖。map和filter是窄依赖。4.ABCD解析:数据质量维度包括:完整性(数据缺失)、唯一性(重复)、有效性(格式/范围)、及时性(延迟)、准确性等。5.ABCD解析:Spark可以运行在Standalone,YARN,Mesos,Kubernetes等资源管理器上。6.ABC解析:RowKey设计原则:短(节省存储)、散列(避免热点)、利用查询特性(前缀匹配)。RowKey可以是字节数组,不限于字符串。7.ABCD解析:流测试关注低延迟、高吞吐、容错(不丢不重)、精确一次语义。8.ABC解析:分区表对应文件夹,支持分区剪枝和动态分区。分区字段是虚拟列,不是表中已存在的普通物理列。9.ABC解析:hdfsdfs-ls/put是操作命令;jps查看Java进程;start-all.sh是启动脚本,不是测试连通性命令(虽然也能用,但jps更常用于检查状态)。10.BCD解析:DeltaLake,Hudi,Iceberg是现代数据湖表格式(TableFormat),支持ACID、时间旅行等。ORC是传统的列式存储文件格式。三、判断题1.B解析:SecondaryNameNode不是热备,它主要辅助NameNode合并FsImage和Edits日志,减少NameNode重启时间。HA通常靠ZooKeeper+ZKFC+Active/StandbyNameNode。2.B解析:Spark基于内存,但如果数据量大需要频繁Shuffle写入磁盘,或者RDD未缓存导致重复计算,速度未必比MapReduce快。此外MapReduce在超大规模数据集上的稳定性也很高。3.B解析:虽然全量测试成本高,但可以通过“全量比对”技术(如计算Hash值、CountSum校验)在不加载全部数据到内存的情况下进行全量逻辑验证,并非只能依赖抽样。4.A解析:Kafka通过Partition实现分片和并行消费。5.A解析:Hive默认执行引擎是MapReduce(也可以配置为Tez或Spark)。6.B解析:Flume支持自定义Interceptor(拦截器)来实现数据的过滤、脱敏、转换。7.A解析:HBase数据按RowKey字典序排序存储,Scan效率依赖于RowKey设计。8.A解析:ETL测试核心是验证转换逻辑。9.A解析:Flink是流批统一的引擎。10.B解析:Pandas是单机内存库,无法处理超过内存大小的数据。处理超大规模数据应使用PySpark或Dask。四、填空题1.HadoopRPC(或Writable/Protobuf)(注:HadoopRPC底层默认使用Writable序列化)2.reduceByKey(或aggregateByKey/groupByKey,但reduceByKey最典型)3.DESCRIBEFORMATTEDtable_name4.yarnapplication-list5.LSMTree(Log-StructuredMergeTree)6.max.partition.fetch.bytes7.==8.滚动(Tumbling)9.--package-name10.压力(或Stress/Load)五、简答题1.HDFS读流程:(1)客户端调用DistributedFileSystem.open()方法,与NameNode通信,获取文件开始Block的Location信息。(2)NameNode返回持有该Block副本的DataNode地址列表(按距离排序)。(3)客户端选择最近的DataNode建立连接,读取数据(FSDataInputStream)。(4)读取完当前Block后,客户端继续寻找下一个Block的DataNode并读取。(5)读取完毕后,关闭流。2.数据倾斜:定义:在分布式计算中,大量数据被分配到同一个Task(节点)上执行,导致该Task运行时间远超其他Task,整体作业进度被拖慢。场景:例如,在统计用户订单时,将Null值或默认值作为Key进行Join或GroupBy,导致所有“未知用户”数据汇聚到一个Reducer。解决思路:(1)过滤掉导致倾斜的Null值数据,单独处理。(2)对Key加随机前缀,将打散的数据先聚合,再去掉前缀再次聚合(两阶段聚合)。(3)提高并行度,增加Task数量。(4)使用BroadcastJoin将小表广播到所有节点,避免大表Shuffle。3.Hive内部表与外部表应用场景:内部表:用于数据由Hive全权管理的场景,通常是临时表、中间结果表,或者数据不再被其他系统共享的情况。删除表时数据随之清理,适合ETL过程中的临时数据。外部表:用于数据已经在HDFS上存在,且可能被多个系统(如Pig,Spark,HBase)共享的场景。删除表只删除元数据,不会误删原始数据,适合导入原始日志文件或共享的维表。4.RDD、DataFrame、Dataset区别与联系:RDD:Spark最基础的数据抽象,是分布式的Java/Scala对象集合,类型安全,但缺乏优化信息,性能较低,偏向底层开发。DataFrame:带有Schema(元数据)的分布式Row对象集合,类似于数据库表。SparkSQLCatalyst优化器可以对查询计划进行深度优化,性能高,但编译时类型不安全。Dataset:DataFrame的类型安全扩展(在Scala/Java中),是强类型的分布式对象集合。Dataset=RDD+Schema。在Python中,DataFrame和Dataset基本等同(因为Python是动态语言)。联系:RDD是底层基础,DataFrame/Dataset底层本质上是RDD。它们可以互相转换。5.ETL测试数据设计(空值与类型转换):空值处理:设计源数据包含NULL值、空字符串、字段缺失的情况。预期结果验证:目标表是否替换为默认值(如0、"Unknown")、是否报错过滤、或保持为NULL。数据类型转换:设计边界值数据:如整数最大值、超长字符串、非法日期格式(2023-02-30)、非数字字符串("abc")转为数字。预期结果验证:是否截断、是否报错、是否转为NULL。方法:准备覆盖上述情况的CSV或JSON测试集,导入ETL系统,查询目标表验证。6.大数据性能监控关键指标:(1)CPU利用率:节点计算资源使用情况,过高可能导致计算瓶颈。(2)内存利用率:节点内存使用情况,过高可能导致OOM(内存溢出)。(3)磁盘I/O:读写吞吐量(IOPS)和带宽,HDFS读写密集型任务关注此指标。(4)网络I/O:集群内部带宽使用,Shuffle阶段网络流量大,防止网络打满。(5)GC时间:JVM垃圾回收时间,过长会导致Task暂停,影响性能。(6)ShuffleRead/Write时间:衡量数据重排阶段的效率。六、综合应用题1.(1)Flume到Kafka数据完整性测试:计数比对:在FlumeSource端(如Nginx日志目录)统计文件行数,在KafkaConsumer端统计消费到的消息条数,验证是否一致。内容校验:抽取部分消息,比对FlumeSource原始日志内容与KafkaConsumer消费内容是否一致(注意Flume拦截器是否修改了数据)。重复/丢失测试:发送特定唯一标识的测试数据,检查Kafka中是否存在重复或丢失。断点续传测试:在Flume传输过程中模拟中断,重启后验证是否从断点继续发送,未丢失数据。(2)SparkStreaming背压排查与测试:排查:检查HBaseRegionServer负载(IO/内存)是否过高。检查SparkStreamingBatchProcessingTime是否大于BatchInterval。检查HBase表设计(RowKey是否导致热点,预分区是否合理)。测试与优化:测试开启SparkBackpressure(`spark.streaming.backpressure.enabled=true`)。测试调整HBase写入参数(如增大WriteBufferSize,关闭WAL)。测试采用异步写入或批量写入(BufferedMutator)。测试增加SparkStreaming并行度。(3)HiveQL伪代码:```sqlSELECTCOUNT(DISTINCTuser_id)ASdauFROMlog_tableWHEREevent_date='2023-10-01'ANDevent_type='page_view';--假设page_view代表活跃```2.(1)HiveSQL实现:```sqlSELECTb.city,b.level,SUM(a.amount)AStotal_amount,COUNT(a.order_id)ASorder_countFROMorder_tableaJOINuser_tablebONa.user_id=b.user_idGROUPBYb.city,b.level;```(2)数据倾斜优化方案:方案一:MapJoin(BroadcastJoin)如果表B(用户表)相对较小,可以将表B广播到所有MapTask内存中,在Map端完成Join,避免Reduce端Shuffle和数据倾斜。配置:`sethive.auto.convert.join=true;`或在SparkSQL中使用`broadcast()`hint。方案二:SkewJoin(Hive特有)开启Hive的倾斜Join优化:`sethive.optimize.skewjoin=true;`。Hive会检测到倾斜的Key,将其对应的任务单独启动一个MapRedu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论