| 失效链接处理 | 
| 
      Apache Spark常见面试题 PDF 下载 
	相关截图: 
![]() 主要内容: 
		1. 分析⼀下⼀段spark代码中哪些部分在Driver端执⾏,哪些部分 
	
		在Worker端执⾏ 
	
		Driver Program是⽤户编写的提交给Spark集群执⾏的application,它包含两部分 
	
		作为驱动: Driver与Master、Worker协作完成application进程的启动、DAG划分、计算任务封装、计算任 
	
		务分发到各个计算节点(Worker)、计算资源的分配等。 
	
		计算逻辑本身,当计算任务在Worker执⾏时,执⾏计算逻辑完成application的计算任务。 
	
		⼀般来说transformation算⼦均是在worker上执⾏的,其他类型的代码在driver端执⾏。 
	2. 讲⼀下spark的⼏种部署⽅式 
		⽬前,除了local模式为本地调试模式以为, Spark⽀持三种分布式部署⽅式,分别是standalone、spark on 
	
		mesos和 spark on YARN 
	
		Standalone模式 
	
		即独⽴模式,⾃带完整的服务,可单独部署到⼀个集群中,⽆需依赖任何其他资源管理系统。从⼀定程度上 
	
		说,该模式是其他两种的基础。⽬前Spark在standalone模式下是没有任何单点故障问题的,这是借助 
	
		zookeeper实现的,思想类似于Hbase master单点故障解决⽅案。将Spark standalone与MapReduce⽐ 
	
		较,会发现它们两个在架构上是完全⼀致的: 
	
		都是由master/slaves服务组成的,且起初master均存在单点故障,后来均通过zookeeper解决 
	
		(Apache MRv1的JobTracker仍存在单点问题,但CDH版本得到了解决); 
	
		各个节点上的资源被抽象成粗粒度的slot,有多少slot就能同时运⾏多少task。不同的是,MapReduce 
	
		将slot分为map slot和reduce slot,它们分别只能供Map Task和Reduce Task使⽤,⽽不能共享,这是 
	
		MapReduce资源利率低效的原因之⼀,⽽Spark则更优化⼀些,它不区分slot类型,只有⼀种slot,可 
	
		以供各种类型的Task使⽤,这种⽅式可以提⾼资源利⽤率,但是不够灵活,不能为不同类型的Task定制 
	
		slot资源。总之,这两种⽅式各有优缺点。 
	Spark On YARN模式 
		spark on yarn 的⽀持两种模式: 
	
		yarn-cluster:适⽤于⽣产环境; 
	
		yarn-client:适⽤于交互、调试,希望⽴即看到app的输出 
	
		yarn-cluster和yarn-client的区别在于yarn appMaster,每个yarn app实例有⼀个appMaster进程,是为app 
	
		启动的第⼀个container;负责从ResourceManager请求资源,获取到资源后,告诉NodeManager为其启动 
	
		container。yarn-cluster和yarn-client模式内部实现还是有很⼤的区别。如果你需要⽤于⽣产环境,那么请 
	
		选择yarn-cluster;⽽如果你仅仅是Debug程序,可以选择yarn-client。 
	
		Spark On Mesos模式 
	
		Spark运⾏在Mesos上会⽐运⾏在YARN上更加灵活,更加⾃然。⽬前在Spark On Mesos环境中,⽤户可选择 
	
		两种调度模式之⼀运⾏⾃⼰的应⽤程序 
	
		粗粒度模式(Coarse-grained Mode):每个应⽤程序的运⾏环境由⼀个Dirver和若⼲个Executor组 
	
		成,其中,每个Executor占⽤若⼲资源,内部可运⾏多个Task(对应多少个“slot”)。应⽤程序的各个任务正式运⾏之前,需要将运⾏环境中的资源全部申请好,且运⾏过程中要⼀直占⽤这些资源,即使不 
	
		⽤,最后程序运⾏结束后,回收这些资源。 
	
		细粒度模式(Fine-grained Mode):鉴于粗粒度模式会造成⼤量资源浪费,Spark On Mesos还提供了 
	
		另外⼀种调度模式:细粒度模式,这种模式类似于现在的云计算,思想是按需分配。与粗粒度模式⼀ 
	
		样,应⽤程序启动时,先会启动executor,但每个executor占⽤资源仅仅是⾃⼰运⾏所需的资源,不需 
	
		要考虑将来要运⾏的任务,之后,mesos会为每个executor动态分配资源,每分配⼀些,便可以运⾏⼀ 
	
		个新任务,单个Task运⾏完之后可以⻢上释放对应的资源。 
 | 
    




    
苏公网安备 32061202001004号


    