2025年大数据技术与应用考试试题及答案_第1页
2025年大数据技术与应用考试试题及答案_第2页
2025年大数据技术与应用考试试题及答案_第3页
2025年大数据技术与应用考试试题及答案_第4页
2025年大数据技术与应用考试试题及答案_第5页
已阅读5页,还剩22页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

2025年大数据技术与应用考试试题及答案一、单项选择题(每题2分,共20分。每题只有一个正确答案,错选、多选均不得分)1.在Hadoop3.x版本中,下列哪项参数用于控制NameNode元数据文件fsimage的自动保存间隔?A.node.checkpoint.periodB.node.checkpoint.txnsC.node.checkpoint.dirD..dir.restore答案:A解析:node.checkpoint.period决定SecondaryNameNode或CheckpointNode每隔多少秒触发一次checkpoint,从而生成新的fsimage,降低重启回滚日志的时间。2.Flink的Checkpoint机制使用哪一种分布式快照算法实现exactlyonce语义?A.ChandyLamportB.TwoPhaseCommitC.PaxosD.Raft答案:A解析:Flink基于ChandyLamport异步屏障快照(ABS)算法,在数据流中注入barrier,无需暂停整个计算即可实现全局一致性快照。3.某电商公司使用SparkSQL对10TB用户行为宽表做聚合,发现任务频繁OOM。下列调优手段中,最能直接降低内存压力的是:A.将spark.sql.adaptive.enabled设为falseB.提高spark.sql.shuffle.partitions至8000C.将spark.sql.execution.arrow.pyspark.enabled设为trueD.将spark.sql.adaptive.coalescePartitions.enabled设为true并降低advisoryPartitionSizeInBytes答案:D解析:自适应查询执行(AQE)可在运行时合并过小的分区,减少并发task数与内存占用;单纯提高shuffle分区数反而增加内存碎片。4.在Kafka2.8之后,若使用KRaft模式(无ZooKeeper)部署集群,下列哪项端口用于Controller节点间的共识通信?A.9092B.2181C.9093D.9876答案:C解析:KRaft模式下,controller.quorum.voters配置中的地址默认使用9093端口进行Raft共识,而9092是broker与客户端通信端口。5.某企业基于Hudi构建近实时数仓,要求写入延迟<2min,同时支持MySQLBinlog入湖。最适合的Hudi表类型与同步组件组合是:A.CopyonWrite+FlinkCDCB.MergeonRead+SparkStreamingC.MergeonRead+DebeziumKafkaConnectD.CopyonWrite+DataX答案:C解析:MergeonRead支持基于列式基文件+行式增量日志的快速写入;DebeziumKafkaConnect可解析Binlog并写入Kafka,再由HudiDeltaStreamer消费,实现分钟级延迟。6.在ClickHouse中执行SELECT时,发现分区裁剪未生效,最可能的原因是:A.分区键字段类型为UInt64,但查询条件使用toString()转换B.使用了PREWHEREC.使用了SAMPLE0.1D.使用了JOIN答案:A解析:ClickHouse的分区裁剪依赖分区键原始类型与条件严格匹配;toString()导致表达式不可下推,从而扫描全表。7.某业务使用Elasticsearch8.x存储日志,单索引日均40GB,保留30天。若采用ILM策略,希望热节点存放最近3天、温节点存放410天、冷节点存放1130天,则下列哪项配置顺序正确?A.hot→warm→cold→deleteB.hot→cold→warm→deleteC.hot→warm→frozen→deleteD.hot→frozen→cold→delete答案:A解析:ILM阶段顺序必须为hot→warm→cold→delete;frozen是可选的冻结阶段,需显式配置searchable_snapshot。8.在PyTorch2.0中,使用pile(model,mode="maxautotune")训练百亿参数模型时,默认后端是:A.TorchScriptB.ONNXRuntimeC.InductorD.Glow答案:C解析:PyTorch2.0引入Inductor作为默认深度学习编译器,通过Triton生成GPU内核,实现算子融合与自动调优。9.某市政府构建数据湖,要求原始数据保存10年且不可篡改,最适合的存储格式是:A.ORCB.ParquetC.DeltaLakeD.ApacheIceberg答案:D解析:Iceberg提供基于manifest的不可变快照,支持时间旅行与回滚,且与底层对象存储松耦合,长期保存成本低。10.在Kubernetes上运行Spark3.4onKubernetes,若希望driver优先调度到带SSD的节点,应使用:A.nodeSelectorB.podAffinityC.podAntiAffinityD.taint与toleration答案:B解析:通过podAffinity可声明driverPod与带SSD标签的节点亲和,实现调度偏好;nodeSelector只能做硬约束。二、多项选择题(每题3分,共15分。每题至少有两个正确答案,多选、漏选、错选均不得分)11.关于Hive4.0新特性,下列说法正确的有:A.支持HPL/SQL存储过程B.默认执行引擎为TezC.提供轻量级元存储(StandaloneMetastore)D.支持ANSISQLMERGE语句答案:A、C、D解析:Hive4.0默认引擎已切换为LLAP+Tez的混合模式,但非“纯Tez”;其余三项均为4.0正式功能。12.下列哪些操作会导致SparkDataFrame的lineage被截断,无法回溯原始RDD?A.df.checkpoint()B.df.cache()C.df.localCheckpoint()D.df.write.save()答案:A、C解析:checkpoint与localCheckpoint都会截断lineage,区别在于是否写入可靠存储;cache仅缓存不截断;write.save()是行动操作,不影响lineage。13.使用FlinkSQL实现流式双流join时,避免state无限增长的有效手段包括:A.设置idlestateretentiontimeB.使用intervaljoin并限定时间边界C.开启rocksdbstatebackend并增加增量快照D.使用temporaltablejoin答案:A、B、D解析:C项只能缓解磁盘压力,无法限制state规模;A、B、D均可通过语义或配置限制stateTTL。14.关于数据湖仓一体(LakeHouse)的ACID特性,下列哪些技术组合可以提供Serializable隔离级别?A.DeltaLake+OPTIMIZEZORDERB.Iceberg+NessieCatalogC.Hudi+MultiTableTransactionD.Hive3.0+ACID表答案:B、C解析:Nessie为Iceberg提供分支合并的跨表事务;Hudi0.13+支持多表事务;DeltaLake当前仅支持单表Serializable;Hive3.0ACID默认Snapshot隔离。15.在Trino422中,支持动态过滤(DynamicFiltering)的连接器有:A.HiveB.IcebergC.PostgreSQLD.MongoDB答案:A、B、C解析:Trino对Hive、Iceberg、PostgreSQL均已实现动态过滤下推;MongoDB连接器尚未支持。三、判断题(每题1分,共10分。正确打“√”,错误打“×”)16.Spark3.4的AES加密仅支持KMS提供的密钥,不支持自定义密钥库。答案:×解析:Spark3.4支持自定义HadoopKeyProvider,包括JavaKeystore、HashiCorpVault等。17.KafkaProducer的acks=all设置一定能保证消息不丢失。答案:×解析:还需min.insync.replicas≥2且副本同步正常,否则仍可能丢数据。18.ClickHouse的MaterializedMySQL引擎可以实时同步MySQL8.0的JSON字段。答案:√解析:MaterializedMySQL支持MySQL8.0的JSON类型,并以ClickHouse的JSON类型存储。19.Hudi的Clustering操作会重写数据文件,因此会产生新的commitinstant。答案:√解析:Clustering属于表服务,会生成replacecommit,改变文件布局。20.Elasticsearch的searchablesnapshot在冷阶段默认使用fullcopy模式。答案:×解析:默认使用shared_cache模式,仅缓存查询所需段;fullcopy需显式配置。21.Flink的TableAPI中,如果定义了PRIMARYKEY,则必须声明WATERMARK。答案:×解析:主键与水位线无强制依赖,仅事件时间窗口需要水位线。22.ORC文件的BloomFilter可以加速like'%abc'模糊查询。答案:×解析:BloomFilter仅支持等值谓词;前缀模糊查询无法利用。23.DeltaLake的ZORDER索引可以自动维护,无需手动REORG。答案:×解析:写入不会自动重排,需执行OPTIMIZEZORDER手动触发。24.Kubernetes的VerticalPodAutoscaler可以调整FlinkJobManager的CPU与内存。答案:√解析:VPA支持根据历史指标自动修改Podrequest/limit,但需重启Pod。25.Trino的CostBasedOptimizer会利用Connector返回的ColumnStatistics估算行数。答案:√解析:Connector实现getTableStatistics接口后,CBO即可使用。四、填空题(每空2分,共20分)26.在Hadoop3.x中,YARN的__________机制允许将GPU、FPGA等异构资源封装为ResourceProfile,实现精细化调度。答案:ResourceProfile&Scheduling解析:ResourceProfile定义了可扩展资源类型,配合DominantResourceCalculator实现GPU调度。27.Flink的Checkpoint超时参数由__________控制,默认10分钟。答案:checkpoint.timeout解析:超时未完成会触发CheckpointException,作业根据重启策略重试。28.SparkSQL中,函数__________可用于将数组字段展开为多行,且保留其他列。答案:explode解析:explode为内置Generator函数,常与LateralView搭配使用。29.Kafka的__________协议用于客户端动态发现broker地址,避免硬编码。答案:Metadata解析:客户端启动时发送MetadataRequest,返回当前broker列表与leader分区。30.ClickHouse的MergeTree引擎中,__________子句可让相同分区内的数据按指定列排序,加速稀疏索引。答案:ORDERBY解析:ORDERBY决定主键排序,与PARTITIONBY共同影响索引粒度。31.Hudi将更新数据写入__________文件,基文件采用__________格式,实现读时合并。答案:log、Parquet解析:MoR表结构下,更新写入Avro行式log文件,基文件为Parquet列式。32.Elasticsearch的__________缓存用于存储全局ordinal,加速聚合操作。答案:Fielddata解析:text字段做聚合需开启fielddata,占用堆内存,建议改用keyword。33.Trino的__________函数可返回JSON字符串中指定路径的数组元素,类型为JSON。答案:json_extract解析:json_extract(json,'$.items[0]')返回JSON类型,如需标量可配合json_extract_scalar。34.Iceberg的__________文件记录所有数据文件的位置、分区值与指标,用于快速规划扫描。答案:Manifest解析:Manifest文件为Avro格式,存储文件级统计,支持快速过滤。35.Kubernetes的__________控制器用于管理有状态应用,为每个Pod提供稳定网络标识与持久存储。答案:StatefulSet解析:StatefulSet保证Pod顺序启动、PVC模板绑定,适用于ZooKeeper、Kafka等。五、简答题(每题8分,共40分)36.描述Spark3.4AdaptiveQueryExecution(AQE)的三大核心优化,并给出生产配置示例。答案:1.动态合并分区:运行时检测小分区,合并reducetask,降低调度开销。2.动态切换Join策略:根据实际大小将SMJ转为BHJ,避免内存溢出。3.动态优化倾斜Join:检测到倾斜key后,自动拆分重试,消除长尾task。配置示例:spark.sql.adaptive.enabled=truespark.sql.adaptive.coalescePartitions.enabled=truespark.sql.adaptive.coalescePartitions.minPartitionNum=1spark.sql.adaptive.coalescePartitions.advisoryPartitionSizeInBytes=128MBspark.sql.adaptive.localShuffleReader.enabled=truespark.sql.adaptive.skewJoin.enabled=truespark.sql.adaptive.skewJoin.skewedPartitionFactor=5解析:开启AQE后,Spark在运行时收集MapStatus统计,基于精确数据量触发优化,无需重启作业;建议同时开启动态资源分配,避免资源浪费。37.某金融公司使用Flink1.17实时统计用户30秒滑动窗口的交易额,要求端到端延迟≤1秒,状态大小约500GB。请给出StateBackend选型、资源配置与调优参数,并解释原因。答案:选型:RocksDBStateBackend+IncrementalCheckpoint+对象存储。资源配置:taskmanager.numberOfTaskSlots:8cess.size:16GBtaskmanager.memory.managed.fraction:0.3state.backend.rocksdb.thread.num:8state.backend.rocksdb.writebuffer.size:256MBstate.backend.rocksdb.block.cachesize:4GBcheckpointing:15sminpausebetweencheckpoints:5s原因:RocksDB将状态落盘,避免堆内存爆炸;增量快照仅上传变化SST文件,缩短上传时间;15秒间隔兼顾延迟与吞吐;写缓冲与块缓存调优可提升随机写性能。38.说明DeltaLake的TimeTravel语法,并给出基于ScalaSpark恢复表至历史版本的两个示例:按版本号与按时间戳。答案:按版本号:spark.read.format("delta").option("versionAsOf",523).load("/data/user_event")按时间戳:spark.read.format("delta").option("timestampAsOf","2025060108:30:00").load("/data/user_event")恢复表:spark.sql("RESTORETABLEuser_eventTOVERSIONASOF523")解析:Delta在事务日志中保存commitinfo,包含版本号与时间戳;TimeTravel可用于数据回溯、debug、修复误删;RESTORE为原子操作,生成新版本。39.列举ClickHouse中导致“Toomanyparts”异常的三个常见原因,并给出对应的预防与修复措施。答案:原因1:单次INSERT产生过多分区(如使用timestamp字段做分区键,每秒插入)。预防:改用toYYYYMMDD(toStartOfHour(timestamp)),降低分区粒度;写入前批量攒批≥1000行。原因2:后台Merge线程跟不上写入速度。预防:提高background_pool_size、降低max_insert_threads;使用SSD提升IOPS。原因3:使用FlinkClickHouseSink未做攒批,逐条写入。修复:Sink实现BatchBufferedWriter,设置batchSize=50000、flushInterval=5s;临时提升max_parts_in_flight=1000,手动执行SYSTEMOPTIMIZEFINAL合并。解析:ClickHouse每次INSERT产生一个part,parts数量>300会拒绝写入;合并线程将相同分区的小parts合成大part;运维需监控parts_count指标。40.某视频平台使用Trino422跨机房查询Hive与Iceberg两张表,发现查询耗时30秒,其中调度阶段占20秒。请给出减少调度延迟的三项具体优化,并说明原理。答案:1.启用Trino的FaultTolerantExecution(FTE),将task调度粒度从split级改为stage级,减少调度器压力。2.在coordinator节点启用动态过滤下推,提前在Iceberg端过滤,减少split生成数量。3.将Hive元数据缓存到Alluxio,避免跨机房访问NameNodeRPC,降低getSplits延迟。原理:FTE通过bufferpoolshuffle,减少小任务数;动态过滤利用Iceberg的manifest统计,提前剪掉不满足条件的文件;Alluxio缓存元数据与文件位置,实现本地命中,调度阶段耗时降至5秒。六、综合应用题(共35分)41.(15分)某运营商构建5G信令数据湖,每日新增2TB,字段含用户IMSI、基站CELL_ID、事件时间EVENT_TIME、信令类型TYPE、经纬度LON_LAT等。要求:1.支持近实时ETL(延迟≤5分钟);2.支持按IMSI快速点查(<500ms);3.支持按CELL_ID与时间范围做聚合报表;4.存储周期90天,冷数据成本低于热数据50%。请给出完整技术选型、表结构设计、写入链路、查询优化及冷热分层策略,并说明理由。答案:技术选型:采集:Kafka3.6集群,6broker,副本因子3,按CELL_ID做key,保证局部性。入湖:Flink1.17+Hudi0.14,MoR表,Parquet列存+Avro行存log,bucket索引按IMSI分128桶。存储:HDFS+Alluxio缓存热数据,冷数据转存阿里云OSS归档型。查询:Trino422+HudiConnector,PrestoHudi同步元数据;点查走Hudi桶索引+OSSSelect;报表走Trino列式聚合。表结构:createtablesignaling_hudi(imsistring,cell_idstring,event_timetimestamp,typeint,lon_latarray<double>,primarykey(imsi,event_time))partitionedby(cell_id,event_date)clusteredby(imsi)into128bucketsstoredashuditblproperties(''='signaling_hudi','hoodie.index.type'='BUCKET','hoodie.bucket.index.num.buckets'='128','paction.strategy'='pact.BoundedIOCompactionStrategy','hoodie.parquet.small.file.limit'='134217728');写入链路:1.5G探针→Kafka→FlinkSQL解析→HudiSink,checkpoint2分钟,写log文件延迟≤1分钟。2.每30分钟触发compaction,合并Parquet基文件,保证查询性能。查询优化:1.IMSI点查:Trino下推IMSI与桶号,Hudi利用bucketindex定位唯一文件,500ms内返回。2.CELL_ID+时间范围:分区裁剪至cell_id与event_date,利用min/max索引跳过不匹配rowgroup。3.聚合报表:开启Trino动态过滤,将CELL_ID列表提前下推至Hudi,减少扫描90%。冷热分层:1.热数据7天:HDFS+Alluxio,SSD盘,副本3。2.温数据830天:HDFS,普通SATA,副本2。3.冷数据3190天:HudiArchival,转存OSS归档,单价0.033元/GB/月,比热层低70%;Trino通过Hudi时间旅行透明读取。理由:MoR兼顾实时与查询;桶索引加速点查;分区+列存加速范围扫描;OSS归档显著降成本。42.(20分)某互联网广告公司使用Spark3.4训练CTR深度学习模型,训练集1TB,特征维度5亿,参数服务器架构。训练过程中出现以下问题:1.每轮迭代耗时15分钟,其中8分钟为参数同步;2.GPU利用率仅40%,存在间歇性空闲;3.模型保存至HDFS耗时20分钟,单文件30GB。请给出系统性优化方案,含参数服务器选型、梯度压缩、分布式保存、GPU调度、Sp

温馨提示

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

评论

0/150

提交评论