spark面试题Miles.docVIP

  • 7
  • 0
  • 约5.32千字
  • 约 6页
  • 2018-10-02 发布于河北
  • 举报
spark面试题Miles.doc

hadoop和spark的都是并行计算,那么他们有什么相同和区别?? 两者都是用mr模型来进行并行计算,hadoop的一个作业称为job,job里面分为map task和reduce task,每个task都是在自己的进程中运行的,当task结束时,进程也会结束。? spark用户提交的任务成为application,一个application对应一个sparkcontext,app中存在多个job,每触发一次action操作就会产生一个job。? 这些job可以并行或串行执行,每个job中有多个stage,每个stage里面有多个task,组成taskset由TaskSchaduler分发到各个executor中执行,executor的生命周期是和app一样的,即使没有job运行也是存在的,所以task可以快速启动读取内存进行计算。? hadoop的job只有map和reduce操作,表达能力比较欠缺而且在mr过程中会重复的读写hdfs,造成大量的io操作,多个job需要自己管理关系。? spark的迭代计算都是在内存中进行的,API中提供了大量的RDD操作如join,groupby等,而且通过DAG图可以实现良好的容错。 简单说一下hadoop和spark的shuffle过程?? hadoop:map端保存分片数据,通过网络收集到reduce端。? spark:spark的shuffle是在DAGSchedular划分Stage的时候产生的,TaskSchedule要分发Stage到各个worker的executor。? 减少shuffle可以提高性能。 17、RDD机制?? rdd分布式弹性数据集,简单的理解成一种数据结构,是spark框架上的通用货币。? 所有算子都是基于rdd来执行的,不同的场景会有不同的rdd实现类,但是都可以进行互相转换。? rdd执行过程中会形成dag图,然后形成lineage保证容错性等。? 从物理的角度来看rdd存储的是block和node之间的映射。 18、spark有哪些组件?? (1)master:管理集群和节点,不参与计算。? (2)worker:计算节点,进程本身不参与计算,和master汇报。? (3)Driver:运行程序的main方法,创建spark context对象。? (4)spark context:控制整个application的生命周期,包括dagsheduler和task scheduler等组件。? (5)client:用户提交程序的入口。 19、spark工作机制?? 用户在client端提交作业后,会由Driver运行main方法并创建spark context上下文。? 执行rdd算子,形成dag图输入dagscheduler,按照rdd之间的依赖关系划分stage输入task scheduler。? task scheduler会将stage划分为task set分发到各个节点的executor中执行。 20、spark的优化怎么做?? 通过spark-env文件、程序中sparkconf和set property设置。? (1)计算量大,形成的lineage过大应该给已经缓存了的rdd添加checkpoint,以减少容错带来的开销。? (2)小分区合并,过小的分区造成过多的切换任务开销,使用repartition。 21、kafka工作原理?? producer向broker发送事件,consumer从broker消费事件。? 事件由topic区分开,每个consumer都会属于一个group。? 相同group中的consumer不能重复消费事件,而同一事件将会发送给每个不同group的consumer。 Scala的特点?Scala是兼容的Scala是简洁的Scala是高层级的Scala是静态类型的 和 HYPERLINK /base/java \o Java 知识库 \t /content/17/0607/09/_blank Java的区别? (1)scala与java都有7中数值类型:int、short、long、byte、float、double、boolean这7种,但是scala中这7种值类型是类,在java中属于基本类型,java中,数据类型分成基本类型和引用类型,scala中不区分。 (2)scala中的变量或函数的类型总是写在变量或者函数名的后面 (3)scala中的操作符与java中的操作符没有什么不同,但是在scala中,操作符是方法,在java中操作符不是方法,且在scala中,除了字母数字之外的其他特殊字符也可以作为方法 (4)scala中的通配符是_,java中的通配符是* (5)scala中的unit相当于java中

文档评论(0)

1亿VIP精品文档

相关文档