Spark

1.spark基础

1.1 spark介绍

  1. 概念:基于内存的分布式计算引擎
  2. 发展史: 
    1. 目前更新到了3版本,3.5版本
    2. 2009年开发spark,2016年更新到2版本,2019年更新到3版本
  3. 和hadoop相比
    1. hadoop是基础平台,包含HDFS/MapReduce/Yarn;spark是计算引擎
    2. MR是基于磁盘计算;spark是基于内存计算
    3. MR的task是以进程方式启动;spark的task是以线程方式启动
    4. MR是进行离线计算;spark可以进行离线计算和实时计算

1.2 spark特性

  1. 高效性
  2. 易用性
  3. 兼容性
    1. 兼容多种操作系统
    2. 兼容多种计算方式
  4. 通用性
    1. 支持多种计算方式
    2. 支持多种开发方式

1.3 spark架构

  1. 计算流程
    1. spark on yarn 模式
      1. 有yarn资源调度工具管理spark集群
      2. 计算流程和MR计算流程基本一样
    2. spark on standalone 模式 
      1. 节点主从
        1. clutster manager : 主机点 
        2. worker node : 从节点
      2. 两个进程
        1. driver :负责管理计算任务
        2. executor : 负责执行计算任务
  2. 组成架构
    1. spark core   基于rdd计算
    2. spark sql   基于dataframe/database计算
    3. spark ml/mllib   机器学习计算
    4. spark/structured streaming   流计算
    5. spark graphx 图计算

1.4 spark 部署方式

  1. Local模式
    1. 又称本地模式
    2. saprk应用程序使用一台服务器资源,测试环境
  2. 集群模式
    1. spark on standalone 模式 
      1. 集群单机模式(一个主节点)
      2. 借助zk(zookeeper)搭建spark HA高可用模式
    2. spark on yarn 模式
    3. spark on mesos 模式

1.5 spark 开发方式

  1. 交互式开发
    1. 先启动hadoop(start-all.sh)
    2. pyspark
  2. 脚本式开发
    1. 编写python脚本,执行spark应用程序
    2. python3(解析器)  xxx.py脚本

1.6 spark 远程开发配置

  1. 配置ssh远程连接 :设置  --> 工具 -->ssh配置
  2. 选择服务器的python解析器 
    1. 设置-->项目:xxx -->python interpreter --> 添加ssh的pythhon解析器
    2. 选择系统python解析器 --> 同步文件夹
  3. 配置sftp服务:pycharm 上方工具   -->  部署

1.7 不同部署模式的spark操作

  1. Local模式
    1. 前期准备条件  开启hadoop集群(HDFS)
    2. 交互式开发
      1. pyspark  --master local[2]
      2. spark-submit --master local[2] a.py
    3. 脚本式开发:sc = SparkContext(master="local[2]") 
  2.  spark on standalone 集群单机模式
    1.   前期准备条件
      1. 启动zk(zkserver.sh start)
      2. 启动standalone服务(spark/sbin/start-all.sh)   -- (master和worker服务)
    2. 交互式开发
      1. pyspark --master spark://node1:7077

      2. spark-submit --master spark://node1:7077 a.py

    3. 脚本式开发 : sc = SparkContext(master="spark://node1:7077")

  3. spark on standalone 集群高可用模式(两台主机 : master主节点)

    1. 前期准备条件

      1. 启动zk(zkServer.sh start)

      2. 启动standalone服务(spark/sbin/start-all.sh) -- (master和worker服务)

      3. 启动备用master(node2:spark/sbin/start-master.sh)    --(master服务)

    2. 交互式开发

      1. pyspark --master spark://node1:7077,node2:7077

      2. spark-submit --master spark://node1:7077,node2:7077 a.py

    3. 脚本式开发:sc = SparkContext(master="spark://node1:7077,node2:7077")

  4. spark on yarn 集群模式

    1. 前期准备条件: 开启hadoop集群(Yarn)

    2. 交互式开发 : 

      1. pyspark --master yarn

      2. spark-submit --master yarn a.py

    3. 脚本式开发 : sc = SparkContext(master="yarn")

1.8 WEB UI

  1. 192.168.88.100:4040 : 查看正在运行的应用程序(交互式开发)
  2. 192.168.88.100:18080

    • 启动历史服务(spark/sbin/start-history-server.sh)

    • 查看历史的应用程序

  3. 192.168.88.100:8080

    • 查看spark的master节点信息(standalone集群模式)

  4. 192.168.88.100:8088

    • 查看hadoop管理界面

1.9 指令参数

  1. 作用
    1. 设置spark应用程序的配置

  2. 语法
    1. spark指令 --参数名 参数值

  3. 注意点

    • 在交互式开发中都生效

    • 在脚本式开发中部分生效

  4. 常用参数

    • --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进程

  1. driver

    • 创建sc对象时会创建出driver进程

    • 管理计算任务

    • 向资源调度工具的主服务申请计算资源

    • 创建executor进程

  2. executor

    • 由driver进程创建

    • 执行计算任务

      • driver将任务以线程方式交给executor进行执行

    • 设置driver和executor参数

      • 只能在交互式开发中设置

      • spark-submit --master yarn --driver-cores 2 --num-executors 3 a.py

1.11 spark-submint指令

  1. 作用:执行spark的脚本式开发的应用程序

  2. 语法  spark-submit --参数名 参数值 a.py

  3. --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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值