本质:启动一个JVM Process进程(一个进程里面有多个线程),执行任务Task。
Local[N] 或 Local[*]。Local 下的角色分布:
PS: Driver也算一种特殊的Executor, 只不过多数时候, 我们将Executor当做纯Worker对待, 这样和Driver好区分(一类是管理 一类是工人)。
注意: Local模式只能运行一个Spark程序, 如果执行多个Spark程序, 那就是由多个相互独立的Local进程在执行。
解压下载的Spark安装包
`tar -zxvf spark-3.2.0-bin-hadoop3.2.tgz -C /export/server/`
配置Spark由如下5个环境变量需要设置:
SPARK_HOME: 表示Spark安装路径在哪里PYSPARK_PYTHON: 表示Spark想运行Python程序, 那么去哪里找python执行器JAVA_HOME: 告知Spark Java在哪里HADOOP_CONF_DIR: 告知Spark Hadoop的配置文件在哪里HADOOP_HOME: 告知Spark Hadoop安装在哪里这5个环境变量 都需要配置在: /etc/profile中:

PYSPARK_PYTHON和 JAVA_HOME 需要同样配置在: /root/.bashrc中:

ln -s /export/server/spark-3.2.0-bin-hadoop3.2 /export/server/spark


bin/pyspark 程序, 可以提供一个 交互式的 Python解释器环境, 在这里面可以写普通python代码, 以及spark代码。

如图:

在这个环境内, 可以运行spark代码
图中的: parallelize 和 map 都是spark提供的API
sc.parallelize([1,2,3,4,5]).map(lambda x: x + 1).collect()
Spark程序在运行的时候, 会绑定到机器的4040端口上,如果4040端口被占用, 会顺延到4041 … 4042…

4040端口是一个WEBUI端口, 可以在浏览器内打开:
输入:服务器ip:4040 即可打开:

打开监控页面后, 可以发现 在程序内仅有一个Driver,因为我们是Local模式, Driver即管理 又 干活。
同时, 输入jps:

可以看到local模式下的唯一进程存在,这个进程 即是master也是worker。
同样是一个解释器环境, 和bin/pyspark不同的是, 这个解释器环境 运行的不是python代码, 而是scala程序代码。
scala> sc.parallelize(Array(1,2,3,4,5)).map(x=> x + 1).collect()
res0: Array[Int] = Array(2, 3, 4, 5, 6)
这个是用于scala语言的解释器环境。
作用: 提交指定的Spark代码到Spark环境中运行。
使用方法:
# 语法
bin/spark-submit [可选的一些选项] jar包或者python代码的路径 [代码的参数]
# 示例
bin/spark-submit /export/server/spark/examples/src/main/python/pi.py 10
# 此案例 运行Spark官方所提供的示例代码 来计算圆周率值. 后面的10 是主函数接受的参数, 数字越高, 计算圆周率越准确.
对比
