shein大数据开发暑期实习面经答案

面经题目来自:https://www.nowcoder.com/share/jump/1685670338914

1.Spark的运行机制

  • 首先spark的客户端将作业提交给yarn的RM,然后RM会分配container,并且选择合适的NM启动ApplicationMaster,然后AM启动Driver,紧接着向RM申请资源启动executor,Executor 进程启动后会向 Driver 反向注册,全部注册完成后 Driver 开始执行main 函数,当执行到行动算子,触发一个 Job,并根据宽依赖开始划分 stage(阶段的划分),每个 stage 生成对应的 TaskSet(任务的切分),之后将 task 分发到各个 Executor 上执行。

2.union是宽依赖还是窄依赖

窄依赖

3.常见的action算子

  • collect:将数据采集到Driver端,形成数组
  • take:返回RDD的前n个元素组成的数组
  • foreach:遍历RDD中的每一个元素【executor端】

4.reduceByKey和groupByKey的区别

  • 他们之间主要有两个区别
  • 第一个是,groupByKey只能分组,不能聚合,而reduceByKey包含分组和聚合两个功能
  • 第二个是,reduceByKey会在shuffle前对分区内相同key的数据进行预聚合(类似于MapReduce的combiner),减少落盘的数据量,而groupByKey只是shuffle,不会进行预聚合的操作,因此reduceByKey的会高一些

5.Spark的checkpoint

  • 因为RDD实际上是不存储数据的,那么如果RDD要想重用,那么就需要重头开始再执行一遍,所以为了提高RDD的重用性,就有了RDD持久化
  • 分类:缓存和检查点

6.Spark的cache和persist区别

  • 他们主要有两个区别:
  • 第一个是,缓存有两种方法,一种是cache,将数据临时存储在内存中(默认就会调用persist(memory_only)),还有一种是persist,将数据临时存储在磁盘中,程序结束就会自动删除临时文件;而检查点,就是checkpoint,将数据长久保存在磁盘中
  • 第二个是,缓存不会切断RDD之间的血缘关系,检查点会切断RDD之间的血缘关系

7.Flink的checkpoint和Spark的checkpoint区别

  • 分别介绍两个checkpoint是什么
  • flink的checkpoint:
  • flink应用在启动的时候,flink的JobManager创建CheckpointCoordinator
  • CheckpointCoordinator(检查点协调器) 周期性的向该流应用的所有source算子发送 barrier(屏障)
  • 当某个source算子收到一个barrier时,便暂停数据处理过程,然后将自己的当前状态制作成快照,并保存到指定的持久化存储(hdfs)中,最后向CheckpointCoordinator报告自己快照制作情况,同时向自身所有下游算子广播该barrier,恢复数据处理
  • 下游算子收到barrier之后,会暂停自己的数据处理过程,然后将自身的相关状态制作成快照,并保存到指定的持久化存储中,最后向CheckpointCoordinator报告自身快照情况,同时向自身所有下游算子广播该barrier,恢复数据处理。
  • 每个算子按照 上面这个操作 不断制作快照并向下游广播,直到最后barrier传递到sink算子,快照制作完成。
  • 当CheckpointCoordinator收到所有算子的报告之后,认为该周期的快照制作成功; 否则,如果在规定的时间内没有收到所有算子的报告,则认为本周期快照制作失败。

8.Flink的两阶段提交问题

对于每个checkpoint,sink任务会,并将接下来所有接收的数据添加到事务里;然后 将这些数据写入外部sink系统,但不提交它们---这时只是;当收到checkpoint完成的通知时,它 才事务,实现结果的真正写入。

#SHEIN信息集散地##23届找工作求助阵地##数据人的面试交流地##大数据开发面经##大数据#
全部评论

相关推荐

点赞 评论 收藏
转发
2 33 评论
分享
牛客网
牛客企业服务