在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → Spark面试2000题(1~6期 外加60题)

Spark面试2000题(1~6期 外加60题)

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:11.64M
  • 下载次数:10
  • 浏览次数:148
  • 发布时间:2020-07-14
  • 实例类别:一般编程问题
  • 发 布 人:robot666
  • 文件格式:.pdf
  • 所需积分:2
 

实例介绍

【实例简介】
Spark面试2000题(1~6期 外加60题) Spark面试2000题(1~6期 外加60题)
2018/6/5 spark相关的面试题跟答案,带着问題学习效果更佳哟。)- about云开发活到老学到老- Powered by Discuz! 答:用户在 client端提交作业后,会由 Driver运行main方法并创建 spark context上下文 执行add算子,形成dag图输入 dagscheduler,按照add之间的依赖关系划分 stage输入 task scheduler。 task scheduler会将 stage划分为 task set分发到各个节点的 executor中执行 16、 spark的优化怎么做? 答: spark调优比较复杂,但是大体可以分为三个方面来进行,1)平台层面的啁优:防止不必要的jar包分发,提高数据的本地 性,选择高效的存储棓式如parαquet,2)应用程序层面的调优:过滮操作符的优化降低过多小任务,降低单条记孓的资源开销, 处理数据倾斜,复用RDD进行缓存,作业并行化执行等等,3)M层面的调优:设置合适的资源量,设置合理的丿M,启用高效 的序列化方法如kyro,增大 off head内存等等 17简要描述 Spark分布式集群搭建的步骤 1)准备linu环境,没置集群搭建账号和用户组,设置ssh,关闭防火墙,关闭 selinux,配置host, hostname 2)配置jak到环境变量 3)搭建 hadoop集群,如果要做 master ha,需要搭建 zookeeper集群 修改hds- site.xml, hadoop env.sh,yarn-site.xm, slaves等配置文件 4)启动 hadoop集群,启动前要格式化 namenode 5)配置 spark集群,修改 spark-enw.xml, slaves等配置文件,拷贝 hadoop柞关配置到 spark cont目录下 6)启动 spark集群 18什么是RDD宽依赖和容依赖? RDD和它依赖的 parent RDD(s)的关系有两种不同的类型,即窄依赖( narrow dependency)和依赖 wide dependency)。 1)窄依赖指的是每一个 parent RDD的 Partition最多被子RDD的一个 Partition使用 2)宽依赖指的是多个子RDD的 Partition会依赖同一个 parent RDD的 Partition 195park- submit的时候如何引入外部ja包 方法一: spark- submit -jars 根据 spark官网,在提交任务的时候指定-jars,用逗号分开。这样做的缺点是每次都定ja包,如粜jar包少的话可以这么做,但 是如果多的话会很麻烦 APY: spark-submit--master yarn-client--jars *** jar, ***. jar 方法二: extra Path 提交时在 spark-defaulte设定参数,将所有需要的ar包考到个文件里,然后在参数中指定该目录就可以了,较上一个方便很 多: spark executor. extra Class Path=/home/hadoop/wzq workspace/lib/ spark driver. extra Class Path=/home/hadoop/wzq works pace/lib/* 需要注意的是你要在所有可能运行spak任务的机器上保证该目录存在,并且将ja包考到所有机器上。这样做的好处是提交代码的 时候不用再写一长串jar了,缺点是要把所有的jar包都拷一遍 20 cache和 resist的区别 答:1) cache和 persist都是用于将一个RDD进行缓存的,这样在之后使用的过程中就不需要重新讠算了,可以大大节省程序运行 时间;2) cache只有一个默认的缀存级别 MEMORY ONLY, cache调用了 persist,而 persist可以根据情况设置其它的线存级 别;3) executor行的候,默认60%做 cache,40%做task操作, persist最根本的函数,最底层的函数 选择题 1. Spark的四大组件下面哪个不是(D) A Spark Streaming B Mlib C Graphx DSpark R 2下面哪个端口不是 spark自带服务的端口(C) A8080B4040C.8090D.18080 备注:8080: spark集群webu端口,4040: sparkjob监控端口,18080: jobhistory端口 3 spark14版本的最大变化(B) A spark sql Release版本B.3入 Spark R C DataFrame D支持动态资源分配 4. Spark Job默认的调廈模式(A) A FIFO B FAIR C无D运行时指定 5哪个不是本地模式运行的个条件(D) A spark. local Execution. enabled=true B显式指定本地运行 C finalStage无父 Stage D partition默认值 6下面哪个不是RDD的特点(C) A.可分区B可序列化C可修改D可持久化 7.关于广播变量,下面哪个是错误的(D) A任何函数调用B是只读的 C存储在各个节点D存储在磁盘或HDFS 8关于累加器,下面哪个是错误的(D) A支持加法B支持数值类型 C可并行D不支持自定义类型 9 Spark支持的分布式音署方式中哪个是错误的(D A standalone B spark on mesos C spark on YARN D Spark on local http://www.aboutyun.com/forum.php?mod=viewthread&action=printable&tid=24246 3/24 2018/6/5 spark相关的面试题跟答案,带着问题学习效果更佳哟。)- about云开发活到老学到老- Powered by Discuz! 10. Stage的Task的数量由什么决定(A) A Partition B Job C Stage D TaskScheduler 11.下面哪个操作是窄依赖(B) A join B filter C group D sort 12.下面哪个操作肯定是宽依赖(C A map B flatMap C reduce Bykey D sample 13. spark的 master和 worker通过什么方式进行通信的?(D) AhttpBnioCnettyDAkka 14默认的存储级别(A A MEMORY ONLY B MEMORY ONLY SER CMEMORY AND DISK D MEMORY AND DISK SER 15 spark deploy. recoveryMode不支持那种(D) A ZooKeeper B File System D NONE D Hadoop 16下列哪个不是RDD的缓存方法C A persist B Cacheo C Memory 17.Task运行在下来哪里个选项中 Executor上的工作单元(C) A Driver program B spark master C worker node d Cluster manager 18hive的元数据存储在 derby和 MySQL中有什么区别(B A没区别B多会话 C支持网络环境D数据库的区别 19 DataFrame和RDD最大的区别(B) A科学统计支持B多了 schema C存储方式不一样D外部数据源支持 20. Master的 ElectedLeader事件后做了哪些操作(D) A.通知 driver B通知 worker C注册 application D直接ALVE 【 Spark面试2000题41-70】 Spark core面试篇02 这批 Spark面试题由志愿者 Taffy(某高校硏究生)提供,非常感谢志愿者的优质题集,大家如果有好的面试题可以私信给群主 (可加入志扆者群QQ群:233864572)。为确保集质量,志鳥者贡献出来的遨集,群主及各位梅峰谷平台组成员会审核,个别 地方会略加修改,还请忐愿者理解。 、面试30题 1 cache后面能不能接其他算子它是不是 action操作? 答: cache可以接其他算子,但是接了算子之后,起不到缓存应有的效果,因为会重新触发 cache cache不是 action操作 2 reduce Bykey是不是 action? 答:不是,很多人都会以为是 action, reduce rdd是 action 3.数据本地性是在哪个环节确定的? 具体的task运行在那他机器上,dag划分5tage的时候确定的 4RDD的弹性表现在哪几点? 1)自动的进行内存和磁盘的存储切换; 2)基于 Lingage的高效容错 3)task如果失败会自动进行特定次数的重试 4) stage如果失败会自动进行特定次数的重试,而只会计算失败的分片 5) checkpoint和 persist,数据计算之后持久化缓存 6)数据调度弹性, DAG TASK调度和资源无关 7)数据分片的高度弹性,a分片很多碎片可以合并成大的,b.par 5常规的容错方式有哪几种类型? 1)数据检查点会发生拷贝,浪费资源 2)记录数据的更新,每次更新都会记录下来,比较复杂且比较消耗性能 6RDD通过 Linage(记录数据更新)的方式为何很高效? 1)lazy记录了数捷的来源,RDD是不可变的,且是azy级别的,且rDD http://www.aboutyun.com/forum.php?mod=viewthread&action=printable&tid=24246 4/24 2018/6/5 spark相关的面试题跟答案,带着问題学习效果更佳哟。)- about云开发活到老学到老- Powered by Discuz! 之间构成了链条,lazy是弹性的基石。由于RDD不可变,所以每次操作就 产生新的rd,不存在全晑修改的问题,控制难度下降,所有有计算链条 将复杂计算链条存储下来,计算的时候从后往前回溯 900步是上一个tage的结束,要么就 checkpoint 2)记录原数据,是每次修改都记录,代价很大 如果修改一个集合,代价就很小,官方说rdd是 粗粒度的操作,是为了效率,为了简化,每次都是 操作数据集合,写或者修改操作,都是基于集合的 rdd的写操作是粗粒度的,rdd的读操作既可以是粗粒度的 也可以是细粒度,读可以读其中的一条条的记录 3)简化复杂度,是高效率的一方面,写的粗粒度限制了使用场景 如网络爬虫,现实世界中,大多数写是粗粒度的场景 7RDD有哪些缺陷? 1)不支持细粒度的写和更新操作(如网络爬虫), spark写数据是粗粒度的 所谓粗粒度,就是批量写入数据,为了提高效率。但足读数据是细粒度的也就是 说可以一条条的读 2)不支持增量迭代计算,Fink支持 8说一说 Spark程序编写的一般步骤? 答:初始化,资源,数据源,并行化,rdd转化, action算子打印输出结果或者也可以存至相应的数据存储介质,具体的可看下 图 file://:%E5%AE%89%E8%A3%85%E8%BD%AF%E4%BB%B6%E6%9C%89%E9%81%93%E7%AC%94%E8%AE%B0%E6%96‰87%E 9. Spark有哪两种算子? 答: Transformation(转化)算子和 Action(执行)算子 10. Spark提交你的jar包时所用的命令是什么? 答: spark- submit 11. Spark有哪些聚合类的算子我们应该尽量避免什么类型的算子? 答:在我们的开发过程中,能避免则尽可能避免使用 reduce Bykey、join、 distinct、 repartition等会进行 shuffle的算子,尽量使 用map类的 shuffle算子。这样的话,没有 shuffle操作或者仅有较少 shuffle操作的 Spark作业,可以大大减少性能开销。 12.你所理解的 Spark的 shuffle过程? 答:从下面三点去展开 1)shul过程的划分 2) shuffle的中间结果如何存储 3) shuffle的数据如何拉取过来 可以参考这篇博文:http://www.cnblogs.com/jxhd1/p/6528540.html 13.你如何从 Kafka中获取数据? 1)基于 Receiver的方式 这种方式使用 Receive来获取数。 Receiver是使用 Kafka的高层次 Consumer apl实现的。 recelver从 Kafka中获取的数据都是存储在 Spark Executor的内存 中的,然后 Spark Streaming启动的ob会去处理那些数据。 2)基于 Direct的方式 这种新的不基于 Receiver的直接方式,是在 Spark1.3肀引入的,从而能够确保更加健壮的机制。替代掉使用Receⅳer孓接攻数据后,这种方式会期性地查询 Kaka,来获得每个opic+ partition的最新的ose,从而定义每个hach的ofe的范围。当处理数据的ob启动时,就会使用Kaka的筒单 onsumer ap来获 取Kafκ指定 offset范围的数据 14.对于 Spark中的数据倾斜问题你有什么好的方案? 1)前提是定位数据倾斜,是OOM了,还是仼务执行缓慢,看日志,看Webl 2)解决方法,有多个方面 避免不必要的 Shuffle,如使用广播小表的方式,将 reduce- side- join提升为map- side- join 分拆发生数据倾斜的记录,分成几个部分进行,然后合并join后的结果 改变并行度,可能并行度太少了,导致个别task数据压力大 两阶段聚合,先局部聚合,再全局聚合 自定义 partitioner,分散key的分布,使其更加均匀 详细解决方案参考博文《Spak数据饭斜优化方法》 15.RDD创建有哪几种方式? 1)使用程序中的集合创建rdd 2.使用本地文件系统创建rdd 3)使用hds创建rdd 4.基于数据库db创建rdd 5)基于Nosq创建rdd,如 hbase 6)基于S3创建rdd, 7)基于数据流,如 socket创建rdd 如果只回答了前面三种,是不够的,只能说明你的水平还是入门级的,实战过程中有很多种创建方式 16 Spark并行度怎么设置比较合适 答: spark并行度,每个core承载2~4个 partition如,32个core,那么64~128之间的并行度,也就是 设置64~128个 partion,并行读和改据规模无关,只和内存使用量和cpu使用 时间有关 17 Spark中数据的位置是被谁管理的? 答:每个数据分片都对应具体物理位置,数据的位置是被 block Manager,无论 数据是在磁盘,内存还是 tayan,都是由 block Manager管理 18 Spark的数据本地性有哪几种? 答: Spark中的数据本地性有三种 a Process local是指读取缓存在本地节点的数据 b NODE LOCAL是指读取本地节点硬盘数据 CANY是指读取丰本地节点数据 通常读取数据PR○ CESS LOCAL> NODE LOCAL>ANY,尽量使数据以 PROCESS LOCAL或 NODE LOCAL方式读取。其中 PROCESS LOCAI还和 cache有关,如果RDD经常用的话将该 RDD cache到内存中,注意,由于 cache是lazy的,所以必须通过 个 action的触发,才能真正的将该 RDD cache到內存中 http://www.aboutyun.com/forum.php?mod=viewthread&action=printable&tid=24246 5/24 2018/6/5 spak相关的面试题跟答案,带着问题学习效果更佳哟。)- about云开发活到老学到老- Powered by Discuz! 19rdd有几种操作类型? 1) transformation,rd由一种转为另一种rdd 2)action 3) conroller, controller,是控制算子 cache, persist,对性能和效率的有很好的支持 三种类型,不要回答只有2中操作 19rdd有几种操作类型? 1) transformation,rdd由一种转为另一种rd 3) conroller, controller,是控制算子 cache, persist,对性能和效率的有很好的支持 三种类型,不要回答只有2中操作 20. Spark如何处理不能被序列化的对象? 将不能序列化的内容封装成 object 21c。llec功能是什么,其底层是怎么实现的? 答: drive通过 collect把集群中各个节点的内容收集过来汇总成结果,col返回结果是Aray类型的,clec把各个节点上的数 据抓过来,抓讨来数据是Ara型, collecti对Aray抓过来的结果进行合并,合并后Aray中只有一个元素,是 tuple类型(Kv类型 的)的。 22 Saeki程序执行,有时候默认为什么会产生很多task,怎么修改默认task执行个数? 答:1)因为输入数据有很多task,尤其是有很多小文件的时候,有多少个输入 bock就会有多少个task启动;2)spak中有 partition的概念,每ˆ partition都会对应一个task,task越多,在处理大规模数据的 时候,就会越有效率。不过task并不是越多越好,如果平时测试,或者数据量没有那么大,则没有必要task数量太多。3)参数可 以通过 spark home/conf/ spark- default con配置文件设置 spark. sql shuffle. partitions 50 spark. default parallelism 10 第一个是针对 park sql的task数量 第二个是非 spark sq程序设置生效 23为什么 Spark Application在没有获得足够的資源,job就开始执行了,可能会导致什么什么问题发生? 答:会导致抹行该job时候集群资源不足,导致执行jb结束也没有分配足够的资源,分配了部分 Executor,该ob就开始执行 task,应该是task的馮度线程和 Executor资源中请是异步的;如果想等待申请完所有的资源再执行job的:需要将 spark scheduler. maxRegisteredResources Waiting Time设置的很大; spark scheduler. minRegistered ResourcesRatio设置为 1,但是应该结合实际考虑 否则很容易出现长时间分配不到资源,job-直不能运行的情况。 24map与 flatmAn的区别 map:对RDD每个元素转换,文件中的每一行数据返回一个数组对象 flatMap:对RDD每个元素转换,然后再扉平化 将所有的对象合并为一个对象,文件中的所有行数据仅返回个数组 对象,会抛弃值为nu的值 25列举你常用的 action? collect, reduce, take, count saveAsTextFileg 26 Spark为什么要持久化,一般什么场景下要进行 persist操作? 为什么要进行持久化? spak所有复杂一点的算法都会有 persist身影 spark默认数据放在内存, spark很多内容都是放在内存的,非常适合高速迭代, 1000个步骤 只有第—个输入数据,中间不产生临时数据,但分布式系统风险很高,所以容易出错,就要容铓,rdd出铓或者分片可以根据血统 算出来,如宋没有对父rd进行 persist或者 cache的化,就需要重头做 以下场景会使用 persist 1)某个步骤计算非常耗时,需要进行 persist持久化 2)计算链条非常长,重新恢复要算很多步骤,很好使, persist 3) checkpoint在的rd要持久化 gescheckpointE时单独触发一个ob,需要重算一遍, checkpoin前 lazy级别,框架发现有 checkpoint,che 要持久化,写个rd, cache或者 rdd persist,将结果保存起来,再写 checkpoint操作,这样抹行起来会非常快,不需要重新计算 rdd链条了。 checkpoint之前定会进行 persist. 4) shuffle之后为什么要 persist,, shuffle要进性网络传输,风险很大,数据丢失重来,恢复代价很大 5)shu"le之前进行 persist,框架默认将数据持久化到磁盘,这个是框架自动做的 27为什么要进行序列化 序列化可以减少数据的体积,减少存储空间,高效存储和传输数据,不好的是使用的时候要反序列化,非常消耗CP∪ 28介绍一下join操作优化经验? 答:join其实常见的就分为两类; map-side join和 reduce-side join。当大表和小表join时,用map- side join能显著提高效 率。将多份数据进行关联是数据处理过程中非常普遍的用法,不过在分布式计算系统中,这个问题往往会变的非常麻烦,因为框架 提供的join操作一般会将所有数据根据key发送到所有的 reduce分区中去,也就是 shuffle的过程。造成大量的网络以及磁盘 IO消耗,运行效率极其低下,这个过程一般被称为 reduce-side-join。如果其中有张表较小的话,我们则可以自己实现在map端 实现数据关联,跳过大量数据进行shuf'e的过程,运行时间得到大量缩短,棂据不同数据可能会有几倍到数十倍的性能提升 备注:这个题目面试中非常非常大概率见到,务必搜索相关资料掌握,这里抛砖引玉。 29介绍一下 cogroup rdd实现原理,你在什么场景下用过这个rdd? 答: cogroup的函数实现这个实现根据两个要进行合并的两个RDD操作生成一个 CoGroupedRDD的实例这个RDD的返回结果是 把相同的key牛两个RDD分别进行合并操作最后返回的RDD的va|ue是一个Pai的实例这个实例包含两个 Iterable的值第一个值表 示的是RDD1中相同KEY的值第二个值表示的是RDD2中相同key的值由于做 cogroup的操作需要通过 partitioner进行重新分区的 操作,因此执行这个流程时需要执行一次 shuffle的操作(如果要进行合并的两个RDD的都已经是 shuffle后的rdd,同时他们对应的 partitioner相司时就不需要执行 shuffle 场景:表关联查询 30下面这段代码输出结果是什么? def joinRdd(sc: Spark Context)( val name= Array( Tuple(1, "spark"). Tuple 2(2, "tachyon"), http://www.aboutyun.com/forum.php?mod=viewthread&action=printable&tid=24246 6/24 2018/6/5 spark相关的面试题跟答案,带着问题学习效果更佳哟。)- about云开发活到老学到老- Powered by Discuz! Tuple2(3, hadoop") val score= Array( Tuple2(1,100) Tuple 2(2, 90). Tuple(3, 80) val namerdd=sc parallelize(name ); val scorerdd=sc parallelize(score) val result namerdd, join(scorerdd result.collect foreach(println); 答案 (1,( Spark,100) (2, (tachyon, 90)) 3.(hadoop, 80) 作者: wangxlaoJlan时间:2018-4-310:18 【Spak面试2000题71-100】 Spark core面试箱03 Spark Core是spak的基石,有很多知识点,面试题集的知识点比较跳莰和分散,建议系统学习了Sρark知识再看面试题集。今天 继续放送最新整理和设计的《sρark面试2000题》题集,仅供参考学习。本爚博文属于梅峰谷原创,转载请注明出处,如果您觉得 对您有帮助,请不要吝啬点,你的,是忘愿者们坚持的动力,是早日做出2000道高质量 Spark面试题的动力,如有不准确的地 方,请留言说明。 面试30题第71-100题) 1. Spark使用 parquet文件存储格式能带来哪些好处? 1〕如果说HDFS是大数据时代分布式文件系统首选标准,那么 parquet则是整个大数据时代文件存储格式实时首选标准 2)速度更快:从使用 spark sql操作普通文件CSv和 parquet文件速度对比上看,绝大多数情况 会比使用csν等普通文件速度提升10倍左右,在垡普通文件系统无法在 spark上成功运行的情况 下,使用 parquet很多时候可以成功运行 3) parquet的压缩技术非常稳定出色,在 spark sql中对压缩技术的处理可佾无法正常的完成工作 例如会号致 lost task, lost executor)但是此时如果使用 parquet就可以正常的完成 4)极大的减少磁盘o通常情况下能够减少75%的存储空间,由此可以极大的減少 spark sq处理 数据的时候的数据输入内容,尤其是在 spark16X中有个下推过滤器在一些情况下可以极大的 减少磁盘的O和大存的占用,(下推过滤器) 5) spark1.6 X Parquet方式极人的提升了扫描的吞吐量,极人提高了数据的查找逴度 spark1.6和 spark1.5×相比而言,提升了大约1 倍的速度,在$ak16中,操作paue时恢p也进行了极大的优化,有效的降低了cQ达 6)采用 parquet可以极大的优化 spark的调度和执行。我们测试 spark如果用 parquet可以有效的减少 stage的执行消耗,同时可以 优化执行路径 2 Executor之间如何共享数据? 答:基于hdfs或者基于 tachyon 3 Spark累加器有哪些特点 1)累加器在全局唯一的,只增不减,记录全局集样的唯一状态 2)在eXe中修改它,在 driver读取 3) executor级别共亨的,广播变量是task级别的共亨 两个 application不可以共享累加器,但是同一个app不同的ob可以共享 4如何在一个不确定的数据规模的范围内进行排序? 为了提高效率,要划分划分,划分的范围并且是有序的 要么有序,要么降序 水塘抽样:目的是从一个集合中选取,集合非常答,适合内存 无法容纳数据的时候使用 从N中抽取出K个,N是随机数 5 spark hash Partitioner的端是什么? 答 HashPartitioner分区的原理很简单,对于给定的key,计算其 hash Cade,并賒于分区的个数取余,如果余数小于0.则用余数 分区的个数,最后返回的值就是这个key所属的分区D;弊端是数据不均匀,容易导致数据倾斜,极端情况下某几个分区会拥有 rdd的所有数据 6 RangePartitioner分区的原理? 答 Rangepartitioner分区则尽量保证每个分区中数据量的均匀,而且分区与分区之间是有序的,也就是说一个分区中的元素肯定 都是比另一个分区内的元素小或者大;但是分区内的元素是不能保证顺序的。简单的说就是将一定范围内的数映射到某一个分区 内。其原理是水塘抽样。可以参考这篇博文 https://www.iteblog.com/archives/1522.html 7介绍 parition和bock有什么关联关系? 答:1)hds中的 block是分布式存储的最小单元,等分,可设置冗余,这样设计有一部分磁盘空间的浪费,但是整齐的 block大 小,便于快速找到、读取对应的内容;2) Spark中的 partion是弹性分布式数据集RDD的最小单元,RDD是由分布在各个节点上的 partion组成的。 partion是指的spak在计算讨程中,生成的数据在计算空间内最小单元,同一份数据(RDD)的 partion大小不 数量不定,是根据 application里的算子和最初读入的数据分块数量决定;3) block位于存储空间、 partion位于计算空间 block的大小是固定的、 partion大小是不固定的,是从2个不同的角度去看数据。 8 Spark应用程序的执行过程是什么? http://www.aboutyun.com/forum.php?mod=viewthread&action=printable&tid=24246 7/24 2018/6/5 spark相关的面试题跟答案,带着问題学习效果更佳哟。)- about云开发活到老学到老- Powered by Discuz! 1〕构烂 Spark Application的运行坏境(启动 Spark Context), Spark Context向資源管理器(可以是 Standalone、 Mesos或 YARN)注册并申请运行 Executor资源; 2)资源管理器分配εκ ector资源并启动 Standalone ExecutorBackend, Executor运行情况将随着心跳发送到资源管理器上; 3 Spark context构建成DAG图,将DAG图分解成 stage,并把 Taskset发送给 Task Scheduler., Executor向 Spark Context申请 Task, Task Scheduler将Task发放绘 Executor运行同时 Sparkcontext将应用程序代码发放给 Executor。 4).Task在 Executor上运行,运行完毕释放所有資源 9 hbase预分区个数和 spark.过程中的 reduce个数相同么 答:和spak的map个数相同, reduce个数如果没有设置和 reduce前的map数相同。 10如何理解 Standalone模式下, Spark资源分配是粗粒度的? 答:spak默认情况下资源分配是粗粒度的,也就是说程序在提交时就分配好资源,后面执行的时候 使用分配好的资源,除非资源出现了故障才会重新分配。比如 Spark she启动,已提交,一注册,哪怕没有任务, worker都会分 配源给 executor。 11Spak如何自定义 partitioner分区器? 答:1) spark默认实现了 Hash Partitioner和 Range Partitioner两种分区策略,我们也可以自己扩展分区策略,自定义分区器的时 候继承。 org.apache. spark Partitioner类,实现类中的三个方法 def num Partitions;int:这个方法需要返回你想要创建分区的个数 def getPartition(key:Any):lnt:这个函数需要对输入的key做计算,然后返回该key的分区D,范围一定是0到 num Partitions equals0:这个是va准的判断相等的函数,之所以要求用户实现这个函数是因为 Spark内部会比较两个RDD的分区是否一样 2)使用,调用 parttionBy方法中传入自定义分区对象 :http://blog.csdnnet/high2011/article/details/68491115 12 spark中task有几种类型? 答:2种类型:1) result task类型,最后一个task,2是 shuffleMap Task类型,除了最后一个task都是 13 union操作是产生宽依赖还是窄依赖? 答:窄依赖 14 rangePartioner分区器特点? 答: rangePartioner尽量保证每个分区中数据量的均匀,而旦分区与分区之间是有序的,一个分区中的元素肯定都是比另一个分区 内的元素小或者大;但是分区内的元素是不能保证顺序的。简单的说就是将一定范围內的数映射到某一个分区内 Range Partitioner作用:将一定范围内的数玦射到某一个分区内,在实现中,分界的算法尤为重要。算法对应的函数是 range Bounds 15什么是二次排序,你是如何用spak实现二次排序的?(互联网公司常面 答:就是考虑2个维度的排序,key相同的情况下如何排序,参考博文 http://blog.csdn.net/sundujinglarticle/details/51399606 16如何使用 Spark解决TopN问题?(互联网公司常面) 答:常见的面试题参考博文:http:/www.cnblogs.com/yurunmiaolp/4898672.htm 17如何使用 Sparkt解决分组排序题?(互联对公司常面) 组织数据形式: aa 11 bb 11 CC 34 bb 6/ CC 29 36 bb 33 bb 44 CC 49 需求 1、对上述数据按key值进行分组 2、对分组后的值进行排序 3、截取分组后值得top3位以 key-value式返回结果 答案:如下 val groupTopNRdd sc textFile("hdfs: //db02: 8020/user/hadoop/groupsorttop/groupsorttop data") groupTopNRdd. map(. split("")). map(x=>(x(O), x(1)). group By Key map( X=>{ (xx,yy. toList sorted. reverse. take ( 3)) ) collect 18窄依赖父RDD的 partition和子RDD的 parition是不是都是一对一的关系? 模的改变而改变),比如join操作的每个 portion仅和已知的 partition进行join,这个oin操作是窄依賴,依赖固定数量的父 rdd,因为是确定的 partition关系 19 Hadoop中, Mapreduce操作的 mappe和 reducer阶段相当于 spark中的哪几个算子? 答:相当于 spark中的map算子和 IreduceByKey算子,当然还是有点区别的MR会自动进行排序的, spark要看你用的是什么 partitioner 20什么是 shuffle,以及为什么需要 shuffle? shuffle中文翻译为洗牌,需要 shuffle的原因是:某种具有共同特征的数据汇聚到一个计算节点上进行计算 21不需要排序的 hash shuffle是否一定比需要排序的 sort shuffle速度快? http://www.aboutyun.com/forum.php?mod=viewthread&action=printable&tid=24246 8/24 2018/6/5 spark相关的面试题跟答案,带着问题学习效果更佳哟。)- about云开发活到老学到老- Powered by Discuz! 答:不-定!!当数据规馍小, Hash shuffle快于 Sorted shuffle数据规模大的时候;当数据量大; sorted shuffle会比Hash shuffle快很多,因为数量大的有很多小文件,不均匀,甚至岀现数据倾斜,消耗内存大,1之前 spark使用hash,适合处理中小 规模,1x之后,增加了 Sorted shuffle, Spark更能胜任大规模处理了。 22Spak中的 Hash shuffle的有哪些不足? 答:1)shuf升le产生海量的小文件在磁盘上,此时会产生大量耗时的、低效的o操作;2)容易导致内存不够用,由于内存需要保 存海量的文件操作句柄和临时缓存信息,如果数据处理规模比较大的化,容易岀现¤OM;3)容易岀现数据倾斜,导致OOM 23 conslidate是如何优化 Hash shuffle时在map端产生的小文件? 答:1) conslidate为了解决 Hash shuffle同时打开过多文件导致 Writer handler内存使用过大以及产生过多文件导致大量的随机 读写带来的低效磁盘|O;:2) conslidate根据CPU的个数来决定每个 task shuffle map端产生多少个文件,假设原来有10个task 100个 reduce,每个CPU有10个CPU 那么使用 hash shuffle会产生10*100=1000个文件, conslidate产生10*10=100个文件 备注: conslidate部分减少了文件和文件句枘,并行读很高的情况下(task很多时)还是会很多文件 24Sot- basesd shuffler产生多少个临时文件 答:2*Map阶段所有的task数量, Mapper阶段中并行的 Partition的总数量,其实就是 Mapperimtask 25 Sort-based shuffle的缺陷? 1)如果 mapper中task的数量过大,依日会产生很多小文件,此时在 shuffle传递数据的过程中 Reducer.段, reduce会需要同时大量 的记录进行反序列化,导致大量的內存消耗和GC的巨大负担,造成系统缓慢甚至崩溃 2)如果需要在分片内也讲行排序,此时需要进行 mapper段和 Reducer段的两次排序 26 Spark shel动时会启动 derby? 答: spark shell启动会启动 spark sql, spark sql默认使用 derby保存元数据,但是尽量不要用 derby,它是单实例,不利于开 发。会在本地生成-个文件 metastore_db如果启动报错,就把那个文件给删了, derby数据库是单实例,不能支持多个用户同时 操作,尽量避免使用 27. spark. default parallelism这个参数有什么意义,实际生产中如何设置? 答:1)参数用于设置每个 stagel的默认task数量。这个参数极为重要,如果不设置可能会直接影响你的Spak作业性能;2)很多 人都不会设置这个参数,会使得集群非常低效,你的cpu,内存再多,如果task始终为1,那也是浪费, spark官网建议task个数为 CPU的核数* executor的个数的2~3倍。 28 spark storage. memory Fraction参数的含义实际生产中如何调优? 答:1)用于设置RDD持久化数据在 Executor内存中能占的比例,默认是0.6,默认 Executor60%的内存,可以用来保存持久化的 RDD数据。根据你选择的不同的持久化策略,如果内存不够时,可能数据就不会持久化,或者数据会写入磁盘。2)如果持久化操 作比较多,可以提高 spark. storage memory Fraction参数,使得更多的持久化数据保存在內存中,提高数据的读取性能,如果 shuttle的操作比较多,有很多的数括读写操作到M中,那么应该调小一点,节约出更多的内存给M,避免过多的MMgc发 生。在 web uil中观察如果发现gc时间很长,可以设置 spark. storage. memoryFraction更小一点。 29. spark. shuffle. memory Fraction参数的含义,以及优化经验? 答:1) spark. shuffle. memory Fraction是 shuffle调优中重要参数, shuffle从上-个task拉去数据过来,要在 Executor进行聚合 操作,聚合操作时使用 Executor内存的比例由该参数决定,默认是20% 如果聚合时数据超过了该大小,那么就会spi磁盘,极大降低性能;2〕如果 Spark作业中的RDD持久化作较少, shuffle操作 较多时,建议降低持久化操作的内存占比,提高 shuffle操作的内存占比比例,避免 shuffle过程中数据过多时内存不够用,必须溢 写到磁盘上,降低了性能。此外,如果发现作业由于频繁的g导致运行缓慢,意味着task执行用广代码的内存不够用,那么同样建 议调低这个参数的值 30介绍一下你欢 Unified Memory Management存管理模型的理解? 答: Spark中的内存使用分为两部分:执行( execution)与存储( storage)。执行内存主要用于 shuffles、 JoIns、 sorts和 aggregations,存储内存则用于缓存或者跨节点的内部数据传输。16之前,对于个 Executor,内存都有哪些部分构成 1) ExecutionMemory。这片内存区域是为了解决 shuffles joins, sorts and aggregations过程中为了避免频繁|O需要的 buffer,通过 spark.shuffle. memory Fraction(獻认0.2)配置。 2) StorageMemory。这片内存区域是为了解决 block cache(就是你显示调用 dd cache,rd. persist等方法)还有就是 broadcasts,以及 task results的存储。可以通过参数 spark storage. memory Fraction(默认0.6)。设置 3) OtherMemory。给系统预留的,因为程序本身运行也是需要内存的。(默认为0.2) 传统内存管理的不足 1). Shuffle占用内存0.2*0.8,内存分配这么少,可能会将数据spl倒到磁盘,频繁的磁盘Q是很大的负担, Storage内存占用0.6,主 要是为了达代处理。传统的 Spark内存分配对操作人的要求非常高.( Shuffle分配内存: ShuffleMemory Manager TaskMemory Manager, ExecutorMemory Manager)一个Task获得全部的 Execution的Mem。ry,其他Task过来就没有内存了 只能等待。 2默认情况下,Task在线程中可能会占满整个内存,分片数据特别大的情况下就会出现这种情况,其他Iask没有内存了,则下的 cores就空闲了,这是巨大的浪表。这也是人为操作的不当造成的。 3).MEM○ RY AND DISK SER的 storage方式,获得RDD的数据是一条条获取, Iterator的方式。如果内存不够 spark storage. unrollFraction),unro‖的读取数据过桿,就是看内存是否足够,如果足够,就下-条。unr。‖的 space是从 Storage的内存空间中获得的。unro‖的方式失败,就会直接放磁盘 4)默认情况下,Task在spi到磁盘之前,会将部分数据存放到内存上,如果获取不到内存,就不会执行。永无上境的等待,消耗 CP∪和内存 在此基础上, Spark提出了 UnifiedMemoryManager,不再分 ExecutionMemory和 Storage Memory;实际上还是分的,只不过 是 Execution Memory访问 Storage Memory; Storage Memory也可以访问 Execution Memory,如果内存不够,就会去借 Spark面试2000题101-130】 Spark on Yarn面试篇04 本篇题集主要是 Spark on Yarn相关的而试题,主要涉及 Spark on Yarn、Yarn、 Mapreduce关面试题。 面试题30题 1.MRV1有哪些不足? 1)可扩展性(对于变化的应付能力) a)」 ob tracker内存中保存用户作业的信息 b) Jobtracker使用的是粗粒度的锁 2)可靠性和可用性 http://www.aboutyun.com/forum.php?mod=viewthread&action=printable&tid=24246 9/24 2018/6/5 spark相关的面试题跟答案,带着问題学习效果更佳哟。)- about云开发活到老学到老- Powered by Discuz! a) Job tracker失效会多事集群中所有的运行作业,用户需手动重新提交和恢复工作流 3)对不同编程模型的支持 Hadoop1以 MapReduce为中心的设计虽然能支持广泛的用例,但是并不适合所有大型计算如 storm, spark 2描述Yarn执行一个任务的过程? 1)客户端 client向 Resoucemanager提交 Application, ResouceManager接受 Application 并根据集群資源状况选取一个node来启动 Application的任务调度器 driver( ApplicationMaster) 2) Resouce Managers至那个node,命令其该node上的 node Manager来启动一个新的 JMM进程运行程序的 driver( Application Master)部分, driver( Application Master)启动时会首先向 ResourceManage注 册,说明由自己来负责当前程序的运行 3) driver( Application Master)开始下载相关jar包等各种资源,基于下载的jar等信息决定向 ResourceManager申请具体的资 源内容。 4) Resouce Manager接受到 driver( Application Master)提出的申请后,会最大化的满足 资源分配请求,并发送資源的元数据信息给 driver( Application Master) 5) driver( ApplicationMaster)收到发过来的资源元数据信息后会根据元数据信息发指令给具体 机器上的 NodeManager,让其启动具体的 container. 6) Node manager收到 driver发来的指令,启动 container, container启动后必须向 driver( ApplicationMaster)注册。 7) driver( Application Master)收到 container的注册,开始迸行任务的调度和计算,直到 任务完成。 补充:如果 ResourceManager第一次没有能够满足 driver( Application Master)的资源请求 后续发现有空闲的資源,会主动向 driver( ApplicationMaster)发送可用资源的元数据信息 以提供更多的资源用于当前程序的运行。 3Yar中的 container是由谁负责销毁的,在 Hadoop Mapreduce中 container可以复用么? 答: ApplicationMaste负责销毁,在 Hadoop Mapreduce不可以复用,在 spark on yarr程序 container可以复用 4提交任务时,如何指定 Spark Application的运行模式? 1)clusterttIt: /spark-submit--class XXXX.XX--master yarn --deploy-mode cluster xx jar 2)clientts=: /spark-submit--class xx..xx--master yarn --deploy-mode client xx jar 5.不启动 Spark集群 Maste和w。rk服务,可不可以运行Spak程序? 答:可以,只要资源管理器第三方管理就可以,如由yarn管理,spak集群不启动也可以使用 spark; spark集群启动的是work和 master,这个其实就是资源管理框架,yam中的 resource Manager生当于 master, NodeManager桕当于 worker,做计算是 Executor,和 Ispark集群的work和 manage可以没关系,归根接底还是M的运行,只要所在的VM上安装了 spark就可以 6 Spark中的4040端口由什么功能 答:收集5park作业运行的信息 7. spark on yarn Cluster模式下, Application Master和 driver是在同一个进程么? 答:是 driver位于 ApplicationMaster进程中。该进程负责申请资源,还负责监控程序、资源的动态情况 8如何使用命令查看 application运行的日志信息 F: yarn logs-applicationld <app ID> 9 Spark an Yarn模式有哪些优点? 1〕与其他计算框架共享集群资源(egsρark架与 MapLeαuce框架同时运行,如果不用Yarη进行资源分配, MapReduce分到的 内存资源会很少,效率低下);资源按需分配,进而提高集群资源利用等。 2)相较于 Spark自带的 Standalone樸式,Yarn的資源分配更加细致 3) Application部署简化,例如 Spark, Storm等多种框架的应用由客户端提交后,由Yamn负责资源的管理和调度,利用 container 作为资源隔离的单位,以它为中位去使用内存Cpu等。 4)Yarn通过队列的方式,管理同时运行在Yarn集群中的多个服务,可根不同类型的应用程序负载情况,调整对应的资源使用 量,实现资源弹性管理 10谈谈你对 container的理解? 1) Container作为資源分配和调度的基本单位,其中封装了的資源如内存,CP∪,磁盘,网络带宽等。目前yarn仅仅封装内存和 CPU 2) ontaine由 ApplicationMaste向 ResourceManagerl申请的,由 ResouceManager中的资源调度器异步分配给 ApplicationMaster 3) Container的运行是由 ApplicationMaster向资源所在的 Node Manager发起的, Container运行时需湜供内部执行的任务命令, 11运行在yan中 Application有几种类型的 container 1)运行 Application Master的 Container:这是由 ResourceManager(向内音的资源调度器)申请和启动的,用户提交应用程序 时,可指定唯一的 Application Maste所需的资源 2)运行各类任务的C。 ntainer:这是由 Application Master向 ResourceManager申请的,并由 Application Master与 NodeManager通信以启动之 12 Spark on Yarn架构是怎么样的?(要会画哦,这个图) Yarn提到的 App Master可以理解为 Sparki中 Standalone模式中的 driver., Container中运行着 Executor,在 Execute中以多线程并 行的方式运行Task。运行过程和第二题相似。 13 Executor启动时,资源通过哪几个参数指定? 1)num- executors是 executor的数量 2) executor-memory是每个 execute使用的内存 3) executor- cores是每个 executor分配的CPU 14为什么会产牛yarn,解决了什么问题,有什么优势? 1)为什么产生yan,针对MRV1的各种缺陷提出来的资源管理框架 2)解决了什么问题,有什么优兿,参考这篇博文:http://www.aboutyun.com/forum.php?mod=viewthread&tid=6785 15 Mapreduce的执行过程? 阶段1: input,/map/ partition/ort/ spill 阶段2: mapper端merg 阶段3: reducer端 merge/ reduce/ output 详细过程参考这个http://www.cnblogs.com/hipercomerlp/4516581.html http://www.aboutyun.com/forum.php?mod=viewthread&action=printable&tid=24246 0/24 【实例截图】
【核心代码】

标签:

实例下载地址

Spark面试2000题(1~6期 外加60题)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警