Spark大数据分析实战 第2章 初识Spark
所属分类 spark
浏览量 892
大数据开发总体架构
什么是Spark
Spark主要组件
Spark运行时架构
Spark集群搭建与测试
Spark应用程序的提交
Spark Shell的使用
大数据开发总体架构
业务层 |
数据可视化 业务逻辑处理 |
任务调度层 |
crontab oozie |
数据计算层 |
mapreduce hive
spark sparkMLIB sparkSQL sparkR sparkStreaming
|
资源管理层 |
YARN |
数据存储层 |
HDFS hbase ES |
数据传输层 |
flume sqoop kafka |
数据来源层 |
mysql 日志文件 视频文档等非结构化数据 |
什么是Spark
快速 通用 可扩展 分布式计算框架
基于内存计算的大数据并行计算框架
SparkSQL SparkStreaming GraphX MLlib
与MapReduce相比,Spark支持包括Map和Reduce在内的更多操作
这些操作相互连接形成一个有向无环图(Directed Acyclic Graph DAG)
各个操作的中间数据保存在内存中,因此比MapReduce更加快
使用先进的DAG调度器、查询优化器和物理执行引擎
高效的实现批处理和流数据处理
Spark特点
快
与MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上
Spark实现了高效的DAG(有向无环图)执行引擎,基于内存来高效处理数据流
易用性
支持Java Python和Scala API,支持超过80种算子,快速构建不同的应用
支持交互式的shell Python和Scala
通用
提供了统一的解决方案
Spark可以用于批处理 交互式查询(Spark SQL) 实时流处理(Spark Streaming) 机器学习(Spark MLlib)和图计算(GraphX)
这些不同类型的处理都可以在同一个应用中无缝使用
到处运行
Spark可以使用独立集群模式运行(自带的独立资源调度器,Standalone模式)
也可以运行在Amazon EC2、Hadoop YARN、Kubernetes之上
并且可以访问HDFS、Cassandra、HBase、Hive等数据源中的数据
Spark主要组件
Spark Core 是一个对由很多计算任务组成的、运行在多个工作机器或者一个计算集群上的应用进行调度、分发以及监控的计算引擎
工具层 |
sparkSQL streaming mlib graphx |
计算层 |
spark core |
调度层 |
standalone YARN
|
存储层 |
HDFS hbase S3 |
Spark运行时架构
本地(单机)模式
Standalone
Spark On YARN
YARN集群架构
主/从(Master/Slave)架构
由ResourceManager NodeManager ApplicationMaster和Container等组件构成
YARN负责资源的管理和调度,运行哪种应用程序由用户自己实现
在YARN上可同时运行MapReduce程序和Spark程序
YARN 对每一个程序实现 资源 隔离
Spark与MapReduce可以运行于同一个集群中,共享集群存储资源与计算资源
YARN集群 应用程序执行流程
向ResourceManager提交应用程序
启动ApplicationMaster
ApplicationMaster 向 ResourceManager 申请资源
运行task
应用程序提交的方式
Driver(主控进程)在集群中的位置不同
client和cluster,默认 client
Spark集群搭建与测试
node01 master
node02 worker
node03 worker
slaves文件
cp slaves.template slaves
vi slaves
node02
node03
spark-env.sh文件
cp spark-env.sh.template spark-env.sh
vi spark-env.sh
export JAVA_HOME=/opt/modules/jdk1.8.0_144
export SPARK_MASTER_HOST=node01
export SPARK_MASTER_PORT=7077
在主节点node01 执行,启动Spark集群
$ sbin/start-all.sh
jps查看进程 三个节点的进程分别为 Master Worker Worker
Spark WebUI
http://node01:8080
客户端应用程序提交工具spark-submit
bin/spark-submit [options] < app jar > [app options]
options 传递给spark-submit的参数
app jar 提交的程序jar包(或Python脚本文件)的位置
app options 应用程序参数 main()方法中的参数
bin/spark-submit --master spark://node01:7077 --class org.apache.spark.examples.SparkPi ./examples/jars/spark-examples_2.11-2.4.0.jar
--master 指定Master节点 连接地址
spark://host:port Standalone模式 默认端口 7077
yarn 连接到YARN集群
local 本地模式,使用1个CPU核心
local[N] 本地模式,使用N个CPU核心
local[*] 本地模式
其他参数
--deploy-mode
提交方式 client 或 cluster
client 在本地客户端启动Driver程序
cluster 在集群的工作节点上启动Driver程序
默认为 client
--class 应用程序的主类(Java或Scala程序)
--name 应用程序名称,会在Spark Web UI中显示
--jars 应用依赖的第三方的jar包列表,以逗号分隔
--files 需要放到应用工作目录中的文件列表,以逗号分隔 一般用来放需要分发到各节点的数据文件
--conf 设置任意的SparkConf配置属性,格式为 属性名=属性值
--properties-file
加载外部包含键值对的属性文件
如果不指定,默认将读取Spark安装目录下的conf/spark-defaults.conf文件中的配置
--driver-memory
Driver进程使用的内存 ,例如 512M 或 1G 单位不区分大小写 ,默认 1024M
--executor-memory
每个Executor进程使用的内存 默认1G
--driver-cores
Driver进程使用的CPU核心数,仅在集群模式中使用 默认为1
--executor-cores
每个Executor进程所用的CPU核心数,默认为1
--num-executors
Executor进程数量,默认为2
如果开启动态分配,则初始Executor的数量至少是此参数配置的数量
此参数仅在Spark On YARN模式中使用
bin/spark-submit \
--master spark://centos01:7077 \
--deploy-mode cluster \
--class org.apache.spark.examples.SparkPi \
--driver-memory 512m \
--executor-memory 1g \
--executor-cores 2 \
./examples/jars/spark-examples_2.11-2.4.0.jar
Spark Shell 使用
Standalone模式
bin/spark-shell --master spark://node01:7077
Spark WebUI
http://node01:8080
Spark On YARN模式
bin/spark-shell --master yarn
Spark大数据分析实战 第1章 Scala基础
spark-shell 简单使用
上一篇
下一篇
Spark大数据分析实战 第1章 Scala基础
指数估值工具
编程式绘图工具mermaid
Spark Standalone 的两种提交方式
Spark大数据分析实战 第3章 RDD弹性分布式数据集
Spark大数据分析实战 第4章 Spark内核源码分析