大数据工程师常见4大面试问题

大数据工程师面试应该注意什么呢?常见的面试问题有哪些呢?下面科多大数据老师就带领着大家一起去看看,面试常见的几个问题。对于这些问题我们应该如何完美的解答呢。


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

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

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

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

2、讲述一下hdfs上传文件的流程。

答:这里描述的 是一个256M的文件上传过程

① 由客户端 向 NameNode节点节点 发出请求;

②NameNode 向Client返回可以可以存数据的 DataNode 这里遵循机架感应原则;

③客户端 首先 根据返回的信息 先将 文件分块(Hadoop2.X版本 每一个block为 128M 而之前的版本为 64M;

④然后通过那么Node返回的DataNode信息 直接发送给DataNode 并且是 流式写入同时会复制到其他两台机器;

⑤dataNode 向 Client通信 表示已经传完 数据块 同时向NameNode报告

⑥依照上面(④到⑤)的原理将 所有的数据块都上传结束  向 NameNode 报告 表明 已经传完所有的数据块 。

3、了解zookeeper吗?介绍一下它,它的选举机制和集群的搭建。

答:那当然是熟悉啦,ZooKeeper 是一个开源的分布式协调服务,是 Google Chubby 的开源实现。分布式应用程序可以基于 ZooKeeper

  实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。我们公司使用的flume集群,Kafka集群等等,都离不开ZooKeeper呀。每个节点上我们都要搭建ZooKeeper服务。首先我们要在每台pc上配置zookeeper环境变量,在cd到zookeeper下的conf文件夹下在zoo_simjle.cfg文件中添加datadir路径,再到zookeeper下新建data文件夹,创建myid,在文件里添加上server的ip地址。在启动zkserver.sh

  start便ok了。

4、spark streming在实时处理时会发生什么故障,如何停止,解决。

答:和Kafka整合时消息无序:

修改Kafka的ack参数,当ack=1时,master确认收到消息就算投递成功。ack=0时,不需要收到消息便算成功,高效不准确。sck=all,master和server都要受到消息才算成功,准确不高效。

StreamingContext.stop会把关联的SparkContext对象也停止,如果不想把SparkContext对象也停止的话可以把StremingContext.stop的可选参数stopSparkContext设为flase。一个SparkContext对象可以和多个streamingcontext对象关联。只要对前一个stremingcontext.stop(stopsparkcontext=false),然后再创建新的stremingcontext对象就可以了。

好了以上就是大数据工程师面试遇见的常见问题。科多大数据老师的分享有没有帮助到大家呢?更多大数据相关疑问,请搜索科多大数据,联系科多老师给你解答哦!

你可能感兴趣的:(大数据工程师常见4大面试问题)