没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
39页
近几年在大数据领域 Spark 还是比较火的,它可以快速计算大量数据,TB 甚至 PB 级别,因为它是基于内存的计算,比 MapReduce 更快,更灵活。 不过 Spark 使用的不好,也会很慢,平时在使用的时候需要特别了解 Spark 的各项组件,参数调优等,否则很容易就造成数据倾斜。 里面有 Spark 的部署方式,spark core、spark sql、spark streaming 等组件的各种面试题,包括但不限于宽窄依赖、缓存、数据广播、shuffle以及数据倾斜的查看和解决方式等等 对于大数据(离线、在线)面试的同学还是很有帮助的
资源推荐
资源详情
资源评论
1.10 Spark
1.10.1 Spark 有几种部署方式?请分别简要论述
1)Local:运行在一台机器上,通常是练手或者测试环境。
2)Standalone:构建一个基于 Mster+Slaves 的资源调度集群,Spark 任务提交给 Master
运行。是 Spark 自身的一个调度系统。
3)Yarn: Spark 客户端直接连接 Yarn,不需要额外构建 Spark 集群。有 yarn-client 和
yarn-cluster 两种模式,主要区别在于:Driver 程序的运行节点。
4)Mesos:国内大环境比较少用。
1.10.2 Spark 任务使用什么进行提交,JavaEE 界面还是脚本
Shell 脚本。
1.10.3 Spark 提交作业参数(重点)
参考答案:
https://blog.csdn.net/gamer_gyt/article/details/79135118
1)在提交任务时的几个重要参数
executor-cores —— 每个 executor 使用的内核数,默认为 1,官方建议 2-5 个,我
们企业是 4 个
num-executors —— 启动 executors 的数量,默认为 2
executor-memory —— executor 内存大小,默认 1G
driver-cores —— driver 使用内核数,默认为 1
driver-memory —— driver 内存大小,默认 512M
2)边给一个提交任务的样式
spark-submit \
--master local[5] \
--driver-cores 2 \
--driver-memory 8g \
--executor-cores 4 \
--num-executors 10 \
--executor-memory 8g \
--class PackageName.ClassName XXXX.jar \
--name "Spark Job Name" \
InputPath \
OutputPath
1.10.4 简述 Spark 的架构与作业提交流程(画图讲解,注明各个部
分的作用)(重点)
YarnClient运行模式介绍
RM
SparkSubmit
bin/spark-submit \
--class WordCount \
--master yarn \
--deploy-mode client \
./WordCount.jar \
./input ./output
NodeManager
ExecutorLauncher
(执行的还是AM的main方法)
NodeManager
7. 启动ExecutorBackend
bin/java CoarseGrainedExecutorBackend
Executor
3.申请启动ExecutorLauncher
bin/java ExecutorLauncher
ExecutorBackend
1.脚本启动执行
2.调用和用户类里
面的main方法并执
行,即启动Driver
4.选择一台
NM启动EL
8. 在EB内部创建Executor对象
6.申请资源
9.分配任务
Driver
2.1 执行代码
2.2 初始化SC
2.3 任务切分
YarnCluster模式
RM
SparkSubmit
bin/spark-submit \
--class WordCount \
--master yarn \
--deploy-mode cluster \
./WordCount.jar \
./input ./output
NodeManager
ApplicationMaster
NodeManager
7. 启动ExecutorBackend
bin/java CoarseGrainedExecutorBackend
Executor
3.封装并发送指令
bin/java ApplicationMaster
ExecutorBackend
1.脚本启动执行
2.内部调用Client
类里面的main方法
并执行
4.选择一台NM
启动AM
8. 在EB内部创建Executor对象
6.申请资源
Client
5. AM启动Driver线程
执行用户的作业
Driver
5.1 执行代码
5.2 初始化SC
5.3 任务切分
9.分配任务
1.10.5 如何理解 Spark 中的血统概念(RDD)(笔试重点)
RDD 在 Lineage 依赖方面分为两种 Narrow Dependencies 与 Wide Dependencies 用来解决
数据容错时的高效性以及划分任务时候起到重要作用。
1.10.6 简述 Spark 的宽窄依赖,以及 Spark 如何划分 stage,每个 stage
又根据什么决定 task 个数? (笔试重点)
Stage:根据 RDD 之间的依赖关系的不同将 Job 划分成不同的 Stage,遇到一个宽依赖
则划分一个 Stage。
Task:Stage 是一个 TaskSet,将 Stage 根据分区数划分成一个个的 Task。
1.10.7 请列举 Spark 的 transformation 算子(不少于 8 个),并简述
功能(重点)
1)map(func):返回一个新的 RDD,该 RDD 由每一个输入元素经过 func 函数转换后
组成.
2)mapPartitions(func):类似于 map,但独立地在 RDD 的每一个分片上运行,因此在
类型为 T 的 RD 上运行时,func 的函数类型必须是 Iterator[T] => Iterator[U]。假设有 N 个元
素,有 M 个分区,那么 map 的函数的将被调用 N 次,而 mapPartitions 被调用 M 次,一个函数
一次处理所有分区。
3)reduceByKey(func,[numTask]):在一个(K,V)的 RDD 上调用,返回一个(K,V)的
RDD,使用定的 reduce 函数,将相同 key 的值聚合到一起,reduce 任务的个数可以通过第
二个可选的参数来设置。
4)aggregateByKey (zeroValue:U,[partitioner: Partitioner]) (seqOp: (U, V) => U,combOp: (U,
U) => U: 在 kv 对的 RDD 中,,按 key 将 value 进行分组合并,合并时,将每个 value 和初始
值作为 seq 函数的参数,进行计算,返回的结果作为一个新的 kv 对,然后再将结果按照 key
进行合并,最后将每个分组的 value 传递给 combine 函数进行计算(先将前两个 value 进行
计算,将返回结果和下一个 value 传给 combine 函数,以此类推),将 key 与计算结果作为
一个新的 kv 对输出。
5)combineByKey(createCombiner: V=>C, mergeValue: (C, V) =>C, mergeCombiners: (C,
C) =>C):
对相同 K,把 V 合并成一个集合。
1.createCombiner: combineByKey() 会遍历分区中的所有元素,因此每个元素的键要么
还没有遇到过,要么就和之前的某个元素的键相同。如果这是一个新的元素,combineByKey()
会使用一个叫作 createCombiner()的函数来创建那个键对应的累加器的初始值
2.mergeValue: 如果这是一个在处理当前分区之前已经遇到的键,它会使用 mergeValue()
方法将该键的累加器对应的当前值与这个新的值进行合并
3.mergeCombiners: 由于每个分区都是独立处理的, 因此对于同一个键可以有多个累
加器。如果有两个或者更多的分区都有对应同一个键的累加器, 就需要使用用户提供的
mergeCombiners() 方法将各个分区的结果进行合并。
…
根据自身情况选择比较熟悉的算子加以介绍。
1.10.8 请列举 Spark 的 action 算子(不少于 6 个),并简述功能(重
点)
1)reduce:
2)collect:
3)first:
4)take:
5)aggregate:
6)countByKey:
7)foreach:
8)saveAsTextFile:
1.10.9 请列举会引起 Shuffle 过程的 Spark 算子,并简述功能。
reduceBykey:
groupByKey:
…ByKey:
1.10.10 简述 Spark 的两种核心 Shuffle(HashShuffle 与 SortShuffle)
的工作流程(包括未优化的 HashShuffle、优化的 HashShuffle、普通
的 SortShuffle 与 bypass 的 SortShuffle)(重点)
未经优化的 HashShuffle:
剩余38页未读,继续阅读
风老魔
- 粉丝: 249
- 资源: 99
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 技术面试最后反问面试官的话 校招面试非技术问题有哪些 非技术问题如何回答.png
- NB-IOT-BC26全网通模块Altium+ CADENCE +PADS三种格式(原理图SCH+PCB封装库)文件.zip
- 基于微信小程序开发的校园失物招领系统源码毕业设计(优质项目源码).zip
- 词向量是一种将自然语言中的单词转换为数值向量的技术,它能够捕捉词义和上下文信息
- nmap与masscan的简单使用
- MyBatis动态SQL.pdf
- 基于stm32单片机protues仿真的温湿度控制系统设计(仿真图、源代码)
- 词向量:自然语言处理的基石
- mybatis动态sql
- 40G微信小程序开发教程(工具插件+视频教程)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页