当前位置:网站首页>Spark学习(2)-Spark环境搭建-Local
Spark学习(2)-Spark环境搭建-Local
2022-07-31 14:06:00 【-------江湖-------】
1 基本原理
本质:启动一个JVM Process进程(一个进程里面有多个线程),执行任务Task。
- Local模式可以限制模拟Spark集群环境的线程数量, 即
Local[N]
或Local[*]
。 - 其中N代表可以使用N个线程,每个线程拥有一个cpu core。如果不指定N,则默认是1个线程(该线程有1个core)。 通常Cpu有几个Core,就指定几个线程,最大化利用计算能力。
- 如果是local[*],则代表按照Cpu最多的Cores设置线程数。
Local 下的角色分布:
- 资源管理:
Master:Local进程本身
Worker:Local进程本身 - 任务执行:
Driver:Local进程本身
Executor:不存在,没有独立的Executor角色, 由Local进程(也就是Driver)内的线程提供计算能力
PS: Driver也算一种特殊的Executor, 只不过多数时候, 我们将Executor当做纯Worker对待, 这样和Driver好区分(一类是管理 一类是工人)。
注意: Local模式只能运行一个Spark程序, 如果执行多个Spark程序, 那就是由多个相互独立的Local进程在执行。
2 搭建
2.1 下载地址
2.2 条件
- Python推荐3.8
- JDK 1.8
2.3 Anaconda On Linux 安装
2.4 解压
解压下载的Spark安装包
`tar -zxvf spark-3.2.0-bin-hadoop3.2.tgz -C /export/server/`
2.5 环境变量
配置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
中:
2.6 设置软链接
ln -s /export/server/spark-3.2.0-bin-hadoop3.2 /export/server/spark
2.7 测试
bin/pyspark
bin/pyspark 程序, 可以提供一个 交互式
的 Python解释器环境, 在这里面可以写普通python代码, 以及spark代码。
如图:
在这个环境内, 可以运行spark代码
图中的: parallelize
和 map
都是spark提供的APIsc.parallelize([1,2,3,4,5]).map(lambda x: x + 1).collect()
2.8 WEB UI (4040)
Spark程序在运行的时候, 会绑定到机器的4040
端口上,如果4040端口被占用, 会顺延到4041 … 4042…
4040端口是一个WEBUI端口, 可以在浏览器内打开:
输入:服务器ip:4040
即可打开:
打开监控页面后, 可以发现 在程序内仅有一个Driver,因为我们是Local模式, Driver即管理 又 干活。
同时, 输入jps:
可以看到local模式下的唯一进程存在,这个进程 即是master也是worker。
2.9 bin/spark-shell
同样是一个解释器环境, 和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语言的解释器环境。
2.10 bin/spark-submit (PI)
作用: 提交指定的Spark代码到Spark环境中运行。
使用方法:
# 语法
bin/spark-submit [可选的一些选项] jar包或者python代码的路径 [代码的参数]
# 示例
bin/spark-submit /export/server/spark/examples/src/main/python/pi.py 10
# 此案例 运行Spark官方所提供的示例代码 来计算圆周率值. 后面的10 是主函数接受的参数, 数字越高, 计算圆周率越准确.
对比
边栏推荐
- Samba 远程命令执行漏洞(CVE-2017-7494)
- 技能大赛训练题: 子网掩码划分案例
- MySQL [aggregate function]
- 常用工具命令速查表
- IDEA connects to MySQL database and uses data
- 龟速乘【模板】
- 自制的数据库安全攻防题,相关靶机自己制作
- OAuth2:使用JWT令牌
- Analysis of the startup source code of hyperf (2) - how the request reaches the controller
- MySQL 23 classic interviews hang the interviewer
猜你喜欢
Linux bash: redis-server: command not found
3.爬虫之Scrapy框架1安装与使用
Selenium自动化测试之Selenium IDE
Redis与分布式:主从复制
一篇文章讲清楚!数据库和数据仓库到底有什么区别和联系?
Shang Silicon Valley-JVM-Memory and Garbage Collection (P1~P203)
Five dimensions to start MySQL optimization
LeetCode·304竞赛·6132·使数组中所有元素都等于零·模拟·哈希
最近很火的国产接口神器Apipost体验
DELL SC compellent 康贝存储系统怎么抓取配置信息
随机推荐
组合系列--有排列就有组合
新款现代帕里斯帝预售开启,安全、舒适一个不落
C语言基础练(九九乘法表)与打印不同星号图案
C# using ComboBox control
【Pytorch】torch.argmax()用法
Shang Silicon Valley-JVM-Memory and Garbage Collection (P1~P203)
Sentinel限流和异常处理
MySQL玩到这种程度,难怪大厂抢着要!
The recently popular domestic interface artifact Apipost experience
Nuget打包并上传教程
[QNX Hypervisor 2.2用户手册]9.14 safety
leetcode:2032. 至少在两个数组中出现的值
机器学习模型验证:被低估的重要一环
技能大赛训练题:域用户和组织单元的创建
线程池的使用二
VU 非父子组件通信
C#高级--委托
Redis与分布式:哨兵模式
C# control ToolStripProgressBar usage
SetoolKit User Guide