Yarn上的Zeppelin解释器
Zeppelin 能够在 yarn 容器中运行解释器进程。主要的好处是可扩展性,如果你运行大量的解释器进程,不会耗尽 Zeppelin 服务器主机的内存。
先决条件
以下是yarn解释器模式所需的。
- 已安装Hadoop客户端(支持2.x和3.x版本)。
$HADOOP_HOME/bin被放入PATH中。因为内部 Zeppelin 会运行命令hadoop classpath来获取所有 Hadoop 的 jar 包,并将它们放入 Zeppelin 的类路径中。- 在
zeppelin-env.sh中将USE_HADOOP设置为true。
配置
Yarn解释器模式需要为每个解释器设置。你可以将zeppelin.interpreter.launcher设置为yarn以在yarn模式下运行。
除此之外,你还可以指定其他属性,如下表所示。
| 名称 | 默认值 | 描述 |
|---|---|---|
| zeppelin.interpreter.yarn.resource.memory | 1024 | 解释器进程的内存,单位:mb |
| zeppelin.interpreter.yarn.resource.memoryOverhead | 384 | 在yarn解释器模式下,每个解释器进程分配的非堆内存量,除非另有说明,单位为MiB。这是用于VM开销、内部字符串、其他本地开销等的内存。 |
| zeppelin.interpreter.yarn.resource.cores | 1 | 解释器进程的CPU核心数 |
| zeppelin.interpreter.yarn.queue | default | yarn 队列名称 |
| zeppelin.interpreter.yarn.node.label.expression | 为解释器进程指定的yarn节点标签表达式 |
与非Yarn解释器模式(本地模式)的差异
yarn解释器模式与非yarn解释器模式(本地模式)之间存在几个差异
- 将为解释器进程分配新的yarn应用程序。
- 任何本地路径设置在yarn解释器进程中都不会起作用。例如,如果你在yarn解释器模式下运行python解释器,那么你需要确保
zeppelin.python的python可执行文件存在于yarn集群的所有节点中。因为python解释器可能会在任何节点上启动。 - 不要将其用于spark解释器。相反,使用spark内置的yarn-client或yarn-cluster,这更适合spark解释器。