spark概述及基础

    科技2026-04-18  2

    第二章 Spark开发环境及运行模式

     

    目录

    Spark

    前言

    一、运行模式

    1. local模式

    2. standalone模式

    3. yarn模式

    4. Spark On Mesos模式

    二、开发环境

    1. IDE

    2. Spark-shell

    3. Spark-submit

    总结

     

    前言

    Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架,提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求。


    一、运行模式

    1. local模式

    只安装运行在一台电脑,通常用于练手和测试。

    需要设置的master参数含义:

    local:所有计算运行在一个线程中;

    local[n]:指定n个线程来运行计算;

    local[*]:按cpu最多core来设置线程数;

    2. standalone模式

    构建一个由Master+Slave构成的Spark集群,Spark运行在集群中。但只依赖spark框架,不依赖hadoop。需要集群中每个节点都安装spark。

    运行官方求PI代码:

    bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master spark://hadoop102:7077 \ --executor-memory 1G \ --total-executor-cores 2 \ ./examples/jars/spark-examples_2.11-2.1.1.jar \ 100

    3. yarn模式

    Spark客户端直接连接Yarn,不需要额外构建Spark集群,也只需要安装一个节点。有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点。

    yarn-client:Driver程序运行在客户端,适用于交互、调试,希望立即看到app的输出

    yarn-cluster:Driver程序运行在由RM(ResourceManager)启动的AP(APPMaster)适用于生产环境。

     

    4. Spark On Mesos模式

    针对低版本hadoop,升级有风险,又想更换为spark计算引擎,可采用Mesos。

     

    二、开发环境

    1. IDE

    最常用开发模式,一般先在ide中开发调试,再打成jar包提交到集群spark-submit运行,要注意环境配置和导入包依赖;

    2. Spark-shell

    客户端环境一般是测试用,逐行提交运行命令;

    3. Spark-submit

    打成的jar包提交运行,也可以写进脚本,调度运行;最全环境,但运行要注意配置依赖。

    bin/spark-submit \

    --class <main-class>

    --master <master-url> \

    --deploy-mode <deploy-mode> \

    --conf <key>=<value> \

    ... # other options

    <application-jar> \

    [application-arguments]

    参数说明:

    --master 指定Master的地址,默认为Local

    --class: 你的应用的启动类 (如 org.apache.spark.examples.SparkPi)

    --deploy-mode: 是否发布你的驱动到worker节点(cluster) 或者作为一个本地客户端 (client) (default: client)*

    --conf: 任意的Spark配置属性, 格式key=value. 如果值包含空格,可以加引号“key=value”

    application-jar: 打包好的应用jar,包含依赖. 这个URL在集群中全局可见。 比如hdfs:// 共享存储系统, 如果是 file:// path, 那么所有的节点的path都包含同样的jar

    application-arguments: 传给main()方法的参数

    --executor-memory 1G 指定每个executor可用内存为1G

    --total-executor-cores 2 指定每个executor使用的cup核数为2个

     


    总结

    开发环境常用的是ide下开发打包到yarn集群运行,其他较为少用。测试可先local模式,运行成功后yarn模式也可能会报错!

    Processed: 0.012, SQL: 9