Zeppelin Spark解释器原创
# 1. 背景
Spark是一个快速和通用的集群计算系统,性能是非优越,但是开发上线需要打包部署,当然对于工程化的固定流程,倒也不是非常繁琐。不过针对分析人员的灵活开发来说,执行起来就比较麻烦。
Zeppelin提供了交互式开发的Spark解释器。允许开发人群灵活的进行代码开发,提交集群运行,显示运行过程,运行结果可视化分析。
# 2. 资源列表
- spark-3.5.0
- zeppelin-0.11.2-bin-all
这里重点说明一下,spark和zeppelin的版本兼容问题。由于我部署的Spark版本较高,起初zeppelin安装的是0.10.0版本,各种调试后仍无法集成使用。后来切换到zeppelin最新版本0.11.2就可以正常使用了。
# 3. 部署Spark解释器
# 3.1. 修改配置文件
vim zeppelin-env.sh
export SPARK_HOME=/data/spark-3.5.0
export HADOOP_CONF_DIR=/data/hadoop-3.3.1/etc/hadoop
export HADOOP_HOME=/data/hadoop-3.3.1
export SPARK_SUBMIT_OPTIONS="--master yarn --deploy-mode cluster --executor-memory 1g --executor-cores 1 --num-executors 3 "
2
3
4
5
6
# 3.2. 添加Spark解释器
- 重点参数如下,其他参数可自行配置
name | value | 备注 |
---|---|---|
SPARK_HOME | /data/spark-3.5.0 | |
spark.master | yarn | |
spark.submit.deployMode | cluster | |
spark.app.name | Spark On Zeppelin | |
spark.driver.cores | 2 | |
spark.driver.memory | 4g | |
spark.executor.cores | 2 | 每个执行器分配的核数,根据事情情况来确定 |
spark.executor.memory | 6g | 每个执行器分配的使用内存,根据使用情况来确定 |
spark.executor.instances | 3 | 执行器实例个数,根据具体情况来确定,并不是越多越好 |
# 3.3. Zeppelin解释器运行模式
Zeppelin解释器(Interpreter)的运行模式有三种,Shared Mode(共享模式)、Scoped Mode(作用域模式)和Isolated Mode(隔离模式)
Shared Mode(共享模式):一般默认创建共享模式,Zeppelin只会运行一个单独的解释器JVM集成,并且是全局的。在所有note中,变量共享。这在协同开发过程中就会遇到很多麻烦,大家开发不同逻辑使用了相同的变量,造成数据会乱。一般生产环境尽量不使用这种模式。
Scoped Mode(作用域模式):Zeppelin仍然运行一个单独的解释器JVM进程,但在“per note”的范围内,每个笔记都在其自己的专用会话中运行。这意味着,尽管所有笔记都在同一个JVM进程中运行,但每个笔记都有自己独立的会话和变量空间。资源利用率较高,因为所有笔记共享同一个JVM进程。
Isolated Mode(隔离模式):对于“per note”的范围,每个笔记都运行一个单独的解释器进程。这意味着每个笔记都有自己完全隔离的会话和变量空间,确保了最高的隔离级别。资源利用率较低,因为每个笔记都有自己的JVM进程。
基于以上特性,我们选择Scoped Mode(作用域模式)。共享解释器,隔离变量。资源利用率较高。
- 02
- 2025-03-28拍婚纱照 原创04-02
- 03
- 2024-04-05的晚上 原创04-01