Yarn Interpreter模式可能是Flink on Zeppelin上生产环境的最后一块拼图。需要说明的一点是这里的Yarn Interpreter模式和Flink的Yarn模式不是一个概念。下面我会讲讲为什么我们需要Yarn Interpreter模式以及怎么配置使用它。
Overview
我们都知道Flink支持Yarn模式,可以把JobManager和TaskManager跑在Yarn container里。但是Flink的client 进程只能跑在Yarn集群外的client机器上,这是和Spark的Yarn cluster模式的很大不同。在Spark的Yarn cluster模式里,driver也会跑在Yarn container里,所以你可以提交任意多个Spark app,但是在Flink这边你不行,因为所有的client进程都在本地,如果你要跑多个long running的client 进程,那么有可能你的客户端机器的资源会爆掉。那么我们有没有办法让Flink像Spark一样把提交job的client进程也跑在Yarn container里呢?Zeppelin的答案就是Yarn Interpreter模式。
Spark Yarn-Cluster Mode
Flink Yarn Mode
架构介绍
下面这张图是原始的部署架构:非Yarn Interprete模式。Flink Interpreter进程不是跑在Yarn集群里,而是跑在和Zeppelin一样的机器上。
这是我们的目标架构: Yarn Interpreter模式。Flink Interpreter 进程会跑在Yarn container里。
如何配置Yarn Interpreter 模式
要启动Yarn Interpreter模式,那么需要做到以下几点:
安装Hadoop client (hadoop 2和3都支持)
配置USE_HADOOP为true,配置HADOOP_CONF_DIR
把 $HADOOP_HOME/bin放到环境变量 PATH里. 因为Zeppelin会调用命令hadoop classpat来拿到所有的hadoop jar,然后放在Zeppelin的CLASSPATH里。
除了这几个配置,你还需要可以配置下面这些参数来控制
interpreter process (下面的table要横过来看)
Name | Default Value | Description |
zeppelin.interpreter.yarn .resource.memory | 1024 | memory for interpreter process, unit: mb |
zeppelin.interpreter.yarn .resource.cores | 1 | cpu cores for interpreter proces |
zeppelin.interpreter .yarn.queue | default | yarn queue name |
下面这个视频做了详细的说明。
如果有碰到任何问题,请加入下面这个钉钉群讨论。
Apache Zeppelin公众号