来源:《spark实战》讲义
- [1 ] Spark生态系统
-
[2 ] Spark特点
-
先进架构
• Spark采用Scala语言编写,底层采用了actor model的akka作为通讯框架,代码十分简洁高效。
• 基于DAG图的执行引擎,减少多次计算之间中间结果写到Hdfs的开销。
• 建立在统一抽象的RDD(分布式内存抽象)之上,使得它可以以基本一致的方式应对不同的大数据处理场景。 -
高效
• 提供Cache机制来支持需要反复迭代的计算或者多次数据共享,减少数据读取的IO开销。
• 与Hadoop的MapReduce相比,Spark基于内存的运算比MR要快100倍;而基于硬盘的运算也要快10倍! -
易用
• Spark提供广泛的数据集操作类型(20+种),不像Hadoop只提供了Map和Reduce两种操作。
• Spark支持Java,Python和Scala API,支持交互式的Python和Scala的shell。 -
提供整体解决方案
• 以其RDD模型的强大表现能力,逐渐形成了一套自己的生态圈,提供了full-stack的解决方案。
• 主要包括Spark内存中批处理,Spark SQL交互式查询,Spark Streaming流式计算, GraphX和MLlib提供的常用图计算和机器学习算法 -
与Hadoop无缝衔接
• Spark可以使用YARN作为它的集群管理器
• 读取HDFS,HBase等一切Hadoop的数据
- [3 ] Spark特点
• Spark提供了多种高级工具: Shark SQL应用于即席查询(Ad-hoc query)、 Spark
Streaming应用于流式计算、 MLlib应用于机器学习、 GraphX应用于图处理。
• Spark可以基于自带的standalone集群管理器独立运行,也可以部署在Apache Mesos
和 Hadoop YARN 等集群管理器上运行。
• Spark可以访问存储在HDFS、 Hbase、 Cassandra、 Amazon S3、 本地文件系统等等
上的数据,Spark支持文本文件,序列文件,以及任何Hadoop的InputFormat。
- [4 ] Spark核心概念
Spark任务提供多层分解的概念,
Spark组件将用户的应用程序分解为内部执行任务并提供执行容器,
资源管理为spark组件提供资源管理和调度
- [5 ] Spark端到端流程
- [6 ] Spark的运行模式
- [7 ] Spark on Standalone
Master和Worker是standalone的角色, Driver和Executor是Spark的角色。
Master负责分配资源,分配Driver和Executor, 让Worker启动driver和executor,只管
理到executor层,不涉及任务;
Driver负责生成task,并与executor通信,进行任务的调度和结果跟踪,不涉及资源。
- [8 ] Spark on Yarn
与Standalone类似,不过YARN架构更通用,可以在同一集群部署Hadoop、 Spark等。
RM、 NM和AM是YARN的角色, Driver和Executor是Spark的角色。
RM负责资源分配,分配App Master和Executor; AM负责向RM申请资源,启动Driver和
启动Executor
Driver负责task的生成, task的调度和结果跟踪