大数据部分简单面试题
1.scala方法和函数的定义(反复看容易记串直到深度记忆)
方法:
无返回值:def 方法名(参数名:参数类型)={方法体}
有返回值:def 方法名(参数名:参数类型):返回值类型={方法体}
函数:
无返回值:val 函数名=(参数名:参数类型)=>{函数体}
有返回值:val 函数名:(参数类型,参数类型)=>返回值类型={函数体}
2.什么是柯里化、闭包、偏函数
柯里化:将一次传入两个参数的方法转化成一次传入一个参数的方法
闭包:方法体中匿名函数的运算调用方法的参数列表
偏函数:一组被花括号包含没有match的case语句
3.spark中的宽窄依赖
宽依赖:父RDD中的一个分区被子RDD的多个分区所依赖
窄依赖:父RDD中的一个分区被子RDD的一个分区所依赖
4.是什么是DAG有向无环图?如何划分stage
DAG有向无环图就是RDD执行流程
划分stage的时候采用回溯算法,从后往前,遇到窄依赖级包含在当前的stage中,遇到宽依赖就划分为新的stage
5.广播变量的意义,有什么要求
广播变量是在executor中开辟一块内存,保存一份driver端的变量副本,广播遍历使得不管有多少个take也只有一个副本
意义:减少占用网络带宽和服务器资源
要求:
1 不能广播RDD,RDD不存储数据
2 广播变量只能在driver端定义,不能在executor端定义
3 可以在driver端修改变量的值,不能在executor端修改
6.spark为什么搭建HA模式
standlone是一主多从,容易出现出现单点故障问题;standlone-HA模式是一主多备,当master挂掉时,standby状态的节点就会顶替挂掉的master
HA模式原理:先启动的master会去zookeeper中注册临时节点,后启动的master也会去zookeeper中注册临时节点,但是临时节点已经被注册,自己就是standby状态。每隔一段时间就会去zookeeper注册,如果临时节点一直存在,自己就一直是standby状态,直到alive状态的master宕机,zookeeper会删除临时节点,standby状态的master就会注册临时节点,接替掌管集群
7.spark中standlone-HA模式提交任务流程
1 Driver端提交任务找到资源管理器master注册并申请资源
2 master注册worker并分配资源
3 worker通知Driver端准备好资源可以提交任务
4 drive端会构建有向无环图将有向无环图提交到DAGschedule中,将有向无环图划分为一个个stage,并以taskset的形式发送给taskscheduler,将taskset划分成一个个task并提交到worker节点上executor内存中运行
5 driver提交任务并监控
8.sparkStreaming整合kafka有几种方式,为什么最后剩一种
有两种方式,一种是receiver模式,一种是direct直连模式
0.10.0版本以后只有direct直连模式了。因为receiver将kafka的数据抽取保存到executor中,可能会因为底层计算失败导致数据丢失,为了解决这个问题就开启了WAL预写日志,也将数据保存到WAL预写日志一份,这样造成了数据冗余。而且数据读取不及时会造成数据积压。而direct模式每隔一个batch time就到kafka的topic下的每个分区读取最新的偏移量,只要kafka数据保存时间够长就可以恢复数据,避免了数据冗余,也更加安全
9.sparkStreaming的有状态算子有什么,使用时需要注意什么
updataStateByKey 当前批次计算依赖之前批次计算结果。
在使用updataStateByKey时需要提前设置checkpoint机制
10.kafka的组件有哪些,kafka为什么快,如何保证数据不丢失
组件:producer broker topic partition consumer
原因:page cache页缓存技术,而且是顺序读写磁盘,零拷贝,压缩
如何保证数据不丢失:
producer端:有同步模式和异步模式
broker端:ISR维护副本数据
consumer端:将自动提交偏移量改为手动提交偏移量
11.flink中的窗口类型,有什么特点?
Countwindow 与时间无关,与参数个数有关
滚动窗口:传一个参数,相同key的个数达到给的参数时就会触发
滑动窗口:传入两个参数,窗口的大小,和相同的key的个数达到给的参数时就会触发
Timewindow 与参数个数无关 与时间有关
滚动窗口:传入一个参数,时间到达传入的参数时就会触发
滑动窗口“传入两个参数,窗口大小等于滑动时间时就相当于滚动窗口,小于时会造成数据丢失 大于时会造成数据重复消费
12.Flink中水印机制的作用?
尽可能的避免数据丢失
13.flink中cep的作用?
14. Kafka中数据是否全局有序?
区内有序全局无序,要想全局有序,将数据都发送到一个分区里
15.5. RDD缓存有哪几种方式?有什么区别和联系?
cache和persist
cache底层调用的是persist的无参构造,默认缓存在内存中
persist可以指定存在哪