Spark
优势
速度快
基于内存数据处理,比MR快100个数量级以上(逻辑回归算法测试)
基于硬盘数据处理,比MR快10个数量级以上
易用性
支持Java、Scala、Python、R语言
交互式shell方便开发测试
通用性
一栈式解决方案:批处理、交互式查询、实时流处理、图计算及机器学习
多种运行模式
YARN、Mesos、EC2、Kubernetes、Standalone、Local
Spark技术栈
Spark Core
核心组件,分布式计算引擎
Spark SQL
高性能的基于Hadoop的SQL解决方案
Spark Streaming
可以实现高吞吐量、具备容错机制的准实时流处理系统
Spark GraphX
分布式图处理框架
Spark MLlib
构建在Spark上的分布式机器学习库
Spark架构与运行环境
Spark环境部署
选择较新的Spark2.2版本,下载地址
https://archive.apache.org/dist/spark/spark-2.2.0/spark-2.2.0-bin-hadoop2.7.tgz
解压并配置环境变量
SPARK_HOME
Spark配置文件
$SPARK_HOME/conf/spark-env.sh
$SPARK_HOME/conf/slaves
启动Spark
$SPARK_HOME/sbin/start-all.sh
7077与8080端口
Spark 架构
核心组件 | 说 明 |
---|---|
Application | 建立在Spark上的用户程序,包括Driver代码和运行在集群各节点Executor中的代码 |
Driver program | 驱动程序。Application中的main函数并创建****SparkContext |
Cluster Manager | 在集群(Standalone、Mesos、YARN)上获取资源的外部服务 |
Worker Node | 集群中任何可以运行Application代码的节点 |
Executor | 某个Application运行在worker节点上的一个进程 |
Task | 被送到某个Executor上的工作单元 |
Job | 包含多个Task组成的并行计算,往往由Spark Action触发生成,一个Application中往往会产生多个****Job |
Stage | 每个Job会被拆分成多组Task,作为一个TaskSet,其名称为****Stage |
运行架构
1.在驱动程序中,通过SparkContext主导应用的执行
2.SparkContext可以连接不同类型的Cluster Manager(Standalone、YARN、Mesos),连接后,获得集群节点上的Executor
3.一个Worker节点默认一个Executor,可通过SPARK_WORKER_INSTANCES调整
4.每个应用获取自己的Executor
5.每个Task处理一个RDD分区
Spark核心数据结构—RDD
/**
*#类:封装了一个不可变、可分区、可并行操作的SPARK基础抽象的弹性分布式数据集
A Resilient Distributed Dataset(RDD), the basic abstraction in Spark. Represents an immutable,*partitioned collection of elements that can be operated on in parallel.
*#----这个类中包含了基础的操作算子,对scala中算子在RDD上进行了重构
This class contains the