大数据面试题——Spark面试题(八)
66、Spark中standalone模式特点,有哪些优点和缺点?
特点
1)standalone是master/slave架构,集群由Master与Worker节点组成,程序通过与Master节点交互申请资源,Worker节点启动Executor运行
2)standalone调度模式使用FIFO调度方式
3)无依赖任何其他资源管理系统,Master负责管理集群资源
优点
1)部署简单
2)不依赖其他资源管理系统
缺点
1)默认每个应用程序会独占所有可用节点的资源,当然可以通过spark.cores.max来决定一个应用可以申请的CPU cores个数
2)可能有单点故障,需要自己配置master HA
67、FIFO调度模式的基本原理、优点和缺点?
基本原理
按照先后顺序决定资源的使用,资源优先满足最先来的job。第一个job优先获取所有可用的资源,接下来第二个job再获取剩余资源。以此类推,如果第一个job没有占用所有的资源,那么第二个job还可以继续获取剩余资源,这样多个job可以并行运行,如果第一个job很大,占用所有资源,则第二job就需要等待,等到第一个job释放所有资源。
优点和缺点
1)适合长作业,不适合短作业
2)适合CPU繁忙型作业(计算时间长,相当于长作业),不利于IO繁忙型作业(计算时间短,相当于短作业)
68、FAIR调度模式的优点和缺点?
所有的任务拥有大致相当的优先级来共享集群资源,spark多以轮训的方式为任务分配资源,不管长任务还是端任务都可以获得资源,并且获得不错的响应时间,对于短任务,不会像FIFO那样等待较长时间了,通过参数spark.scheduler.mode 为FAIR指定。
69、 使用scala代码实现WordCount?
val conf = new SparkConf() val sc = new SparkContext(conf) val line = sc.textFile("xxxx.txt") line.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_). collect().foreach(println) sc.stop()
70、Spark RDD 和 MapReduce2的区别?
1)mr2只有2个阶段,数据需要大量访问磁盘,数据来源相对单一 ,spark RDD ,可以无数个阶段进行迭代计算,数据来源非常丰富,数据落地介质也非常丰富spark计算基于内存
2)MapReduce2需要频繁操作磁盘IO,需要大家明确的是如果是SparkRDD的话,你要知道每一种数据来源对应的是什么,RDD从数据源加载数据,将数据放到不同的partition针对这些partition中的数据进行迭代式计算计算完成之后,落地到不同的介质当中
72、Spark sql为什么比hive快呢?
计算引擎不一样,一个是spark计算模型,一个是mapreudce计算模型
72、spark为什么比Mapreduce快?快在哪里呢?
Spark更加快的主要原因有几点:
1)基于内存计算,减少低效的磁盘交互
2)高效的调度算法,基于DAG
3)容错机制Lingage,主要是DAG和Lianage,即使spark不使用内存技术,也大大快于mapreduce。
73、RDD的数据结构是怎么样的? 一个RDD对象,包含如下5个核心属性。
1)一个分区列表,每个分区里是RDD的部分数据(或称数据块)
2)一个依赖列表,存储依赖的其他RDD
3)一个名为compute的计算函数,用于计算RDD各分区的值
4)分区器(可选),用于键/值类型的RDD,比如某个RDD是按散列来分区
5)计算各分区时优先的位置列表(可选),比如从HDFS上的文件生成RDD时,RDD分区的位置优先选择数据所在的节点,这样可以避免数据移动带来的开销
74、RDD算子里操作一个外部map,比如往里面put数据,然后算子外再遍历map,会有什么问题吗?
频繁创建额外对象,容易oom
75、说说你对Hadoop生态的认识。
hadoop生态主要分为三大类型
1)分布式系统:HDFS,hbase
2)分布式计算引擎:Spark,MapReduce
3)周边工具:如zookeeper,pig,hive,oozie,sqoop,ranger,kafka等
76、hbase region多大会分区,spark读取hbase数据是如何划分partition的?
region超过了hbase.hregion.max.filesize这个参数配置的大小就会自动裂分,默认值是1G。 默认情况下,hbase有多少个region,Spark读取时就会有多少个partition