1.spark基础
1.1 spark介绍
- 概念:基于内存的分布式计算引擎
- 发展史:
- 目前更新到了3版本,3.5版本
- 2009年开发spark,2016年更新到2版本,2019年更新到3版本
- 和hadoop相比
- hadoop是基础平台,包含HDFS/MapReduce/Yarn;spark是计算引擎
- MR是基于磁盘计算;spark是基于内存计算
- MR的task是以进程方式启动;spark的task是以线程方式启动
- MR是进行离线计算;spark可以进行离线计算和实时计算
1.2 spark特性
- 高效性
- 易用性
- 兼容性
- 兼容多种操作系统
- 兼容多种计算方式
- 通用性
- 支持多种计算方式
- 支持多种开发方式
1.3 spark架构
- 计算流程
- spark on yarn 模式
- 有yarn资源调度工具管理spark集群
- 计算流程和MR计算流程基本一样
- spark on standalone 模式
- 节点主从
- clutster manager : 主机点
- worker node : 从节点
- 两个进程
- driver :负责管理计算任务
- executor : 负责执行计算任务
- 节点主从
- spark on yarn 模式
- 组成架构
- spark core 基于rdd计算
- spark sql 基于dataframe/database计算
- spark ml/mllib 机器学习计算
- spark/structured streaming 流计算
- spark graphx 图计算
1.4 spark 部署方式
- Local模式
- 又称本地模式
- saprk应用程序使用一台服务器资源,测试环境
- 集群模式
- spark on standalone 模式
- 集群单机模式(一个主节点)
- 借助zk(zookeeper)搭建spark HA高可用模式
- spark on yarn 模式
- spark on mesos 模式
- spark on standalone 模式
1.5 spark 开发方式
- 交互式开发
- 先启动hadoop(start-all.sh)
- pyspark
- 脚本式开发
- 编写python脚本,执行spark应用程序
- python3(解析器) xxx.py脚本
1.6 spark 远程开发配置
- 配置ssh远程连接 :设置 --> 工具 -->ssh配置
- 选择服务器的python解析器
- 设置-->项目:xxx -->python interpreter --> 添加ssh的pythhon解析器
- 选择系统python解析器 --> 同步文件夹
- 配置sftp服务:pycharm 上方工具 --> 部署
1.7 不同部署模式的spark操作
- Local模式
- 前期准备条件 开启hadoop集群(HDFS)
- 交互式开发
- pyspark --master local[2]
- spark-submit --master local[2] a.py
- 脚本式开发:sc = SparkContext(master="local[2]")
- spark on standalone 集群单机模式
- 前期准备条件
- 启动zk(zkserver.sh start)
- 启动standalone服务(spark/sbin/start-all.sh) -- (master和worker服务)
- 交互式开发
-
pyspark --master spark://node1:7077
-
spark-submit --master spark://node1:7077 a.py
-
-
脚本式开发 : sc = SparkContext(master="spark://node1:7077")
- 前期准备条件
-
spark on standalone 集群高可用模式(两台主机 : master主节点)
-
前期准备条件
-
启动zk(zkServer.sh start)
-
启动standalone服务(spark/sbin/start-all.sh) -- (master和worker服务)
-
启动备用master(node2:spark/sbin/start-master.sh) --(master服务)
-
-
交互式开发
-
pyspark --master spark://node1:7077,node2:7077
-
spark-submit --master spark://node1:7077,node2:7077 a.py
-
-
脚本式开发:sc = SparkContext(master="spark://node1:7077,node2:7077")
-
-
spark on yarn 集群模式
-
前期准备条件: 开启hadoop集群(Yarn)
-
交互式开发 :
-
pyspark --master yarn
-
spark-submit --master yarn a.py
-
-
脚本式开发 : sc = SparkContext(master="yarn")
-
1.8 WEB UI
- 192.168.88.100:4040 : 查看正在运行的应用程序(交互式开发)
-
192.168.88.100:18080
-
启动历史服务(spark/sbin/start-history-server.sh)
-
查看历史的应用程序
-
-
192.168.88.100:8080
-
查看spark的master节点信息(standalone集群模式)
-
-
192.168.88.100:8088
-
查看hadoop管理界面
-
1.9 指令参数
- 作用
-
设置spark应用程序的配置
-
- 语法
-
spark指令 --参数名 参数值
-
-
注意点
-
在交互式开发中都生效
-
在脚本式开发中部分生效
-
-
常用参数
-
--master:选择部署方式
-
--name : 设置应用程序名称
-
--num-executors :调整executor节点数
-
--executor-cores:调整executor核数
-
--executor-memory:调整executor内存
-
--driver-memory:调整driver内存
-
--driver-cores:调整driver核数
-
--deploy-mode:选择client和cluster模式
-
--conf "key=value" 包含特殊字符或者空格,需要使用引号来包裹整个键值对
-
1.10 dirver和executor进程
-
driver
-
创建sc对象时会创建出driver进程
-
管理计算任务
-
向资源调度工具的主服务申请计算资源
-
创建executor进程
-
-
executor
-
由driver进程创建
-
执行计算任务
-
driver将任务以线程方式交给executor进行执行
-
-
设置driver和executor参数
-
只能在交互式开发中设置
-
spark-submit --master yarn --driver-cores 2 --num-executors 3 a.py
-
-
1.11 spark-submint指令
-
作用:执行spark的脚本式开发的应用程序
-
语法 spark-submit --参数名 参数值 a.py
-
--deploy-mode
-
在yarn集群模式中使用
-
client
-
driver在提交服务器上创建
-
pycharm运行的spark应用程序
-
spark-submit --master yarn --num-executors 3 --deploy-mode client a.py
-
-
cluster
-
dirver时由yarn选择资源充足的服务器创建
-
生产环境中使用, 避免资源不足导致driver创建失败问题
-
spark-submit --master yarn --num-executors 3 --deploy-mode cluster a.py
-
-