You need to enable JavaScript to run this app.
导航
EMR Serverless Zeppelin 最佳实践
最近更新时间:2025.06.23 16:33:40首次发布时间:2025.06.23 16:33:40
我的收藏
有用
有用
无用
无用

Apache Zeppelin 是一个支持 20 多种语言 Notebook 的后端,可以用于数据摄入、发现、转换及分析,也能够实现数据的可视化,如饼图、柱状图、折线图等。典型使用场景是通过开发 Zeppelin 的代码片段或者 SQL,通过提交到后端实现实时交互,并通过编写 Notebook 的 Paragraph 集合,借助调度系统实现定时调度任务。参考文档:火山引擎基于 Zeppelin 的 Flink/Spark 云原生实践

部署 Zeppelin 环境

安装 Spark Submit

serverless.spark.region=cn-beijing
serverless.spark.endpoint=https://open.volcengineapi.com
serverless.spark.service=emr_serverless
serverless.cross.vpc.driver.only.enabled=true
las.cross.vpc.access.enabled=true
spark.kubernetes.container.image=emr-serverless-online-cn-beijing.cr.volces.com/emr-serverless-spark/spark:3.5.1-py3.12-ubuntu20.04-325-zeppelin-614
spark.kubernetes.driverEnv.ZEPPELIN_HOME=/opt/zeppelin
spark.executorEnv.ZEPPELIN_HOME=/opt/zeppelin

serverless.spark.access.key=您的AK
serverless.spark.secret.key=您的SK
serverless.spark.tos.bucket=您的bucket

las.cross.vpc.vpc.id=您的VPC id
las.cross.vpc.subnet.id=您的子网id
las.cross.vpc.security.group.id=您的ECS安全组Id

参数

简介

备注

serverless.spark.access.key

您的账号 Access Key

serverless.spark.secret.key

您的账号 Secret Key

serverless.spark.tos.bucket

您的火山tos桶名称,提交作业时,会将您本地的一些jar包,传到您的tos桶中,用于Spark任务执行

las.cross.vpc.vpc.id

您的ECS 所在的VPC id,例如vpc-rrhkcgcixu68v0x590w4a5i

火山EMR Serverless Spark会基于您的vpc和子网,自动在Spark任务里挂载一块辅助网卡,用于Zeppelin Server 和 Spark Driver间网络互相访问

las.cross.vpc.subnet.id

ECS 所在VPC 下的的子网id,例如subnet-rr7f617f7w1sv0x593r2cu7

las.cross.vpc.security.group.id

ECS 所在VPC下的安全组id,例如sg-rrhkcm9ma03kv0x58p8ssnj,一般与您ECS的安全组一致即可

安装配置 Zeppelin

  • 下载安装 Apache Zeppelin ,操作步骤参考:官方文档
# 下载
wget https://downloads.apache.org/zeppelin/zeppelin-0.12.0/zeppelin-0.12.0-bin-all.tgz

tar -zxvf zeppelin-0.12.0-bin-all.tgz

# 设置环境变量
vim /etc/profile

# 在文件末尾添加以下内容(路径需与实际安装目录一致)
export ZEPPELIN_HOME=/usr/local/zeppelin-0.12.0-bin-all
export PATH=$PATH:$ZEPPELIN_HOME/bin

# 使配置生效
source /etc/profile
  • 修改interpreter.sh脚本。
vim ${ZEPPELIN_HOME}/bin/interpreter.sh

# 在174行,if [[ -n "${SPARK_HOME}" ]]; then 左右添加一段代码:
if [[ -n "${SPARK_HOME}" ]]; then
  export SPARK_SUBMIT="${SPARK_HOME}/bin/spark-submit"
  export SPARK_SUBMIT_OPTIONS="--jars tos://emr-serverless-spark/spark/shared-lib/zeppelin/zeppelin-interpreter-shaded-0.11.1.jar,tos://emr-serverless-spark/spark/shared-lib/zeppelin/spark-scala-2.12-0.11.1.jar"
  export SPARK_CONF_DIR="${SPARK_HOME}/conf"
  SPARK_APP_JAR="tos://emr-serverless-spark/spark/shared-lib/zeppelin/spark-interpreter-0.11.1.jar"
  • 修改zeppelin-site.xml。
cp ${ZEPPELIN_HOME}/conf/zeppelin-site.xml.template ${ZEPPELIN_HOME}/conf/zeppelin-site.xml
vim ${ZEPPELIN_HOME}/conf/zeppelin-site.xml

# zeppelin.server.addr 改成 0.0.0.0;开放访问zeppelin ui

启动启动 Zeppelin

sh ${ZEPPELIN_HOME}/bin/zeppelin-daemon.sh restart

修改 Interpreters

  • 登陆 zeppelin 控制台-右上角-选择Interpreters-spark-修改配置项

配置项

修改点

spark.master

值设置为k8s

spark.shuffle.service.enabled

该配置项存在则删除,如无则忽略

spark.submit.deployMode

该配置项存在则删除,如无则忽略

spark.queue

提交的队列,默认是公共队列

Zeppelin 使用

获取 appid

Spark Basic Features

Spark SQL(Scala)

PySpark

读本地文件。

读tos文件。

SparkML

说明

需要镜像里安装:numpy、pandas、bokeh。

线性回归正常。

使用 shell

正常

使用 pip 安装依赖

pyspark 安装。

!pip3 install scipy

Python 安装。

pip3 install scipy

示例