共计 1781 个字符,预计需要花费 5 分钟才能阅读完成。
本篇内容主要讲解“Spark 提交的方式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让丸趣 TV 小编来带大家学习“Spark 提交的方式是什么”吧!
1、Spark 是什么?
○ 高可伸缩性
○ 高容错
○ 基于内存计算
2、Spark 的生态体系(BDAS,中文: 伯利克分析栈)
○ MapReduce 属于 Hadoop 生态体系之一,Spark 则属于 BDAS 生态体系之一
○ Hadoop 包含了 MapReduce、HDFS、HBase、Hive、Zookeeper、Pig、Sqoop 等
○ BDAS 包含了 Spark、Shark(相当于 Hive)、BlinkDB、Spark Streaming(消息实时处理框架, 类似 Storm)等等
○ BDAS 生态体系图:
3、Spark 与 MapReduce
优势:
○ MapReduce 通常将中间结果放到 HDFS 上,Spark 是基于内存并行大数据框架,中间结果存放到内存,对于迭代数据 Spark 效率高。
○ MapReduce 总是消耗大量时间排序,而有些场景不需要排序,Spark 可以避免不必要的排序所带来的开销
○ Spark 是一张有向无环图(从一个点出发最终无法回到该点的一个拓扑),并对其进行优化。
4、Spark 支持的 API
Scala、Python、Java 等
5、运行模式
○ Local(用于测试、开发)
○ Standlone(独立集群模式)
○ Spark on Yarn(Spark 在 Yarn 上)
○ Spark on Mesos(Spark 在 Mesos)
6、运行时的 Spark
Driver 程序启动多个 Worker,Worker 从文件系统加载数据并产生 RDD(即数据放到 RDD 中,RDD 是一个数据结构),并按照不同分区 Cache 到内存中。如图:
8、容错 Lineage 8.1、容错基本概念
○ 每个 RDD 都会记录自己所依赖的父 RDD,一旦出现某个 RDD 的某些 partition 丢失,可以通过并行计算迅速恢复
8.2、Narrow Dependent(窄依赖)和 Wide Dependent(宽依赖)
○ RDD 的依赖又分为 Narrow Dependent(窄依赖)和 Wide Dependent(宽依赖)
○ 窄依赖:每个 partition 最多只能给一个 RDD 使用,由于没有多重依赖,所以在一个节点上可以一次性将 partition 处理完,且一旦数据发生丢失或者损坏可以迅速从上一个 RDD 恢复
○ 宽依赖:每个 partition 可以给多个 RDD 使用,由于多重依赖,只有等到所有到达节点的数据处理完毕才能进行下一步处理,一旦发生数据丢失或者损坏,则完蛋了,所以在这发生之前必须将上一次所有节点的数据进行物化(存储到磁盘上)处理,这样达到恢复。
○ 宽、窄依赖示例图:
9、缓存策略
Spark 通过 useDisk、useMemory、deserialized、replication4 个参数组成 11 种缓存策略。
useDisk:使用磁盘缓存(boolean)
useMemory:使用内存缓存(boolean)
deserialized:反序列化(序列化是为了网络将对象进行传输,boolean:true 反序列化 \false 序列化)
replication:副本数量(int)
通过 StorageLevel 类的构造传参的方式进行控制, 结构如下:
class StorageLevel private(useDisk : Boolean ,useMemory : Boolean ,deserialized : Boolean ,replication:Ini)
10、提交的方式
○ spark-submit(官方推荐)
○ sbt run
○ java -jar
提交时可以指定各种参数
./bin/spark-submit
--class main-class
--master master-url
--deploy-mode deploy-mode
--conf key = value
... # other options
application-jar
[application-arguments]
例如:
到此,相信大家对“Spark 提交的方式是什么”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!