51Testing软件测试论坛
标题:
Spark大数据面试题
[打印本页]
作者:
老白的释然
时间:
2019-2-27 16:29
标题:
Spark大数据面试题
1\spark在什么场景比不上MapReduce?
Spark 在内存中处理数据,需要很大的内存容量。如果 Spark 与其它资源需求型服务一同运行在YARN 上,又或者数据块太大以至于不能完全读入内存,此时 Spark 的性能就会有很大的降低,此时Spark可能比不上MapReduce。当对数据的操作只是简单的ETL的时候,Spark比不上MapReduce。
2、spark sql和sql的区别?
没关系 语法类似而已
3、spark版本的含义,如spark-1.6.0.
1:主版本,主版本的更改往往意味着API的改变
6:次版本,次版本的更改往往意味着新特性的添加,有时也伴随着API的更改
0:末版本,末版本的更改网往往伴随着新特性的添加
注意:我们选择版本往往不建议选择末版本为0的版本,这个版本由于没有对新添加的特性进行bug的修复,会有很多的bug
4、spark产生背景及优势。
MapReduce编程的不便性:
1)繁杂:开发一个作业,既要写Map,又要写Reduce和驱动类。当需求变动要改变大量的代码
2)效率低:MapReduce基于进程,进程的启动和销毁要花费时间。
I/O频繁:网络I/O和磁盘I/O频繁
每个阶段都必须排序,但其实有些任务的排序是不必要的
3)不适合作迭代处理
4)只适合离线计算,不适合作实时处理
#spark基于线程,线程直接从线程池中获取即可。
#MapReduce也可以基于内存,但有一定限度。
很多框架都对spark做了兼容,使用起来很方便
5、RDD五大特性?
1、RDD是由一系列的分区组成。2、操作一个RDD实际上操作的是RDD的所有分区。3、RDD之间存在各种依赖关系。4、可选的特性,key-value型的RDD是通过hash进行分区。5、RDD的每一个分区在计算时会选择最佳的计算位置。
6、什么是RDD?
RDD产生的意义在于降低开发分布式应用程序的门槛和提高执行效率。RDD全称resilient distributed dataset(弹性分布式数据集),它是一个可以容错的不可变集合,集合中的元素可以进行并行化地处理,Spark是围绕RDDs的概念展开的。RDD可以通过有两种创建的方式,一种是通过已经存在的驱动程序中的集合进行创建,另一种是通引用外部存储系统中的数据集进行创建,这里的外部系统可以是像HDFS或HBase这样的共享文件系统,也可以是任何支持hadoop InputFormat的数据。
在源码中,RDD是一个具备泛型的可序列化的抽象类。具备泛型意味着RDD内部存储的数据类型不定,大多数类型的数据都可以存储在RDD之中。RDD是一个抽象类则意味着RDD不能直接使用,我们使用的时候通常使用的是它的子类,如HadoopRDD,BlockRDD,JdbcRDD,MapPartitionsRDD,CheckpointRDD等。
在spark的官网,介绍了RDD的五大特性:1、RDD是由一系列的分区组成。2、操作一个RDD实际上操作的是RDD的所有分区。3、RDD之间存在各种依赖关系。4、可选的特性,key-value型的RDD是通过hash进行分区。5、RDD的每一个分区在计算时会选择最佳的计算位置。
7、spark能都取代hadoop?
Spark是一个计算框架,它没有自己的存储,它的存储还得借助于HDFS,所以说Spark不能取代Hadoop,要取代也是取代MapReduce
8、Spark的特点?
Apache Spark 是一个快速的处理大规模数据的通用工具。它是一个基于内存计算框架。它有以下的四个特点:
1)快速:基于内存的计算比MapReduce快100倍,基于磁盘快10倍。
2)易用:编写一个spark的应用程序可以使用 Java, Scala, Python, R,这就使得我们的开发非常地灵活。并且,对比于MapReduce,spark内置了80多个高级操作,这使得开发十分高效和简单。
3)运行范围广:spark可以运行在local、yarn、mesos、standalone、kubernetes等多种平台之上。它可以访问诸如HDFS, Cassandra, HBase, S3等多种多样的数据源。
4)通用:spark提供了SparkSQL、SparkStreaming、GraphX、MLlib等一系列的分析工具。
9、spark的主要特性在哪个版本引入。
外部数据源 1.2
DataFrame 1.3
动态资源调度 1.5
Dataset 1.6
10、大数据流式处理框架对比:Storm vs Spark Streaming
a.Spark Streaming最低可在0.5秒~2秒内做一次处理,而Storm最快可达到0.1秒,在实时性和容错性上,Spark Streaming不如Strom.
b.Spark Streaming的集成性优于Storm,可以通过RDD无缝对接Spark上的所有组件,还可以很容易的与kafka,flume等分布式框架进行集成。
c.在数据吞吐量上,Spark Streaming要远远优于Storm。
综上所诉,Spark Streaming更适用于大数据流式处理。
11、cache()和persist()方法的区别?
cache()在源码底层调用的是persist().
12、spark中的join是宽依赖还是债依赖
13、Spark中的map和reduce和mapreduce有什么关系?
14、repartition和coalesce区别?
15、DataFrame vs RDD vs DataSet
a.基于RDD的编程,不同语言性能是不一样的,而DataFrame是一样的,因为底层会有一个优化器先将代码进行优化。
b.对于RDD,暴露给执行引擎的信息只有数据的类型,如RDD[Student]装的是Student,而对于DataFrame,对于外部可见的信息有字段类型,字段key,字段value等。
c.RDD是一个数组,DataFrame是一个列式表。
16、自定义外部数据源有哪几个类,作用是?
17、ETL是否有Reduce?
18、大数据领域的常用端口?
Spark UI:4040/4041/4042.。。。。。
Spark Standalone UI:8080
Spak history-serrver UI:18080
19、Spark1.x和2.x的区别。
在${SPARK_HOME}/jars目录下有许多jar包,而在spark1.0版本中只有一个大的jar包
20、SparkContext?
目前在一个JVM进程中可以创建多个SparkContext,但是只能有一个active级别的。如果你需要创建一个新的SparkContext实例,必须先调用stop方法停掉当前active级别的SparkContext实例。
初始化一个SparkContext之前你需要构建一个SparkConf对象,初始化后,就可以使用SparkContext对象所包含的各种方法来创建和操作RDD和共享变量,Spark shell会自动初始化一个SparkContext。
21、RDD算子?
当你对一个RDD进行转换时,只要触发action操作就可能会引起RDD的重算,RDD的重算机制使得当某个RDD数据丢失重算可以恢复该RDD。
22、Spark的核心配置文件有哪些?hadoop的呢?Fulme和kafka呢?
spark-defaults.conf、spark-env.sh
23、日志输出级别?
FATAL 0
ERROR 3 为严重错误 主要是程序的错误
WARN 4 为一般警告,比如session丢失
INFO 6 为一般要显示的信息,比如登录登出
DEBUG 7 为程序的调试信息
24、
天机解密:Standalone模式下启动Spark集群(也就是启动Master和Worker)其实启动的是资源管理器,真正作业计算的时候和集群资源管理器没有任何关系,所以Spark的Job真正执行作业的时候不是运行在我们启动的Spark集群中的,而是运行在一个个JVM中的,只要在JVM所在的集群上安装配置了Spark即可!
25、宽依赖和窄依赖?
窄依赖是指父RDD的一个分区至多被子RDD的分区使用一次。(与数据规模无关)
宽依赖是指父RDD的一个分区至少被子RDD的分区使用两次。(与数据规模有关)
窄依赖的函数有:map, filter, union, join(父RDD是hash-partitioned ), mapPartitions, mapValues
宽依赖的函数有:xxxByKey, join(父RDD不是hash-partitioned ), partitionBy.
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2