【大数据】Spark面试100问 | CSDN博文精选

戳蓝字“CSDN云计算”关注我们哦!

640?wx_fmt=jpeg

作者 |  游骑小兵
责编 | 阿秃

Q:什么是Spark?

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

Q:为什么要学Spark?

640?wx_fmt=jpeg

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集群的工具。

Q:Spark生态圈介绍

640?wx_fmt=jpeg

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可以实现复杂数学计算。

640?wx_fmt=other

Q:Spark与Hadoop的对比

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

Q:spark的组成有哪些?

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

它的主要组件有:

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

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

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

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

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

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

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

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

640?wx_fmt=jpeg

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之间有什么差异,用户应该根据什么来加以选择?

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的核心概念是什么?

640?wx_fmt=jpeg

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被提交时才会被触发。

Q:RDD提供了哪些操作?

640?wx_fmt=jpeg

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操作被执行时,运算才会触发。

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

推荐阅读:

  • 计算机专业的学生也太太太太太惨了吧?
  • 任正非采访的数据分析解读
  • 只因写了一段爬虫,公司 200 多人被抓!

  • 确认!语音识别大牛Daniel Povey将入职小米,曾遭霍普金斯大学解雇,怒拒Facebook
  • 三年一跳槽、拒绝“唯学历”,火速 Get 这份程序员求生指南!

  • 最新报告:区块链应用程序交易量下降近40%,博彩类仍为最受欢迎项目……

真香,朕在看了!

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

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

相关文章

为数据安全而生,阿里云容灾备份方案场景实践解析

摘要: 数字经济时代,数据正以超出想象的速度快速增长。短短几年,数据量已经从TB级别跃升到PB乃至ZB级别。 数字经济时代,数据正以超出想象的速度快速增长。短短几年,数据量已经从TB级别跃升到PB乃至ZB级别。 根据相关…

Dubbo项目入门

摘要: Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 它的特性如下 面向接口代理的高性能RPC调用 智能负载均衡 服务自动注…

linux 编辑器_Linux的vi编辑器详细总结

《大数据和人工智能交流》头条号向广大初学者新增C 、Java 、Python 、Scala、javascript 等目前流行的计算机、大数据编程语言,希望大家以后关注本头条号更多的内容。vi是linux的文本编辑器,vim是vi编辑器的增强版本,习惯上也称为vi一、vi编…

聊聊困扰很多同学的一个问题:是否要转方向 ?

戳蓝字“CSDN云计算”关注我们哦!作者 | 大飞码字责编 | 阿秃这篇来聊聊困扰很多同学的一个问题:是否要转方向 ?这类问题没有标准的答案,每个人的理解也不一样,我写下的也只是我个人的想法,仅供大家参考。iOS 开发本…

傅里叶变换处理sar图像_SAR和ISAR雷达的基础知识

合成孔径雷达(SAR)和逆合成孔径雷达(ISAR)是使用雷达绘制静止物体(通常为地形)的方法。SAR/ISAR系统部署在飞机或卫星上,它们相对于地球表面或任何可能静止的物体或地形进行高速移动。SAR/ISAR得益于以下现象:相对于地形水平方向上的物体和/或天线&#…

带你玩转Logview: MaxCompute Logview参数详解和问题排查

Logview是MaxCompute Job提交后查看和Debug任务的工具。通过Logview可看到一个Job的运行状态、运行结果以及运行细节和每个步骤的进度。当Job提交到MaxCompute后,会生成Logview的链接,用户可以直接在浏览器上打开Logview链接,进入查看Job的信…

Linux Shell脚本专栏_找出占用CPU/内存过高的进程_05

文章目录找出占用CPU/内存过高的进程1. 脚本2. 运行脚本3. 效果图找出占用CPU/内存过高的进程 1. CPU 过高的进程2. 内存 过高的进程1. 脚本 #/bin/bash echo "----------------------- CPU TOP 10------------------------" ps -eo user,pid,pcpu,pmem,args --sort…

阿里云大数据计算服务MaxCompute命令行工具——odpscmd的操作使用

在MaxCompute生态中,命令行工具究竟处于什么样的位置?它又发挥着什么样的作用?能够帮助开发者如何更好使用MaxCompute?在本文中,阿里巴巴计算平台产品专家曲宁将通过一个完整简单的小例子为大家介绍MaxCompute命令行工…

数组的合并和升序排列_区间调度问题之区间合并

读完本文,你可以去力扣拿下如下题目:56.合并区间-----------上篇文章用贪心算法解决了区间调度问题:给你很多区间,让你求其中的最大不重叠子集。其实对于区间相关的问题,还有很多其他类型,本文就来讲讲区间…

哈工大、清华、CSDN、嵌入式视觉联盟合办的 AIoT 盛会,你怎么舍得错过?!

2019 嵌入式智能国际大会即将来袭!随着物联网和人工智能技术的飞速发展与相互渗透,万物智联的新赛道已经开始显现。据中商产业研究院《2016—2021年中国物联网产业市场研究报告》显示,预计到2020年,中国物联网的整体规模将达2.2万…

mysql提交事务_mysql事务的实现原理

此篇文章算是对mysql事务的一个总结,基本把mysql事务相关的知识点都涵盖到了,面试问来问去无非也就是这些,在了解这些之前我们先对mysql在执行的过程中有一个整体的认识,如下图如上图所示,MySQL服务器逻辑架构从上往下…

Linux Shell脚本专栏_查看网卡的实时流量_06

文章目录查看网卡的实时流量1. 脚本内容2. 运行脚本查看网卡的实时流量 一个服务器的流量基本可以评估出当前服务器的负载和业务的访问情况,这样更有利于对当前服务器一个大致的了解,这也是在日常的监控中这个流量是必不可少的! 本案例&…

MaxCompute 多租户数据安全体系

很多用户对MaxCompute多租户数据安全体系感兴趣,我们将对其进行系统介绍,主要包括如下内容: MaxCompute 用户认证MaxCompute 项目空间内的访问控制和权限管理MaxCompute 跨项目空间的访问控制和权限管理MaxCompute 常见错误解析 基本术语 p…

如果批评《说好不哭》不自由,则赞美周杰伦无意义

戳蓝字“CSDN云计算”关注我们哦!作者 | 朱小五and王小九责编 | 阿秃从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远。——《晴天》他来了,他来了,他带着新歌mv和跟他一样胖了一圈的阿信来了。周杰伦新歌《说好不哭》一上线…

面向云数据库,超低延迟文件系统PolarFS诞生了

随着国内首款Cloud Native自研数据库POLARDB精彩亮相ICDE 2018的同时,作为其核心支撑和使能平台的PolarFS文件系统的相关论文"PolarFS: An Ultra-low Latency and Failure Resilient Distributed File System for Shared Storage Cloud Database"也被数据…

Data Lake Analytics-数据分析时代迎来新变革

前言 近期阿里云重磅推出新的数据分析引擎Data Lake Analytics,Data Lake Analytics是Serverless化的交互式联邦查询服务。无需ETL,使用标准SQL即可分析与集成对象存储(OSS)、数据库(PostgreSQL/MySQL/SQL Server等)、NoSQL(TableStore等)数据源的数据。…

这款耳机堪比千元级的AirPods

你如果问我:生活中你觉得必不可少的一件电子产品是什么?那么我会毫不犹豫的回答你:是耳机!出门忘带耳机是绝对不能忍听不听没关系,但是有它比较安心我觉得生活中不仅是我很多人都对耳机有一种依赖因为很多人都喜欢音乐…

java 发送邮件_Jenkins实现自动化邮件发送踩坑记录

文章简介本文分享Jenkins实现邮件发送,安装Jenkins可参考jenkins安装。写这篇文章,是在实际使用Jenkins过程中遇到这样一个问题,当每次Jenkins构建成功或者失败后,需要个人登录Jenkins查看构建结果,同时在构建前做了数…

Linux Shell脚本专栏_监控100台服务器磁盘利用率脚本_07

文章目录监控100台服务器磁盘利用率脚本1. 远程连接生成sshkey2. 复制ssh公钥到目标服务器3. 登录目标服务器查看4. 私钥免登录5. 192.168.43.134 服务器创建host,info文件6. 编辑脚本7. 赋予可执行权限8. 运行脚本9. 命令分解监控100台服务器磁盘利用率脚本 1. df -h 查看磁盘…

在linux下安装python3_【转】在Linux下安装python3

原文链接:http://www.cnblogs.com/feng18/p/5854912.html1、linux下安装python3a、 准备编译环境(环境如果不对的话,可能遇到各种问题,比如wget无法下载https链接的文件)2 下载 Python3.5代码包wget https://www.python.org/ftp/python/3.5.0…