我已经在本地系统中创建了Zeppelin docker映像,并通过maven存储库配置了Spark Interpreter,并运行了Zeppelin。但是当我停止Docker并再次运行时,解释器绑定消失了。如何解决这个问题?我希望一次性解释器绑定,以便每当我停止docker并再次运行时,它都必须按原样存储这些解释器绑定。
答案 0 :(得分:0)
解释器绑定存储在conf/interpreter.json
中。需要使用外部interpreter.json
文件。
答案 1 :(得分:0)
将文件挂载到docker run很容易-只需将其传递到--volume参数即可。但是在齐柏林飞艇的情况下,那里已经预先配置了一些参数,因此用空文件替换它很可能不是您想要实现的。因此,我建议您首先从容器中获取具有默认内容的文件,然后在下一次运行时将其安装到该文件。请按照分步说明进行操作:
首先,我们为嵌套运行准备默认配置。
sudo docker run -d --name zeppelin-test apache/zeppelin:0.8.1
mkdir -p conf
sudo docker zeppelin-test cat /zeppelin/conf/interpreter.json > conf/interpreter.json
注释1 :它将不会用于工作,因此大多数参数都不重要。仅需进行一次设置即可!
注释2 :由于不幸的是,该配置在启动时就填充了,因此您无法像
那样在单次运行中获得sudo docker run --rm apache/zeppelin:0.8.1 cat /zeppelin/conf/interpreter.json
现在我们可以将其用作绑定安装。
--volume $(pwd)/conf/interpreter.json:/zeppelin/conf/interpreter.json
但是我建议使用docker-compose,因此在volumes:
键下有一个选项,如- ./conf/interpreter.json:/zeppelin/conf/interpreter.json
。完整示例:
version: '3.7'
services:
zeppelin:
image: apache/zeppelin:0.8.1
ports:
- "7077:7077"
- "8080:8080"
volumes:
- ./logs:/logs
- ./notebook:/notebook
- ./conf/interpreter.json:/zeppelin/conf/interpreter.json
environment:
ZEPPELIN_NOTEBOOK_DIR: /notebook
ZEPPELIN_LOG_DIR: /logs
然后从该目录运行:
docker-compose up -d
答案 2 :(得分:0)
您需要3个卷来进行持久配置,包括解释器,笔记本和日志。
docker volume create zeppelin-conf
docker volume create zeppelin-notebook
docker volume create zeppelin-logs
运行已安装上述卷的容器。
docker run -d --restart always -p 8080:8080 -v zeppelin-conf:/zeppelin/conf -v zeppelin-notebook:/zeppelin/notebook -v zeppelin-log:/zeppelin/logs apache/zeppelin:0.8.1
如果您只想保留解释器,则可以使用以下几行:
docker volume create zeppelin-conf
docker run -d --restart always -p 8080:8080 -v zeppelin-conf:/zeppelin/conf apache/zeppelin:0.8.1
配置文件,包括位于以下位置的解释器:/zeppelin/conf
笔记本:/zeppelin/notebook
日志:/zeppelin/logs