2026大数据云计算架构技术模拟考试试题及解析_第1页
2026大数据云计算架构技术模拟考试试题及解析_第2页
2026大数据云计算架构技术模拟考试试题及解析_第3页
2026大数据云计算架构技术模拟考试试题及解析_第4页
2026大数据云计算架构技术模拟考试试题及解析_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

2026大数据云计算架构技术模拟考试试题及解析一、单项选择题(本大题共20小题,每小题1.5分,共30分。在每小题给出的四个选项中,只有一项是符合题目要求的)

1.在Hadoop3.x版本中,引入了纠删码技术来替代传统的多副本机制,主要用于解决存储效率问题。以下关于纠删码的描述,错误的是()。

A.纠删码技术通过计算校验块来恢复数据,相比三副本机制,存储利用率更高

B.Reed-Solomon是Hadoop中常用的纠删码算法

C.纠删码技术在数据写入时的CPU开销比副本机制低

D.纠删码主要适用于冷数据存储,对于频繁访问的热数据,副本机制通常性能更好

2.在Spark内核架构中,负责将用户程序拆分为多个Job、Stage和Task的组件是()。

A.Driver

B.ClusterManager

C.Executor

D.Worker

3.Kubernetes作为云原生操作系统的核心,其Pod网络模型中,以下关于“扁平网络”描述正确的是()。

A.所有Pod都在同一个扁平的IP地址空间中,无需NAT即可直接通信

B.所有Pod必须通过NodePort进行通信

C.不同Node上的Pod通信必须经过宿主机的NAT转换

D.Pod的IP地址是持久化的,重启后不会改变

4.HBase是一个分布式的、面向列的NoSQL数据库,它是建立在()文件系统之上的。

A.HDFS

B.ext4

C.NTFS

D.CephFS

5.在MapReduce计算模型中,Shuffle阶段的主要作用是()。

A.数据输入切分

B.Map端输出数据的分区、排序和分组

C.Reduce端结果写入HDFS

D.任务资源调度

6.关于Flink的时间语义,以下描述中能够保证处理乱序事件且提供精确一次语义的是()。

A.ProcessingTime

B.IngestionTime

C.EventTime配合Watermark

D.SystemTime

7.在Kafka架构中,为了提高系统的容错性和高可用性,通常采用Partition的多副本机制。以下关于Leader和Follower副本的描述,正确的是()。

A.所有的读写操作都由Follower副本处理

B.只有Leader副本处理读写请求,Follower只负责同步数据

C.Producer可以向任意副本发送消息

D.Consumer可以从任意副本拉取消息

8.Docker容器技术与传统虚拟机技术相比,其核心区别在于()。

A.虚拟机共享宿主机内核,Docker拥有独立的操作系统内核

B.Docker共享宿主机内核,虚拟机拥有独立的操作系统内核

C.Docker启动速度比虚拟机慢

D.Docker的隔离性比虚拟机更强

9.在HDFS的读写流程中,客户端读取数据时,主要与以下哪个Daemon进程交互?()

A.NameNode

B.DataNode

C.SecondaryNameNode

D.ResourceManager

10.SparkSQL在执行查询时,会经过Catalyst优化器的优化。以下哪个阶段不属于Catalyst的优化流程?()

A.未解析的逻辑计划

B.逻辑计划

C.物理计划

D.任务调度

11.在YARN资源调度器中,CapacityScheduler(容量调度器)的主要设计目标是()。

A.保证小任务优先完成

B.让多个队列共享集群资源,并保证每个队列有最小资源保证

C.严格按照FIFO顺序调度任务

D.动态调整资源池大小以最大化集群吞吐量

12.Zookeeper在分布式系统中主要用于协调服务。以下关于Zookeeper的ZNode特性,描述错误的是()。

A.ZNode可以分为持久化和临时节点

B.临时节点的生命周期依赖于客户端会话,会话结束节点即删除

C.ZNode可以包含版本号,用于乐观锁控制

D.ZNode支持无限量的数据存储,适合存储大文件

13.在Hive数据仓库中,内部表和外部表的主要区别在于()。

A.内部表存储为列式存储,外部表存储为行式存储

B.删除内部表时,元数据和HDFS上的数据都会被删除;删除外部表时,只删除元数据

C.内部表不支持分区,外部表支持分区

D.外部表只能读取外部数据,不能插入数据

14.Redis作为一种高性能的键值对数据库,其支持的数据结构不包括()。

A.String

B.Hash

C.ColumnFamily

D.SortedSet

15.在云计算服务模型中,PaaS(平台即服务)提供给用户的管理能力是()。

A.管理操作系统、存储和网络

B.管理应用程序运行环境和数据

C.管理所有的物理基础设施

D.仅管理应用程序代码

16.Flume是Cloudera提供的一个高可用、高可靠、分布式的海量日志采集、聚合和传输系统。Flume的核心架构组件不包括()。

A.Source

B.Channel

C.Sink

D.Mapper

17.SparkStreaming在进行微批处理时,其核心抽象是()。

A.RDD

B.DataFrame

C.DStream

D.Dataset

18.在Elasticsearch中,用于倒排索引的基本数据单位是()。

A.Type

B.Index

C.Document

D.Field

19.以下关于数据倾斜的描述及解决方案,说法不正确的是()。

A.数据倾斜会导致个别Task运行时间过长,拖慢整个作业

B.使用BroadcastJoin可以将小表广播到所有Executor,避免Shuffle带来的倾斜

C.增加并行度一定能解决所有数据倾斜问题

D.对倾斜的Key添加随机前缀进行两阶段聚合是常见的处理手段

20.Prometheus是云原生监控系统,其数据采集模式主要是()。

A.被动推送

B.主动拉取

C.事件触发

D.消息队列消费

二、多项选择题(本大题共10小题,每小题3分,共30分。在每小题给出的四个选项中,有两项或两项以上是符合题目要求的。多选、少选、错选均不得分)

21.HadoopHDFS为了保证数据的高可靠性,采取了多种机制,包括()。

A.心跳机制

B.数据块副本机制

C.校验和机制

D.内存镜像文件

22.SparkRDD的五大特性包括()。

A.分区列表

B.计算函数

C.依赖关系

D.分区器

23.Kubernetes中Service的资源类型包括()。

A.ClusterIP

B.NodePort

C.LoadBalancer

D.Ingress

24.以下属于NoSQL数据库范畴的有()。

A.HBase

B.MongoDB

C.MySQL

D.Cassandra

25.MapReduce的性能优化手段通常包括()。

A.减少ReduceTask的数量

B.使用Combiner减少网络传输

C.数据预处理,减少小文件数量

D.开启speculation执行机制

26.Docker镜像的分层存储技术带来的优势有()。

A.镜像体积小

B.镜像分发快

C.易于复用和扩展

D.必须每次都重新构建

27.Kafka的消息传输保障机制可以通过配置Producer的acks参数来实现,以下描述正确的有()。

A.acks=0:Producer不需要等待Broker的确认,吞吐量最高,但可靠性最低

B.acks=1:Producer只要收到Leader副本的确认即认为发送成功

C.acks=all:Producer需要等待所有ISR(同步副本列表)中的副本都确认收到消息

D.acks=-1:与acks=all含义相同

28.在Flink中,Backpressure(背压)产生的原因及处理机制涉及()。

A.消费者处理速度慢于生产者

B.Flink基于流式网络缓冲区,能够自动感知并处理背压

C.Flink无法处理背压,会导致数据丢失

D.可以通过增加Task的并行度或优化算子逻辑来缓解背压

29.以下关于Hive的调优策略,正确的有()。

A.开启向量化查询

B.使用谓词下推

C.使用列式存储格式如ORC或Parquet

D.避免在SQL中使用笛卡尔积

30.云计算架构设计中的安全策略包括()。

A.身份认证与授权

B.数据加密(传输中及静态)

C.网络隔离

D.定期安全审计与日志监控

三、填空题(本大题共15小题,每小题2分,共30分)

31.在HDFS默认配置中,数据块的默认大小是________MB。

32.Spark中,________算子可以将父RDD的分区数据合并到子RDD的一个分区中,例如reduceByKey。

33.Kubernetes中,________是部署无状态应用的最小部署单元,它管理了一组Pod的副本。

34.HBase中,数据是按照________有序存储的,这是HBase查询速度快的关键。

35.MapReduce中,MapTask的输入数据切片大小通常由________参数决定。

36.Zookeeper的Watch机制中,Watch事件是一次性的,触发后需要重新________才能继续监听。

37.Docker容器的生命周期管理命令中,________命令用于停止一个正在运行的容器。

38.Flume中,________类型的事件传输可靠性最高,但会牺牲性能。

39.Kafka中,每个Topic可以被分为多个________,以实现并行读写和负载均衡。

40.Hive中,________命令用于将元数据存储在关系数据库中,通常是MySQL。

41.Flink的Window操作中,________窗口根据元素到达的时间戳分配窗口,没有固定的大小和边界。

42.在YARN中,________负责向ApplicationMaster分配Container。

43.Hadoop的RPC机制中,客户端和服务端通过________协议进行通信。

44.Redis集群模式中,采用________槽的概念来分配数据到不同的节点。

45.Prometheus中,________是一种临时的、即时的查询,不会存储历史数据。

四、判断题(本大题共10小题,每小题1.5分,共15分。正确的打“√”,错误的打“×”)

46.Spark是基于内存的分布式计算框架,因此它完全不使用磁盘,所有中间结果都保存在内存中。()

47.HDFS适合存储大量的小文件,因为NameNode内存足够大,可以管理无限多的文件。()

48.Kubernetes中的Pod内的容器共享同一个网络命名空间,可以通过localhost互相通信。()

49.HBase是强一致性的系统,对同一行的读写操作总是能读取到最新的写入数据。()

50.Dockerfile中的ENTRYPOINT指令在容器启动时执行,且会被dockerrun命令后的参数覆盖。()

51.Kafka的ConsumerGroup中,每个分区只能被组内的一个消费者消费,但一个消费者可以消费多个分区。()

52.MapReduce中,Reducer的数量决定了最终输出文件的个数。()

53.SparkSQL的CacheTable功能会将表数据缓存在Executor的内存中,后续查询会直接读取缓存。()

54.Flink的Savepoint和Checkpoint功能完全一样,都可以用于故障恢复。()

55.在公有云环境中,用户不需要关心底层物理服务器的硬件维护。()

五、简答题(本大题共5小题,每小题6分,共30分)

56.简述HDFS的机架感知策略及其在数据读写过程中的作用。

57.请解释Spark中宽依赖和窄依赖的区别,并说明这种划分对Stage生成的影响。

58.描述Kubernetes中Pod的生命周期状态及其转换过程。

59.在大数据处理中,什么是数据倾斜?请列举至少两种解决Spark作业中数据倾斜的方法。

60.简述CAP定理,并说明在分布式系统设计中(如Cassandra或HBase),通常是如何在CA、CP和AP之间进行权衡的。

六、综合应用与分析题(本大题共2小题,每小题25分,共50分)

61.某电商公司每天产生约500GB的用户行为日志数据,数据源分布在各地的Web服务器上。现需要构建一个基于Hadoop和Spark的实时数据处理平台,要求实现数据的实时采集、实时清洗、实时统计(如每分钟的UV/PV),并将结果存入MySQL供前端展示。

(1)请设计一个完整的技术架构图(用文字描述各组件及其数据流向)。

(2)针对“实时统计每分钟UV”这一需求,如果使用SparkStreaming+Redis来实现,请描述具体的实现逻辑。

(3)在数据量持续增长的情况下,如何优化Kafka消费者组的性能以保证低延迟?

62.假设你负责维护一个基于Kubernetes的微服务集群,该集群包含前端服务、后端API服务和数据库服务。现需进行高可用架构设计与运维。

(1)请设计Deployment和Service的YAML配置策略,确保后端API服务拥有3个副本,且能自动进行滚动更新。

(2)集群中出现了“PodCrashLoopBackOff”状态,请列出排查该故障的详细步骤。

(3)为了监控集群状态,需要部署Prometheus和Grafana。请简述Prometheus在Kubernetes中的数据抓取配置方法。

--------------------------------------------------------

答案及详细解析

--------------------------------------------------------

一、单项选择题

1.【答案】C

【解析】纠删码技术通过计算校验块来恢复数据,在存储相同数据量时,相比三副本机制,其存储利用率更高(例如RS(6,3)存储效率为6/9,而三副本为1/3)。Reed-Solomon是常用的算法。然而,EC在数据重建时需要读取多个数据块并进行解码计算,CPU开销远高于副本机制;且写入时也需要计算校验码,开销较大。因此它更适合冷数据,热数据通常仍用副本以换取更好的读性能。

2.【答案】A

【解析】Spark程序运行时,Driver是核心组件。它负责构建DAG图,通过DAGScheduler将Job划分为多个Stage,再通过TaskScheduler将Stage划分为具体的Taskset发送给Executor执行。ClusterManager负责资源申请,Executor负责执行Task。

3.【答案】A

【解析】Kubernetes设计了一个扁平的IP地址空间,所有Pod都在该空间内,且不进行NAT,这意味着不同Node上的Pod可以直接通过对方的IP进行通信,就像在同一个局域网内一样。Pod的IP通常是临时的,重启后会改变。

4.【答案】A

【解析】HBase是构建在HDFS之上的分布式列式存储数据库,利用HDFS的高容错和高可靠性作为底层存储。

5.【答案】B

【解析】Shuffle阶段是MapReduce的核心,连接Map和Reduce。它包括Map端的溢写、分区、排序、合并(Combiner),以及Reduce端的拉取、归并排序等过程。主要目的是将具有相同Key的数据汇聚到同一个Reducer中。

6.【答案】C

【解析】ProcessingTime是处理机器的系统时间,延迟最低但不准确;IngestionTime是进入Kafka的时间;EventTime是事件发生的时间。只有EventTime配合Watermark机制,才能处理乱序事件并提供精确一次的处理语义。

7.【答案】B

【解析】Kafka中,每个Partition有一个Leader和若干Follower。只有Leader处理读写请求,Follower只从Leader被动同步数据。Producer和Consumer默认只与Leader交互。

8.【答案】B

【解析】Docker利用NameSpace和Cgroups进行进程隔离和资源限制,共享宿主机内核,因此轻量级、启动快。虚拟机通过Hypervisor模拟硬件,拥有独立的GuestOS,隔离性强但重量级。

9.【答案】A

【解析】HDFS读取数据时,客户端首先向NameNode发送请求,获取文件元数据(Block位置信息),然后直接与DataNode建立连接读取实际数据流。

10.【答案】D

【解析】Catalyst优化器流程包括:UnresolvedLogicalPlan->LogicalPlan(解析)->OptimizedLogicalPlan(优化)->PhysicalPlan(物理计划生成)->CostModelOptimization(成本模型优化)->SelectedPhysicalPlan。任务调度属于SparkCore的调度层,不属于SQL优化器内部阶段。

11.【答案】B

【解析】CapacityScheduler允许配置多个队列,每个队列有保证的最小资源容量,剩余资源可以按比例在各队列间共享。它旨在让多用户/多组织共享集群,同时保证SLA。

12.【答案】D

【解析】ZNode的数据存储有大小限制,默认最大为1MB。Zookeeper不适合存储大文件,主要用于存储配置信息、状态信息等小数据。

13.【答案】B

【解析】Hive内部表由Hive管理生命周期,DROPTABLE会删除元数据和数据;外部表仅管理元数据,DROPTABLE只删除元数据,HDFS上的数据保留。

14.【答案】C

【解析】Redis支持String,Hash,List,Set,SortedSet(ZSet)等结构。ColumnFamily是HBase或Bigtable中的概念。

15.【答案】B

【解析】IaaS管理基础设施(OS以下);PaaS管理运行环境和数据(OS以上,App以下);SaaS管理应用。PaaS用户无需关心OS维护,但需管理应用部署和配置。

16.【答案】D

【解析】Flume核心组件是Source(源)、Channel(通道)、Sink(目的地)。Mapper是MapReduce组件。

17.【答案】C

【SparkStreaming的微批处理抽象是DStream(DiscretizedStream),底层由RDD序列构成。】

18.【答案】C

【解析】Elasticsearch中,Index包含多个Type(7.x后弱化),Type包含多个Document。Document是JSON格式的数据单元,由多个Field组成。倒排索引是基于Field建立的。

19.【答案】C

【解析】增加并行度可以将数据分散到更多Task,但如果某个Key的数据量极大(如占总量80%),单纯增加并行度无法解决该Key在单个Task上的堆积问题,需要特殊处理。

20.【答案】B

【解析】Prometheus采用Pull模式(主动拉取),定期从配置的Target(如/exporters端点)获取指标数据。

二、多项选择题

21.【答案】ABC

【解析】HDFS通过心跳检测DataNode存活;通过多副本机制保证数据不丢失;通过校验和检测数据损坏。内存镜像文件是NameNode启动时加载元数据的文件,不是运行时的容错机制。

22.【答案】ABCD

【解析】RDD五大特性:1.分区列表;2.计算函数;3.依赖关系;4.分区器(可选,针对KV对);5.最佳位置(可选,数据本地性)。

23.【答案】ABC

【解析】Service类型包括ClusterIP(集群内访问)、NodePort(通过节点IP+端口访问)、LoadBalancer(对接云厂商LB)。Ingress是K8s的API对象,用于HTTP路由,不是Service类型,但常配合Service使用。

24.{【答案】ABD

【解析】MySQL是关系型数据库。HBase(列族)、MongoDB(文档)、Cassandra(列族)均为NoSQL。

25.【答案】BCD

【解析】Combiner减少Map输出数据量;合并小文件减少Task启动开销;Speculation解决慢Task拖后腿问题。减少ReduceTask数量在某些情况下可能加重单个Reducer负担,不一定优化性能,需视情况而定。

26.【答案】ABC

【解析】镜像分层基于UnionFS,复用底层基础镜像,构建快、分发快、体积小。不需要每次都重新构建,只需构建变更层。

27.【答案】ABCD

【解析】acks=0不等待确认;acks=1等待Leader确认;acks=all(或-1)等待ISR中所有副本确认。

28.【答案】ABD

【解析】背压通常由消费能力不足引起。Flink拥有高效的背压机制,通过网络栈缓冲区反馈,不会丢失数据。解决方法包括扩容、优化算子等。

29.【答案】ABCD

【解析】向量化查询、谓词下推、列式存储、避免笛卡尔积都是Hive常见的有效优化手段。

30.【答案】ABCD

【解析】身份认证、数据加密、网络隔离(VPC/Subnet/SecurityGroup)、审计日志是云安全的核心要素。

三、填空题

31.【答案】128

【解析】Hadoop2.x和3.x默认块大小均为128MB(1.x是64MB)。

32.【答案】shuffle

【解析】宽依赖涉及Shuffle过程。

33.【答案】Deployment

【解析】Deployment管理ReplicaSet,进而管理Pod副本,适合无状态服务。

34.【答案】RowKey

【解析】HBase数据按照RowKey字典序排序存储。

35.【答案】dfs.blocksize

【解析】SplitSize通常与BlockSize一致,由`dfs.blocksize`决定。

36.【答案】设置Watch

【解析】ZNode变化触发一次Watch后,Watcher失效,需再次`exists/getChildren`并设置Watch。

37.【答案】dockerstop

【解析】`dockerstop`优雅停止(发送SIGTERM),`dockerkill`强制停止(SIGKILL)。

38.【答案】MemoryChannel

【解析】MemoryChannel最快但丢数据;FileChannel可靠但慢。题目问可靠性最高,通常指FileChannel(虽然MemoryChannel若配合Persistence也可,但标准答案指FileChannel更稳妥,若题目指“可靠性最高且不丢数据”是FileChannel;若指“可靠性最高等级”是FileChannel)。注:若指MemoryChannel配合Persistence也是FileChannel逻辑。此处填FileChannel最标准。

39.【答案】Partition

【解析】Partition是Kafka的最小并行单元和存储单元。

40.【答案】Metastore

【解析】HiveMetastore存储元数据,通常配置为MySQL。

41.【答案】Session

【解析】SessionWindow根据活跃间隙分组,没有固定大小。

42.【答案】Scheduler

【解析】YARNResourceManager中的Scheduler服务负责分配资源。

43.【答案】HTTP

【解析】HadoopRPC基于HTTP/HTTPS(底层是TCP/IP封装,但对外接口常描述为基于HTTP或自定义BinaryProtocol,通常教材简称为基于TCP/IP或HTTP。HadoopRPC实际上使用的是Hadoop特有的二进制协议运行在TCP之上,但在某些旧版本或特定组件中涉及HTTP。标准答案常填“TCP/IP”或“RPC”。若严格按Hadoop源码,是基于TCP。但在WebHDFS等场景是HTTP。此处最通用的标准答案是“TCP/IP”或“RPC协议”。若必须填具体协议,通常填“TCP/IP”。)

修正:HadoopRPC底层使用TCP/IP,但数据格式是自定义的。若此空出现在通用考试中,填“TCP/IP”或“RPC”均可。鉴于题目问“协议”,填“TCP/IP”更稳妥。

44.【答案】16384

【解析】RedisCluster共有16384个哈希槽。

45.【答案】InstantQuery

【解析】Prometheus查询类型中,InstantQuery只返回当前状态。

四、判断题

46.【答案】×

【解析】Spark是基于内存的,但如果内存不足,它会将数据Spill(溢写)到磁盘,并非完全不使用磁盘。

47.【答案】×

【解析】HDFS不适合存储大量小文件,因为每个文件的元数据(文件名、权限、Block位置)都要保存在NameNode内存中,小文件过多会撑爆NameNode内存。

48.【答案】√

【解析】同一Pod内的容器共享NetworkNamespace,共享同一个IP和端口空间,可以通过localhost通信。

49.【答案】√

【解析】HBase保证行级别的强一致性,写入成功后,立即可读。

50.【答案】×

【解析】`dockerrun`的参数会覆盖`CMD`指令,而不是`ENTRYPOINT`。`ENTRYPOINT`让容器以可执行程序形式运行,`CMD`提供默认参数。若要覆盖ENTRYPOINT需使用`--entrypoint`参数。

51.【答案】√

【解析】Kafka消费者组中,Partition是消费的最小单元,一个Partition只能被同组的一个Consumer消费,但一个Consumer可以消费多个Partition。

52.【答案】√

【解析】每个Reducer会产生一个输出文件,Reducer数量决定输出文件数量。

53.【答案】√

【解析】`cache()`或`persist()`将数据缓存在内存/磁盘中,后续Action操作会优先读取缓存。

54.【答案】×

【解析】Savepoint是手动触发的、应用状态的checkpoints,通常用于升级或维护,包含更多元数据且假设算子链拓扑改变;Checkpoint是Flink自动的故障恢复机制,通常假设拓扑不变。二者不完全一样。

55.【答案】√

【解析】公有云的IaaS层特性之一就是用户无需维护物理硬件。

五、简答题

56.【答案】

机架感知是HDFS的一种数据放置策略。

(1)策略内容:通常将集群划分为多个机架。HDFS默认副本数为3。放置策略为:第一个副本放在本地节点(若写入节点在集群内),第二个副本放在不同机架的节点,第三个副本放在与第二个副本相同机架的不同节点上。

(2)作用:

容错性:防止整个机架故障导致数据丢失。

读写性能:利用数据本地性,MapReduce任务尽量在数据所在节点或机架运行,减少跨机架网络传输,提升带宽利用率。

57.【答案】

窄依赖:父RDD的一个分区最多被子RDD的一个分区使用。即一对一关系。如map,filter。不发生Shuffle。

宽依赖:父RDD的一个分区被子RDD的多个分区使用。即一对多关系。如reduceByKey,groupByKey。发生Shuffle。

对Stage的影响:Spark根据宽依赖划分Stage。遇到宽依赖时,会生成一个新的Stage。窄依赖则被划分在同一个Stage内部,允许流水线式执行。这种划分使得Spark可以在Stage内部进行高效的流水线优化,而在Stage边界进行Shuffle数据交换。

58.【答案】

Pod生命周期主要状态包括:

Pending:Pod已创建,但容器未启动(如正在拉取镜像)。

Running:至少有一个容器正在运行。

Succeeded:所有容器成功终止,且不会重启。

Failed:所有容器已终止,至少一个容器终止失败。

Unknown:Pod状态无法获取(通常网络通信失败)。

转换过程:

创建->Pending->(镜像拉取成功)->Running->(容器正常退出)->Succeeded

Running->(容器异常退出且重启策略为OnFailure)->Running

Running->(容器异常退出且重启策略为Never)->Failed

Running->(反复重启失败)->CrashLoopBackOff

59.【答案】

数据倾斜:在分布式计算中,由于数据分布不均匀,导致大部分数据集中在少数几个Task(节点)上,造成这些Task运行时间远超其他Task,拖慢整体作业进度。

解决方法:

1.使用BroadcastJoin:如果Join操作中有一张表较小,将其广播到所有Executor,避免大表Shuffle。

2.增加并行度:调整`spark.sql.shuffle.partitions`,增加Reducer数量,尽量分散数据。

3.Salting(加盐):对倾斜的Key添加随机前缀(如0-N),将其打散到多个Task,进行局部聚合后,再去掉前缀进行全局聚合。

4.自定义Partitioner:根据业务特点重新设计Key的分区逻辑,使数据更均匀。

60.【答案】

CAP定理指出,分布式系统无法同时满足一致性、可用性和分区容错性,最多只能同时满足两项。

C:Consistency,所有节点在同一时间看到的数据相同。

A:Availability,每次请求都能得到响应(不管成功失败)。

P:PartitionTolerance,系统在出现网络分区时仍能运行。

权衡:

CP系统(如HBase,RedisCluster):优先保证数据一致性和分区容错。出现分区时,可能会拒绝部分写入请求以保证数据不冲突,牺牲部分可用性。

AP系统(如Cassandra,DynamoDB):优先保证可用性和分区容错。出现分区时,允许节点返回旧数据(最终一致性),牺牲强一致性。

CA系统:在分布式系统中(由于网络不稳定,P是必须面对的),真正的CA系统较少见,通常存在于单机系统或局域网环境。在云环境中,通常在CP和AP之间根据业务场景选择。

六、综合应用与分析题

61.【答案】

(1)技术架构设计:

数据采集层:各地Web服务器部署FlumeAgent(作为Source监听日志文件),使用KafkaChannel或MemoryChannel,Sink配置为KafkaTopic。

消息缓冲层:Kafka集群(多副本配置),作为数据缓冲区,解耦生产者和消费者。

实时计算层:SparkStreaming/StructuredStreaming集群。从Kafka读取数据。

存储层:Redis用于存储实时统计的中间状态(如UV的Set),MySQL用于存储最终结果。

展示层:Web应用直接查询MySQL。

数据流向:WebServer->Flume->Kafka->SparkStreaming->Redis/MySQL。

(2)实现逻辑(SparkStreaming+Redis统计UV):

SparkStreaming从Kafka消费数据,解析出每条日志的。

设置窗口为1分钟,滑动步长为1分钟。

使用`map`算子将UserID转换为。为了利用Redis的去重能力,可以采用以下两种方式之一:

方式一(纯Redis去重):在foreachPartition中,遍历该分区的UserID,利用Redis的`PFADD`(HyperLogLog,精度稍低但省内存)或`SADD`(Set,精确但耗内存)操作将UserID放入Key为`Date:Hour:Minute:UV`的键中。然后通过`PFCOUNT`或`SCARD`获取UV值写入MySQL。

方式二(Spark精确去重+Redis):利用Spark的`transform`结合`dropDuplicates`(开销大),或者利用Redis在Spark端进行过滤。

推荐方案:为了高性能,通常使用RedisHyperLogLog。代码逻辑:`rdd.foreachPartition{iter=>valjedis=...;iter.foreach{userId=>jedis.pfadd("uv:"+windowTime,userId)};jedis.set("result:"+windowTime,jedis.pfcount("uv:"+windowTime))}`。

(3)Kafka消费者组性能优化:

增加消费者实例数量:确保Consumer数量<=TopicPartition数量,尽量达到1:1,实现最大并行度。

调整`fetch.min.bytes`和`fetch.max.wait.ms`:增加每次拉取的数据量,减少请求频率。

关闭自动提交Offset:改为手动提交,并在处理完数据后提交,防止数据丢失。

使用RebalanceListener优化重平衡时的处理。

确保KafkaBroker磁盘IO和网络带宽充足,必要时增加Topic分区数。

62.【答案】

(1)Deployment和Service配置策略:

DeploymentYAML:

`replicas:3`

`strategy.type:RollingUpdate`(默认)

`st

温馨提示

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

评论

0/150

提交评论