JAVA面试——Spark

简介: JAVA面试——Spark

26.1.1. 概念

Spark 提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据

集和数据源(批量数据或实时的流数据)的大数据处理的需求。

26.1.2. 核心架构

image.png

Spark Core

包含 Spark 的基本功能;尤其是定义 RDD 的 API、操作以及这两者上的动作。其他 Spark 的库都

是构建在 RDD 和 Spark Core 之上的

Spark SQL

提供通过 Apache Hive 的 SQL 变体 Hive 查询语言(HiveQL)与 Spark 进行交互的 API。每个

数据库表被当做一个 RDD,Spark SQL 查询被转换为 Spark 操作。

Spark Streaming

对实时数据流进行处理和控制。Spark Streaming 允许程序能够像普通 RDD 一样处理实时数据

Mllib

一个常用机器学习算法库,算法被实现为对 RDD 的 Spark 操作。这个库包含可扩展的学习算法,

比如分类、回归等需要对大量数据集进行迭代的操作。

GraphX

控制图、并行图操作和计算的一组算法和工具的集合。GraphX 扩展了 RDD API,包含控制图、

创建子图、访问路径上所有顶点的操作13/01/2022

Page 264 of 283

26.1.3. 核心组件

image.png

Cluster Manager-制整个集群,监控 worker

在 standalone 模式中即为 Master 主节点,控制整个集群,监控 worker。在 YARN 模式中为资

源管理器

Worker 节点-负责控制计算节点

从节点,负责控制计算节点,启动 Executor 或者 Driver。

Driver: 运行 Application main()函数

Executor:执行器,是为某个 Application 运行在 worker node 上的一个进程

26.1.4. SPARK 编程模型

image.png

Spark 应用程序从编写到提交、执行、输出的整个过程如图所示,图中描述的步骤如下:13/01/2022

Page 265 of 283

1. 用户使用 SparkContext 提供的 API(常用的有 textFile、sequenceFile、runJob、stop 等)

编写 Driver application 程序。此外 SQLContext、HiveContext 及 StreamingContext 对

SparkContext 进行封装,并提供了 SQL、Hive 及流式计算相关的 API。

2. 使用SparkContext提交的用户应用程序,首先会使用BlockManager和BroadcastManager

将任务的 Hadoop 配置进行广播。然后由 DAGScheduler 将任务转换为 RDD 并组织成 DAG,

DAG 还将被划分为不同的 Stage。最后由 TaskScheduler 借助 ActorSystem 将任务提交给

集群管理器(Cluster Manager)。

3. 集群管理器(ClusterManager)给任务分配资源,即将具体任务分配到Worker上,Worker

创建 Executor 来处理任务的运行。Standalone、YARN、Mesos、EC2 等都可以作为 Spark

的集群管理器。

26.1.5. SPARK 计算模型

RDD 可以看做是对各种数据计算模型的统一抽象,Spark 的计算过程主要是 RDD 的迭代计算过

程。RDD 的迭代计算过程非常类似于管道。分区数量取决于 partition 数量的设定,每个分区的数

据只会在一个 Task 中计算。所有分区可以在多个机器节点的 Executor 上并行执行。

image.png

image.png

1.

2.

构建 Spark Application 的运行环境,启动 SparkContext

SparkContext 向资源管理器(可以是 StandaloneMesosYarn)申请运行 Executor 资源,

并启动 StandaloneExecutorbackend

Executor SparkContext 申请 Task

SparkContext 将应用程序分发给 Executor

SparkContext 构建成 DAG 图,将 DAG 图分解成 Stage、将 Taskset 发送给 Task Scheduler

最后由 Task Scheduler Task 发送给 Executor 运行

Task Executor 上运行,运行完释放所有资源


26.1.7. SPARK RDD 流程


image.png

26.1.8.

SPARK RDD

1RDD 的创建方式

1)从 Hadoop 文件系统(或与Hadoop兼容的其他持久化存储系统,如Hive、Cassandra、

HBase)输入(例如 HDFS)创建。

2)从父 RDD 转换得到新 RDD。13/01/2022

Page 268 of 283

3)通过 parallelize 或 makeRDD 将单机数据创建为分布式 RDD。

2RDD 的两种操作算子(转换(Transformation)与行动(Action)

对于 RDD 可以有两种操作算子:转换(Transformation)与行动(Action)。

1)转换(Transformation):Transformation操作是延迟计算的,也就是说从一个RDD转

换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触

发运算

image.png


目录
相关文章
|
2天前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
24 4
|
4月前
|
缓存 Java 关系型数据库
2025 年最新华为 Java 面试题及答案,全方位打造面试宝典
Java面试高频考点与实践指南(150字摘要) 本文系统梳理了Java面试核心考点,包括Java基础(数据类型、面向对象特性、常用类使用)、并发编程(线程机制、锁原理、并发容器)、JVM(内存模型、GC算法、类加载机制)、Spring框架(IoC/AOP、Bean生命周期、事务管理)、数据库(MySQL引擎、事务隔离、索引优化)及分布式(CAP理论、ID生成、Redis缓存)。同时提供华为级实战代码,涵盖Spring Cloud Alibaba微服务、Sentinel限流、Seata分布式事务,以及完整的D
210 1
|
4月前
|
存储 安全 Java
常见 JAVA 集合面试题整理 自用版持续更新
这是一份详尽的Java集合面试题总结,涵盖ArrayList与LinkedList、HashMap与HashTable、HashSet与TreeSet的区别,以及ConcurrentHashMap的实现原理。内容从底层数据结构、性能特点到应用场景逐一剖析,并提供代码示例便于理解。此外,还介绍了如何遍历HashMap和HashTable。无论是初学者还是进阶开发者,都能从中受益。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
233 3
|
3月前
|
缓存 Java API
Java 面试实操指南与最新技术结合的实战攻略
本指南涵盖Java 17+新特性、Spring Boot 3微服务、响应式编程、容器化部署与数据缓存实操,结合代码案例解析高频面试技术点,助你掌握最新Java技术栈,提升实战能力,轻松应对Java中高级岗位面试。
341 0
|
4月前
|
存储 安全 Java
2025 最新史上最全 Java 面试题独家整理带详细答案及解析
本文从Java基础、面向对象、多线程与并发等方面详细解析常见面试题及答案,并结合实际应用帮助理解。内容涵盖基本数据类型、自动装箱拆箱、String类区别,面向对象三大特性(封装、继承、多态),线程创建与安全问题解决方法,以及集合框架如ArrayList与LinkedList的对比和HashMap工作原理。适合准备面试或深入学习Java的开发者参考。附代码获取链接:[点此下载](https://pan.quark.cn/s/14fcf913bae6)。
1592 48
|
4月前
|
算法 架构师 Java
Java 开发岗及 java 架构师百度校招历年经典面试题汇总
以下是百度校招Java岗位面试题精选摘要(150字): Java开发岗重点关注集合类、并发和系统设计。HashMap线程安全可通过Collections.synchronizedMap()或ConcurrentHashMap实现,后者采用分段锁提升并发性能。负载均衡算法包括轮询、加权轮询和最少连接数,一致性哈希可均匀分布请求。Redis持久化有RDB(快照恢复快)和AOF(日志更安全)两种方式。架构师岗涉及JMM内存模型、happens-before原则和无锁数据结构(基于CAS)。
120 5
|
4月前
|
Java API 微服务
2025 年 Java 校招面试全攻略:从面试心得看 Java 岗位求职技巧
《2025年Java校招最新技术要点与实操指南》 本文梳理了2025年Java校招的核心技术栈,并提供了可直接运行的代码实例。重点技术包括: Java 17+新特性(Record类、Sealed类等) Spring Boot 3+WebFlux响应式编程 微服务架构与Spring Cloud组件 Docker容器化部署 Redis缓存集成 OpenAI API调用 通过实际代码演示了如何应用这些技术,如Java 17的Record类简化POJO、WebFlux构建响应式API、Docker容器化部署。
166 5
|
4月前
|
缓存 NoSQL Java
Java Redis 面试题集锦 常见高频面试题目及解析
本文总结了Redis在Java中的核心面试题,包括数据类型操作、单线程高性能原理、键过期策略及分布式锁实现等关键内容。通过Jedis代码示例展示了String、List等数据类型的操作方法,讲解了惰性删除和定期删除相结合的过期策略,并提供了Spring Boot配置Redis过期时间的方案。文章还探讨了缓存穿透、雪崩等问题解决方案,以及基于Redis的分布式锁实现,帮助开发者全面掌握Redis在Java应用中的实践要点。
214 6
|
4月前
|
NoSQL Java 微服务
2025 年最新 Java 面试从基础到微服务实战指南全解析
《Java面试实战指南:高并发与微服务架构解析》 本文针对Java开发者提供2025版面试技术要点,涵盖高并发电商系统设计、微服务架构实现及性能优化方案。核心内容包括:1)基于Spring Cloud和云原生技术的系统架构设计;2)JWT认证、Seata分布式事务等核心模块代码实现;3)数据库查询优化与高并发处理方案,响应时间从500ms优化至80ms;4)微服务调用可靠性保障方案。文章通过实战案例展现Java最新技术栈(Java 17/Spring Boot 3.2)的应用.
242 9
|
4月前
|
安全 Java API
2025 年 Java 校招面试常见问题及详细答案汇总
本资料涵盖Java校招常见面试题,包括Java基础、并发编程、JVM、Spring框架、分布式与微服务等核心知识点,并提供详细解析与实操代码,助力2025校招备战。
207 1

热门文章

最新文章