• 发文
  • 评论
  • 微博
  • 空间
  • 微信

大数据面试真题,来试试你有几斤几两(10)——Spark

科多大数据 2018-12-07 17:16 发文

上一期科妹为大家带来的是Java的轻量级开源框架Spring,这一期呢,给大家讲讲大数据的框架——Spark。


(共30分,每题3分)

1.下面哪个操作肯定是宽依赖

A.map

B.flatMap

C.reduceByKey

D.sample 

2.下面哪个操作是窄依赖

A.join

B.filter 

C.group

D.sort 

3.Spark 支持的分布式部署方式中哪个是错误的

A. standalone

B. spark on mesos 

C. spark on YARN

D. Spark on local 

4.下面哪个不是 RDD 的特点

A.可分区 

B.可序列化 

C.可修改 

D.可持久化

5.Spark Job 默认的调度模式

A.FIFO

B.FAIR   

C.无

D.运行时指定

6.Spark 1.4 版本的最大变化

A.spark sql Release 版本

B.引入 SparkR 

C.DataFrame

D.支持动态资源分配

7.下面哪个端口不是 spark 自带服务的端口

A.8080

B.4040

C.8090

D.18080 

8.Spark 的四大组件下面哪个不是

A.Spark Streaming

B.Mlib 

C.Graphx

D.Spark R 

9.DataFrame 和 RDD 最大的区别

A.科学统计支持

B.多了schema 

C.存储方式不一样

D.外部数据源支持

10.Task 运行在下面哪个选项中Executor 上的工作单元

A.Driver program

B.spark master 

C.worker node

D.Cluster manager 



答案解析:

1.C,窄依赖的函数有:map, filter, union, join(父RDD是hash-partitioned ), mapPartitions, mapValues    宽依赖的函数有: groupByKey, reduceByKey,sortByKey,join(父RDD不是hash-partitioned ), partitionBy。

2.B,同上。

3.D,Local就是分布式的方式了。

4.C。

5.A,Spark中的调度模式主要有两种:FIFO和FAIR。

6.B,Spark 1.4新特性包括:正式引入SparkR;窗口函数和DataFrame的其他提升;可视化和监控工具;RestAPI。

7.C,Spark常用端口:

                         7077:spark 的master与worker进行通讯的端口  

                                   standalone集群提交Application的端口    

                         8080 : master的WEB UI端口  资源调度     

                         8081 : worker的WEB UI 端口  资源调度    

                         4040 : Driver的WEB UI 端口  任务调度     

                         18080:Spark History Server的WEB UI 端口

8.D,Spark四大组件包括:Spark Streaming、Spark SQL、Spark MLlib和Spark GraphX。  

9.B,DataFrame更像是一个二维表格,在这个二维表格里面,我们是知道每一列的名称。ACD都不是区别。  

10.C。


(共70分,每题7分)

1.常规的容错方式有哪几种类型?

2.spark有哪些组件?

3.spark-submit的时候如何引入外部jar包

4.为什么Spark Application 在没有获得足够的资源,job就开始执行了,可能会导致什么什么问题发生?

5.Spark程序执行,有时候默认为什么会产生很多task,怎么修改默认task执行个数?

6.rdd有几种操作类型?

7.Spark中数据的位置是被谁管理的?

8.Spark为什么比mapreduce快?

9.spark的有几种部署模式,每种模式特点?

10.driver的功能是什么?



答案解析:

1.1).数据检查点,会发生拷贝,浪费资源。     

   2).记录数据的更新,每次更新都会记录下来,比较复杂且比较消耗性能。

2.主要有如下组件:1)master:管理集群和节点,不参与计算。    

                         2)worker:计算节点,进程本身不参与计算,和master汇报。    

                         3)Driver:运行程序的main方法,创建spark context对象。  

                         4)spark context:控制整个application的生命周期,包括dagsheduler和task scheduler等组件。     

                         5)client:用户提交程序的入口。  

3.在通过spark-submit提交任务时,可以通过添加配置参数来指定–driver-class-path 外部jar包,–jars 外部jar包。

4.会导致执行该job时候集群资源不足,导致执行job结束也没有分配足够的资源,分配了部分Executor,该job就开始执行task,应该是task的调度线程和Executor资源申请是异步的;如果想等待申请完所有的资源再执行job的:需要将spark.scheduler.maxRegisteredResourcesWaitingTime设置的很大;spark.scheduler.minRegisteredResourcesRatio 设置为1,但是应该结合实际考虑否则很容易出现长时间分配不到资源,job一直不能运行的情况。

5.1)因为输入数据有很多task,尤其是有很多小文件的时候,有多少个输入block就会有多少个task启动;    

   2)spark中有partition的概念,每个partition都会对应一个task,task越多,在处理大规模数据的时候,就会越有效率。不过task并不是越多越好,如果平时测试,或者数据量没有那么大,则没有必要task数量太多;   

   3)参数可以通过spark_home/conf/spark-default.conf配置文件设置:     

      spark.sql.shuffle.partitions50          

         spark.default.parallelism 10        

第一个是针对sparksql的task数量,第二个是非spark sql程序设置生效

6.1)transformation,rdd由一种转为另一种rdd。     

   2)action。   

   3)cronroller,crontroller是控制算子,cache,persist,对性能和效率的有很好的支持三种类型。

7.每个数据分片都对应具体物理位置,数据的位置是被blockManager,无论数据是在磁盘,内存还是tacyan,都是由blockManager管理。

8.1)基于内存计算,减少低效的磁盘交互。    

   2)高效的调度算法,基于DAG。  

   3)容错机制Linage,精华部分就是DAG和Lingae。

9.1) 本地模式    

   2) standalone 模式   

   3)spark on yarn 模式   

   4) mesos模式

10.1)一个Spark作业运行时包括一个Driver进程,也是作业的主进程,具有main函数,并且有SparkContext的实例,是程序的人口点;

    2)功能:负责向集群申请资源,向master注册信息,负责了作业的调度,,负责作业的解析、生成Stage并调度Task到Executor上。包括DAGScheduler,TaskScheduler。  


更多大数据相关面试真题,欢迎关注微信公众号成都科多大数据

声明:本文为OFweek维科号作者发布,不代表OFweek维科号立场。如有侵权或其他问题,请及时联系我们举报。
2
评论

评论

    相关阅读

    暂无数据

    科多大数据

    大数据、云计算、区块链、人工智能...

    举报文章问题

    ×
    • 营销广告
    • 重复、旧闻
    • 格式问题
    • 低俗
    • 标题夸张
    • 与事实不符
    • 疑似抄袭
    • 我有话要说
    确定 取消

    举报评论问题

    ×
    • 淫秽色情
    • 营销广告
    • 恶意攻击谩骂
    • 我要吐槽
    确定 取消

    用户登录×

    请输入用户名/手机/邮箱

    请输入密码