锁屏面试题百日百刷,每个工作日保持更新面试题。锁屏面试题 app、小程序现已上线,官网地址:https://www.demosoftware.cn。已收录了每日更新的面试题的所有内容,还蕴含特色的解锁屏幕温习面试题、每日编程题目邮件推送等性能。让你在面试中后人一步! 接下来的是今日的面试题:
1.Spark 应用 parquet 文件存储格局能带来哪些益处?
1)如果说 HDFS 是大数据时代分布式文件系统首选规范,那么 parquet 则是整个大数据时代文件存储格局实时首选规范。
2)速度更快:从应用 spark sql 操作一般文件 CSV 和 parquet 文件速度比照上看,绝大多数状况会比应用 csv 等一般文件速度晋升 10 倍左右,在一些一般文件系统无奈在 spark 上胜利运行的状况下,应用 parquet 很多时候能够胜利运行。
3)parquet 的压缩技术十分稳固杰出,在 spark sql 中对压缩技术的解决可能无奈失常的实现工作(例如会导致 lost task,lost executor)然而此时如果应用 parquet 就能够失常的实现。
4)极大的缩小磁盘 I /o, 通常状况下可能缩小 75% 的存储空间,由此能够极大的缩小 spark sql 解决数据的时候的数据输出内容,尤其是在 spark1.6x 中有个下推过滤器在一些状况下能够极大的缩小磁盘的 IO 和内存的占用,(下推过滤器)。
5)spark 1.6x parquet 形式极大的晋升了扫描的吞吐量,极大进步了数据的查找速度 spark1.6 和 spark1.5x 相比而言,晋升了大概 1 倍的速度,在 spark1.6X 中,操作 parquet 时候 cpu 也进行了极大的优化,无效的升高了 cpu 耗费。
6)采纳 parquet 能够极大的优化 spark 的调度和执行。咱们测试 spark 如果用 parquet 能够无效的缩小 stage 的执行耗费,同时能够优化执行门路。
2.Spark 应用程序的执行过程是什么?
1)构建 Spark Application 的运行环境(启动 SparkContext),SparkContext 向资源管理器(能够是 Standalone、Mesos 或 YARN)注册并申请运行 Executor 资源;
2)资源管理器调配 Executor 资源并启动 StandaloneExecutorBackend,Executor 运行状况将随着心跳发送到资源管理器上;
3)SparkContext 构建成 DAG 图,将 DAG 图分解成 Stage,并把 Taskset 发送给 Task Scheduler。Executor 向 SparkContext 申请 Task,Task Scheduler 将 Task 发放给 Executor 运行同时 SparkContext 将利用程序代码发放给 Executor;
4)Task 在 Executor 上运行,运行结束开释所有资源。
3. 如何了解 Standalone 模式下,Spark 资源分配是粗粒度的?
spark 默认状况下资源分配是粗粒度的,也就是说程序在提交时就调配好资源,前面执行的时候应用调配好的资源,除非资源呈现了故障才会重新分配。比方 Spark shell 启动,已提交,一注册,哪怕没有工作,worker 都会分配资源给 executor。
4.FAIR 调度模式的长处和毛病?
所有的工作领有大抵相当的优先级来共享集群资源,spark 多以轮训的形式为任务分配资源,不论长工作还是端工作都能够取得资源,并且取得不错的响应工夫,对于短工作,不会像 FIFO 那样期待较长时间了,通过参数 spark.scheduler.mode 为 FAIR 指定。
5. 请列举你碰到的 CPU 密集型的利用场景,你有做哪些优化?
1)CPU 密集型指的是零碎的 硬盘 / 内存 效力 绝对 CPU 的效力 要好很多,此时,零碎运作,大部分的情况是 CPU Loading 100%,CPU 要读 / 写 I/O (硬盘 / 内存),I/ O 在很短的工夫就能够实现,而 CPU 还有许多运算要解决,CPU Loading 很高。->cpu 是瓶颈。
I/O 密集型指的是零碎的 CPU 效力绝对硬盘 / 内存的效力要好很多,此时,零碎运作,大部分的情况是 CPU 在等 I/O (硬盘 / 内存) 的读 / 写,此时 CPU Loading 不高。->IO 是瓶颈。
2)CPU 密集型次要特点是要进行大量的计算,常见利用场景有:图计算、大量的逻辑判断程序,机器学习等,Mahout 其实就是针对 CPU 密集的一个 apache 我的项目。
优化的点次要有,1)升高工作的并行执行,务越多,花在工作切换的工夫就越多,CPU 执行工作的效率就越低,2)优化计算逻辑,缩小计算逻辑的复杂度,3)尽量减少应用高强度压缩形式,对原始数据的压缩和解压缩会减少 CPU 的累赘