2025年spark 面试题总结(spark面试题总结)

spark 面试题总结(spark面试题总结)1 问题分析 本题考察的其实就是比对 MapReduce 和 Spark 的计算方式 2 核心答案讲解 两者都是用 MapReduce 模型来进行并行计算 Hadoop 的一个作业称为 job job 里面分为 Map Task 和 Reduce Task 每个 task 都是在自己的进程中运行的 当 Task 结束时 进程也会结束 Spark 用户提交的任务称为 application

大家好,我是讯享网,很高兴认识大家。



1    问题分析:

本题考察的其实就是比对MapReduce和Spark的计算方式。

2    核心答案讲解:

两者都是用MapReduce模型来进行并行计算,Hadoop的一个作业称为job,job里面分为Map Task和Reduce Task,每个task都是在自己的进程中运行的,当Task结束时,进程也会结束。

Spark用户提交的任务称为application,一个application对应一个Sparkcontext,app中存在多个job,每触发一次action操作就会产生一个job。 这些job可以并行或串行执行,每个job中有多个stage,stage是Shuffle过程中DAGSchaduler通过RDD之间的依赖关系划分job而来的,每个stage里面有多个task,组成taskset由TaskSchaduler分发到各个executor中执行,executor的生命周期是和app一样的,即使没有job运行也是存在的,所以task可以快速启动读取内存进行计算。

Hadoop的job只有map和reduce操作,表达能力比较欠缺,而且在MR过程中会重复的读写HDFS,造成大量的IO操作,多个job需要自己管理关系。

Spark的迭代计算都是在内存中进行的,API中提供了大量的RDD操作如join,Groupby等,而且通过DAG图可以实现良好的容错。

3  问题扩展:

Spark是否可以替代Hadoop?

4  结合项目中使用:

最常见的六种项目如下:

项目一:数据整合

称之为“企业级数据中心”或“数据湖”,这个场景是你有不同的数据源,你想对它们进行数据分析。

这类项目包括从所有来源获得数据源(实时或批处理)并且把它们存储在Hadoop中。这是成为一个“数据驱动的公司”的第一步;有时,或许你仅仅需要一份漂亮的报告。“企业级数据中心”通常由HDFS文件系统和Hive或IMPALA中的表组成。

未来,HBase和Phoenix在大数据整合方面将大展拳脚,打开一个新的局面,创建出全新的数据美丽新世界。

项目二:专业分析

许多数据整合项目实际上是从特殊的需求和某一数据集系统的分析开始的。这些往往是在一些特定领域,如在银行领域的流动性风险/蒙特卡罗模拟分析。

在过去,这种专业的分析依赖于过时的,专有的软件包,无法扩大数据的规模,经常遭受一个有限的功能集的限制,不能开发特定功能(大部分是因为软件厂商不可能像专业机构那样了解的那么多)。

项目三:Hadoop作为一种服务

在“专业分析”项目的任何大型组织,他们会不可避免地开始感觉,越来越困难地去管理几个不同配置的Hadoop集群。

接下来,他们会说,“也许我们应该整合这些资源池,”而不是大部分时间让大部分节点处于资源闲置状态。把这些资源用docker容器技术来组成云计算。

项目四:流分析

流分析应用在需要实时分析的场景中,比如反洗钱和欺诈检测,需要及时捕获这些异常。

要在交易的基础上,抓住它发生,而不是在一个周期结束。Storm与Hbase作为常用的数据存储。

项目五:ETL流

有时你想捕捉流数据并把它们存储起来。这些项目通常与第1类或第2类重合,但增加了各自的范围和特点。(有些人认为他们是4类项目,但他们实际上是在向磁盘保存大量数据和分析数据。)。

这些项目几乎都是使用了Kafka和Storm技术的项目。Spark也使用,但没有理由,因为你不需要在内存分析。

项目六:更换或增加SAS

1   问题分析:

本题考察Hadoop基础之余,考察Hadoop的HA基于ZK实现方式。

2  核心答案讲解:

启动的进程:

1.namenode(active)

2.socondarynamenode【namenode(standby)】

3.datanode

4.ResourceManager(JobTracker)JobTracker


讯享网

5.NodeManager(TaskTracker)

6.DFSZKFailoverController

7.JournalNode

8.jobhistory(需要单独启动)

作用:

1) NameNode它是Hadoop中的主服务器,管理文件系统名称空间以及对集群中存储的文件的访问,保存有 metadate.

2) SecondaryNameNode它不是NameNode的冗余守护进程,而是提供周期检查点和清理任务。帮助NN合并editslog,减少NN启动时间。HA模式下standby的NameNode替代SecondaryNameNode

3) DataNode它负责管理连接到节点的存储(一个集群中可以有多个节点)。每个存储数据的节点运行一个DataNode守护进程。

4) ResourceManager(JobTracker)JobTracker负责调度DataNode上的工作。每个DataNode有一个TaskTracker,它们执行实际工作。

5) NodeManager(TaskTracker)执行任务

6) DFSZKFailoverController高可用时它负责监控NN的状态,并及时的把状态信息写入ZK。

它通过一个独立线程周期性的调用NN上的一个特定接口来获取NN的健康状态。FC也有选择谁作为Active NN的权利,因为最多只有两个节点,目前选择策略还比较简单(先到先得,轮换)。

7) Journal Node 高可用情况下存放NameNode的editlog文件。

8)  Job History: 启动Job History Server来实现Web查看作业的历史运行情况。

3  问题扩展:

Hadoop的HA基于ZK如何实现?

4  结合项目中使用:

Hadoop  目前可以从三部分来理解:

HDFS: 数据存储服务;

YARN: 调度服务, MapReduce 依托于YARN 调度, 现在 Spark On YARN 也是依靠YARN 进行调度;

MapReduce: 计算服务 , 依托于 YARN 调度;

真实项目普遍采用 HDFS存储数据,YARN 负责调度, YARN 进行离线计算.   至于 MapReduce 因为维护性问题和时效的问题, 一般很少用。

至于Hive ,HBase , Spark 等服务, 都是围绕 Hadoop 构建的, 从而构成一套生态系统。

1 问题分析:

Hadoop可以存储多种文件格式,其中Sequence File这个格式需要知道。

2 核心答案讲解:

1) Sequence File文件是Hadoop用来存储二进制形式的[Key,Value]对而设计的一种平面文件(Flat File)。

可以把Sequence File当做是一个容器,把所有的文件打包到Sequence File类中可以高效的对小文件进行存储和处理。

2) Sequence File文件并不按照其存储的Key进行排序存储,Sequence File的内部类Writer提供了append功能。

3) Sequence File中的Key和Value可以是任意类型Writable或者是自定义Writable。

4) 在存储结构上,Sequence File主要由一个Header后跟多条Record组成,Header主要包含了Key ClassName,value ClassName,存储压缩算法,用户自定义元数据等信息,此外,还包含了一些同步标识,用于快速定位到记录的边界。

每条Record以键值对的方式进行存储,用来表示它的字符数组可以一次解析成:记录的长度、Key的长度、Key值和value值,并且Value值的结构取决于该记录是否被压缩

3 问题扩展

项目中是否用过Sequence File这个格式?

4 结合项目中使用

小讯
上一篇 2025-04-22 16:21
下一篇 2025-04-26 09:46

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/166068.html