Spark知识点
1.Spark的使用场景
Spark官网给出的说法:Spark是一个通用的快速分析引擎。Spark为我们常见的批处理、流处理、数据探索(数据挖掘)、机器学习等场景提供了很好的解决方案,任何有数据分析需求的人都可以使用。
2.“三架马车”
从 2003 年到 2006 年,Google 分别在 ODSI 与 SOSP 发表了 3 篇论文,引起了业界对于分布式系统的广泛讨论,这三篇论文分别是:
SOSP2003:The Google File System; 分布式文件系统(GFS)
ODSI2004:MapReduce: Simplifed Data Processing on Large Clusters; 分布式计算框架(MapReduce)
ODSI2006:Bigtable: A Distributed Storage System for Structured Data。 分布式数据存储(Hbase)
3.Hadoop的各个版本特点
1)Hadoop1.0:主节点可靠性差,没有热备。作业过多使得调度成为瓶颈。资源利用率低,并且不能适配其他分布式计算框架
2)Hadoop2.0:引入了资源管理和调度系统Yarn。HDFS变成了很多系统的底层存储,Yarn兼容多种计算框架。
3)Hadoop3.0:MR变为基于内存+IO+磁盘共同处理数据。
4.统一资源管理与调度—Yarn
统一是所有计算框架对于资源的获取都是一致的。资源的维度有两个:CPU和内存。调度的宏观机制目前有三种:集中式调度器、双层调度器、状态共享调度器
5.Yarn调度流程
第 1 步:客户端向 ResourceManager 提交自己的应用,这里的应用就是指 MapReduce 作业。
第 2 步:ResourceManager 向 NodeManager 发出指令,为该应用启动第一个 Container,并在其中启动 ApplicationMaster。
第 3 步:ApplicationMaster 向 ResourceManager 注册。
第 4 步:ApplicationMaster 采用轮询的方式向 ResourceManager 的 YARN Scheduler 申领资源。
第 5 步:当 ApplicationMaster 申领到资源后(其实是获取到了空闲节点的信息),便会与对应 NodeManager 通信,请求启动计算任务。
第 6 步:NodeManager 会根据资源量大小、所需的运行环境,在 Container 中启动任务。
第 7 步:各个任务向 ApplicationMaster 汇报自己的状态和进度,以便让 ApplicationMaster 掌握各个任务的执行情况。
第 8 步:应用程序运行完成后,ApplicationMaster 向 ResourceManager 注销并关闭自己。
6.Spark on Yarn的调度方式
Spark自己实现了一个集中式调度器Driver,用来调度作业内的计算任务。本质是Driver在Yarn中注册成为(框架调度器)二级调度器,是一种曲线救国的双层调度实现方式。
7.Spark RDD(弹性分布式数据集)是对数据的核心抽象,实质上是一组分布式的JVM不可变对象的集合。
弹性体现在出错之后的血缘回溯、转换时分区位置及数量的不确定性。
8.创建RDD的几种方式
并行化集合
val rdd = spark.