【面试妥了】史上最全Spark面试题

戳蓝字“CSDN云计算”关注我们哦!
640?wx_fmt=jpeg
作者 | 游骑小兵
责编 | 阿秃

Spark问题精华

Q:什么是Spark?

A:简单理解,Spark是在Hadoop基础上的改进,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。

Q:为什么要学Spark?

A:基于MapReduce的计算引擎通常会将中间结果输出到磁盘上,进行存储和容错。出于任务管道承接的考虑,当一些查询翻译到MapReduce任务时,往往会产生多个Stage,而这些串联的Stage又依赖于底层文件系统(如HDFS)来存储每一个Stage的输出结果。

Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足。

Q:Spark有什么特性?

A:1、高效性

运行速度提高100倍。Apache Spark使用最先进的DAG调度程序,查询优化程序和物理执行引擎,实现批量和流式数据的高性能。

2、易用性

Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用。而且Spark支持交互式的Python和Scala的shell,可以非常方便地在这些shell中使用Spark集群来验证解决问题的方法。

3、通用性

Spark提供了统一的解决方案。Spark可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些不同类型的处理都可以在同一个应用中无缝使用。Spark统一的解决方案非常具有吸引力,毕竟任何公司都想用统一的平台去处理遇到的问题,减少开发和维护的人力成本和部署平台的物力成本。

4、兼容性

Spark可以非常方便地与其他的开源产品进行融合。比如,Spark可以使用Hadoop的YARN和Apache Mesos作为它的资源管理和调度器,器,并且可以处理所有Hadoop支持的数据,包括HDFS、HBase和Cassandra等。这对于已经部署Hadoop集群的用户特别重要,因为不需要做任何数据迁移就可以使用Spark的强大处理能力。Spark也可以不依赖于第三方的资源管理和调度器,它实现了Standalone作为其内置的资源管理和调度框架,这样进一步降低了Spark的使用门槛,使得所有人都可以非常容易地部署和使用Spark。此外,Spark还提供了在EC2上部署Standalone的Spark集群的工具。

640?wx_fmt=jpeg

Q:Spark生态圈介绍

A:Spark力图整合机器学习(MLib)、图算法(GraphX)、流式计算(Spark Streaming)和数据仓库(Spark SQL)等领域,通过计算引擎Spark,弹性分布式数据集(RDD),架构出一个新的大数据应用平台。

Spark生态圈以HDFS、S3、Techyon为底层存储引擎,以Yarn、Mesos和Standlone作为资源调度引擎;使用Spark,可以实现MapReduce应用;基于Spark,Spark SQL可以实现即席查询,Spark Streaming可以处理实时应用,MLib可以实现机器学习算法,GraphX可以实现图计算,SparkR可以实现复杂数学计算。

Q:Spark与Hadoop的对比

A:Spark的中间数据放到内存中,对于迭代运算效率更高。Spark更适合于迭代运算比较多的ML和DM运算。因为在Spark里面,有RDD的抽象概念。所以,Spark比Hadoop更通用。

Q:spark的组成有哪些?

A:Spark组成(BDAS):全称伯克利数据分析栈,通过大规模集成算法、机器、人之间展现大数据应用的一个平台。也是处理大数据、云计算、通信的技术解决方案。

640?wx_fmt=jpeg

它的主要组件有:

SparkCore:将分布式数据抽象为弹性分布式数据集(RDD),实现了应用任务调度、RPC、序列化和压缩,并为运行在其上的上层组件提供API。

SparkSQL:Spark Sql 是Spark来操作结构化数据的程序包,可以让我使用SQL语句的方式来查询数据,Spark支持 多种数据源,包含Hive表,parquest以及JSON等内容。

SparkStreaming:是Spark提供的实时数据进行流式计算的组件。

MLlib:提供常用机器学习算法的实现库。

GraphX:提供一个分布式图计算框架,能高效进行图计算。

BlinkDB:用于在海量数据上进行交互式SQL的近似查询引擎。

Tachyon:以内存为中心高容错的的分布式文件系统。

Q:Spark的工作流程是什么样的呢?

A:通俗的解释就是:Spark是为了处理数据而生的平台,用一个比喻来形容它是餐馆。餐馆搭建好了后,就会有顾客,顾客的各种需求都得有人去处理,那么这时的Master就像是服务员,负责了解顾客的要求并把需求按照一定规律分配给厨师(Worker),这个顾客的需求就是一个APP,但这个APP不止包括了一个菜(job),整个订单里有很多个job,每个job都得由这些厨师处理,厨师的手就像是具体处理的Executor,负责所有的包括shuffle啊,filter啊,map啊,reduce等等具体的对原材料(RDD)的处理。driver就像是懒惰的厨师长,worker向它申请资源,同时它负责接收下面的人处理好的半成品材料或者完成品的菜品,但它自己并不干具体的活,如果是别人处理好的半成品,driver就将它分配给它认为有空的人接着处理(可能是map后要reduce的东西),直到目前的stage结束得到具体想要的结果,如果是直接就是想要的数据形式(一个job的完成),那么driver就通知master收货并反馈给顾客(可能是python程序,scala程序等等)。

Q:Apache Spark和Apache Storm之间有什么差异,用户应该根据什么来加以选择?

640?wx_fmt=jpeg

A:Apache Spark是一个内存中的分布式数据分析平台- 主要针对加快批量分析工作,反复机器学习的工作,交互式查询和图形处理。一个最主要区别是Spark使用弹性分布式数据集(RDD)。RDD是通过并行运算符来进行计算,并根据定义它是一成不变的。RDD允许Spark基于谱系信息容错的独特的形式。如果你对执行Hadoop MapReduce作业更快,那么Spark是一个很好的选择(即使在这里需要考虑内存的因素)。

Apache Storm是专注于流处理或者一些所谓复杂事件的处理。Storm实现容错的方法进行计算或者以流水线的方式多次计算一个事件,由于Storm进入一个需要特定格式的系统,那么可能导致它转换为一个非结构化的数据。

Storm和Spark存在相当不同的使用情况。Storm和Spark流更多是类似“苹果和苹果”比较。由于Spark的SSD本身是不可变的,Spark流实现在用户定义的时间间隔“定量”来实现更新,得到改造成自己的RDD的方法,从而Spark的并行操作人员可以对这些RDD进行计算。这是与Storm处理每个事的不同之处。

这两种技术之间的一个主要区别是,Spark进行数据的并行计算,而Storm则是任务的并行计算。无论是那种方法,都有它表现价值的一方面。

Q:RDD的核心概念是什么?

A:Client:客户端进程,负责提交作业到Master。

Master:Standalone模式中主控节点,负责接收Client提交的作业,管理Worker,并命令Worker启动分配Driver的资源和启动Executor的资源。

Worker:Standalone模式中slave节点上的守护进程,负责管理本节点的资源,定期向Master汇报心跳,接收Master的命令,启动Driver和Executor。

Driver:一个Spark作业运行时包括一个Driver进程,也是作业的主进程,负责作业的解析、生成Stage并调度Task到Executor上。包括DAGScheduler,TaskScheduler。

Executor:即真正执行作业的地方,一个集群一般包含多个Executor,每个Executor接收Driver的命令Launch Task,一个Executor可以执行一到多个Task。

Q:RDD有哪些常见术语?

A:DAGScheduler:实现将Spark作业分解成一到多个Stage,每个Stage根据RDD的Partition个数决定Task的个数,然后生成相应的Task set放到TaskScheduler中。

TaskScheduler:实现Task分配到Executor上执行。

Task:运行在Executor上的工作单元。

Job:SparkContext提交的具体Action操作,常和Action对应。

Stage:每个Job会被拆分很多组任务(task),每组任务被称为Stage,也称TaskSet。

RDD:Resilient Distributed Datasets的简称,弹性分布式数据集,是Spark最核心的模块和类。

Transformation/Action:SparkAPI的两种类型;Transformation返回值还是一个RDD,Action返回值不少一个RDD,而是一个Scala的集合;所有的Transformation都是采用的懒策略,如果只是将Transformation提交是不会执行计算的,计算只有在Action被提交时才会被触发。

640?wx_fmt=jpeg

Q:RDD提供了哪些操作?

A:RDD提供了两种类型的操作:

transformation和action

1. transformation是得到一个新的RDD,方式很多,比如从数据源生成一个新的RDD,从RDD生成一个新的RDD

2. action是得到一个值,或者一个结果(直接将RDD cache到内存中)

3. 所有的transformation都是采用的懒策略,就是如果只是将transformation提交是不会执行计算的,计算只有在action被提交的时候才被触发。

DataFrame:带有Schema信息的RDD,主要是对结构化数据的高度抽象。

DataSet:结合了DataFrame和RDD两者的优势,既允许用户很方便的操作领域对象,又具有SQL执行引擎的高效表现。

Q:RDD中关于转换(transformation)与动作(action)有什么区别?

A:transformation会生成新的RDD,而后者只是将RDD上某项操作的结果返回给程序,而不会生成新的RDD;无论执行了多少次transformation操作,RDD都不会真正执行运算(记录lineage),只有当action操作被执行时,运算才会触发。

640?wx_fmt=jpeg

Q:RDD 与 DSM的最大不同是什么?

A:RDD只能通过粗粒度转换来创建,而DSM则允许对每个内存位置上数据的读和写。在这种定义下,DSM不仅包括了传统的共享内存系统,也包括了像提供了共享 DHT(distributed hash table) 的 Piccolo 以及分布式数据库等。

640?wx_fmt=png

640?wx_fmt=jpeg

640?wx_fmt=png

福利
扫描添加小编微信,备注“姓名+公司职位”,入驻【CSDN博客】,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!

640?wx_fmt=jpeg

推荐阅读:
  • 漫画:什么是希尔排序?
  • 一次失败的面试,复习一次一致性哈希算法
  • Pandas中第二好用的函数 | 优雅的Apply

  • 程序员因接外包坐牢 456 天!两万字揭露心酸经历
  • 限时早鸟票 | 2019 中国大数据技术大会(BDTC)超豪华盛宴抢先看

  • 阿里开源物联网操作系统 AliOS Things 3.0 发布,集成平头哥 AI 芯片架构!

  • 雷声大雨点小:Bakkt「见光死」了吗?

真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521476.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ的5种队列_订阅模式_入门试炼_第7篇

解读: 1、1个生产者,多个消费者 2、每一个消费者都有自己的一个队列 3、生产者没有将消息直接发送到队列,而是发送到了交换机 4、每个队列都要绑定到交换机 5、生产者发送的消息,经过交换机,到达队列,实现&…

python定期自动运行_干货分享 | 适合 Python 入门的 8 款强大工具,不会就你还不知道吧!...

点击上方“人工智能Corner”,“星标或置顶公众号”干货分享,第一时间送达Python是一种开源的编程语言,可用于Web编程、数据科学、人工智能以及许多科学应用。学习Python可以让程序员专注于解决问题,而不是语法。由于Python相对较小…

图解 Python 算法

普通程序员,不学算法,也可以成为大神吗?对不起,这个,绝对不可以。可是算法好难啊~~看两页书就想睡觉……所以就不学了吗?就一直当普通程序员吗?如果有一本算法书,看着很轻松……又有…

阿里技术人的第一节课

摘要: 本期的分享我们邀请到了阿里巴巴研发效能事业部的董越老师,他是阿里巴巴内部培训百年技术课堂的著名讲师,他讲的《百技课程-代码服务》是每一位入职技术童鞋必修的一门课,我们也将这种阿里内训技术首次面向业界公开&#xf…

RabbitMQ的5种队列_路由模式_入门试炼_第8篇

生产者 5.8.3.费者1(前台系统) 消费2(搜索系统)

ios安装python的步骤_如何利用 Python 爬虫实现给微信群发新闻早报?(详细)

点击上方“AirPython”,选择“加为星标”第一时间关注 Python 技术干货!1. 场景经常有小伙伴在交流群问我,每天的早报新闻是怎么获取的?其实,早期使用的方案,是利用爬虫获取到一些新闻网站的标题&#xff0…

阿里云AI如何助攻世界杯?视频集锦背后的技术实践

摘要: 本届世界杯互联网直播的顺利进行,离不开各大云计算厂商的支持。在这其中,阿里云是当之无愧的“C位“,除了优酷外,阿里云还支撑了CNTV、CCTV5客户端,为全网70%的世界杯直播流量保驾护航。 对于世界杯这…

h3c交换机划分vlan配置_华为、H3C、锐捷三家交换机配置命令详解

一、华为交换机基础配置命令1、创建vlan://用户视图,也就是在Quidway模式下运行命令。system-view //进入配置视图 [Quidway] vlan 10 //创建vlan 10,并进入vlan10配置视图,如果vlan10存在就直接进入vlan10配置视图 [Q…

程序员怎么悄无声息迈过36岁大槛?

戳蓝字“CSDN云计算”关注我们哦!作者 | 陈树义责编 | 阿秃我们很多时候经常会迷茫、焦虑,总是在想 35 岁的中年危机怎么办?很多时候与其焦虑,还不如想想看应该怎么办。很幸运的是,我在知道上遇到了一位年过中年还从事…

【开源】Tsar——灵活的系统和应用采集软件

摘要: 在开源人的盛会LinuxCon ContainerCon CloudOpen中国(简称LC3)大会上,阿里云CDN团队的空见(花名),为大家分享了开源的系统和应用采集软件Tsar的背景、设计思路和用法、模块开发以及未来…

看不见的战斗——阿里云护航世界杯直播容灾实践

摘要: 1978年,中国人开始在电视机上看到世界杯, 中央电视台对阿根廷队参加的半决赛以及阿根廷和荷兰的决赛进行了录播。1982年世界杯,宋世雄坐在一家香港宾馆的小电视前进行解说,然后央视再把香港这家电视台提供的画面…

树莓派安装python3.5_树莓派 | 04 安装基于python3.5的tensorflow,解决python版本不匹配问题...

创建日期:2019-03-03 系列文章 安装流程 在终端中依次执行 sudo apt install libatlas-base-dev pip3 install tensorflow(安装python3的CPU版本tensorflow,目前是不可能正常使用的,因为树莓派自带的Python3是3.5,而用…

使用fastjson工具类json字符串和对象之间的转换

文章目录一、引入依赖二、创建user实体类三、测试一、引入依赖 <!--字符串和对象操作工具类 Start--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependenc…

崩管嵌入式还是单片机,盘就完事了

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 小枣君责编 | 阿秃大家好&#xff0c;我是小枣君。凡是从事计算机或电子信息相关领域工作的童鞋&#xff0c;一定都听说过嵌入式和单片机吧&#xff1f;很多人应该知道&#xff0c;这两个名词和硬件系统有着非常密切的关系。…

DRDS分布式SQL引擎—执行计划介绍

摘要&#xff1a; 本文着重介绍 DRDS 执行计划中各个操作符的含义&#xff0c;以便用户通过查询计划了解 SQL 执行流程&#xff0c;从而有针对性的调优 SQL。DRDS分布式SQL引擎 — 执行计划介绍前言数据库系统中&#xff0c;执行计划是对 SQL 如何执行的形式化表示&#xff0c;…

易商云页面认证失败是什么情况_Serverless 云原生框架 Malagu:认证与授权

认证与授权组件 malagu/security 。Malagu 框架结合传统后台管理系统和云计算平台的认证与授权理念&#xff0c;并借鉴了 Spring Security 设计思想&#xff0c;抽象了一套通用的认证与授权模型。Spring Security 对前后端分离架构支持不是特别友好&#xff0c;Malagu 框架在这…

sharepoint文件夹本地同步_mac文件同步软件-Resilio Sync Home

Resilio Sync Mac版是Mac平台上的一款文件同步软件&#xff0c;Resilio Sync Mac版使用起来非常的简单、方便。你可以通过链接、秘钥或二维码的方式共享你电脑里的任意文件夹&#xff0c;接收方也可以把共享文件存放在任意位置。Resilio Sync Home Pro for mac(文件同步软件)​…

(需求实战_进阶_01)SSM集成RabbitMQ 关键代码讲解、开发、测试

背景&#xff1a; 为了减轻服务器的压力&#xff0c;现在原有项目的基础上集成消息队列来异步处理消息! 此项目是企业真实需求&#xff0c;项目的代码属于线上生产代码&#xff0c;直接用于生产即可&#xff01; 此项目采用MQ发送消息模式为:路由模式&#xff0c;如果对RabbitM…

浅谈Service Mesh体系中的Envoy

摘要&#xff1a; 提到Envoy就不得不提Service Mesh&#xff0c;说到Service Mesh就一定要谈及微服务了&#xff0c;那么我们就先放下Envoy&#xff0c;简单了解下微服务、Service Mesh以及Envoy在Service Mesh中处于一个什么样的角色。背景最近因工作原因开始了解Service Mesh…