面试了10位大数据开发者,自己总结了几道常见面试题

  前言

  金三银四,金三已经过去,到了银四,根据统计,很多人都会选择在三月四月跳槽,原因有很多,企业年后会有大量员工离职,员工觉得老公司待遇不怎么样?薪资不够高,想换个新环境等等原因,所以,三月份就变成了招聘与跳槽的旺季

  前面一段时间给公司面试了10个大数据开发的人,自己总结了50道面试题,在此,我分享给大家,希望大家在五月份要找工作的朋友,我的这篇文章能给你有所帮助。

  

  大纲

  kafka的message包括哪些信息

  怎么查看kafka的offset

  一、Map端的shuffle

  二、Reduce端的shuffle

  spark集群运算的模式

  读:

  1、跟namenode通信查询元数据,找到文件块所在的datanode服务器

  2、挑选一台datanode(就近原则,然后随机)服务器,请求建立socket流

  3、datanode开始发送数据(从磁盘里面读取数据放入流,以packet为单位来做校验)

  4、客户端以packet为单位接收,现在本地缓存,然后写入目标文件

  写:

  1、根namenode通信请求上传文件,namenode检查目标文件是否已存在,父目录是否存在

  2、namenode返回是否可以上传

  3、client请求第一个 block该传输到哪些datanode服务器上

  4、namenode返回3个datanode服务器ABC

  5、client请求3台dn中的一台A上传数据(本质上是一个RPC调用,建立pipeline),A收到请求会继续调用B,然后B调用C,将真个pipeline建立完成,逐级返回客户端

  6、client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位,A收到一个packet就会传给B,B传给C;A每传一个packet会放入一个应答队列等待应答

  7、当一个block传输完成之后,client再次请求namenode上传第二个block的服务器。

  RDD中reduceBykey与groupByKey哪个性能好,为什么

  reduceByKey:reduceByKey会在结果发送至reducer之前会对每个mapper在本地进行merge,有点类似于在MapReduce中的combiner。这样做的好处在于,在map端进行一次reduce之后,数据量会大幅度减小,从而减小传输,保证reduce端能够更快的进行结果计算。

  groupByKey:groupByKey会对每一个RDD中的value值进行聚合形成一个序列(Iterator),此操作发生在reduce端,所以势必会将所有的数据通过网络进行传输,造成不必要的浪费。同时如果数据量十分大,可能还会造成OutOfMemoryError。

  通过以上对比可以发现在进行大量数据的reduce操作时候建议使用reduceByKey。不仅可以提高速度,还是可以防止使用groupByKey造成的内存溢出问题。

  spark sql怎么取数据的差集

  spark2.0的了解

  rdd 怎么分区宽依赖和窄依赖

  spark streaming 读取kafka数据的两种方式

  这两种方式分别是:

  kafka的数据存在内存还是磁盘

  怎么解决kafka的数据丢失

  答案

  由于答案太多,我做了一个word文档,由于头条不能上传文件,需要答案可以加小编的qq交流群531629188

  在里面直接获取文档,也欢迎招聘者,找工作的来,提供一个更大的平台

  


猜你喜欢

转载自blog.51cto.com/13750742/2117650