Spark笔记本工作表未使用docker保存



当我使用docker启动一个spark笔记本并创建一个新的工作表时。下次我启动它时,工作表不在那里。

这是命令:

docker run -v /Users/pkerp/projects/chairliftplot/:/mnt -p 9000:9000 andypetrella/spark-notebook:0.2.0-spark-1.2.0-hadoop-1.0.4

以下是警告/信息:

15/02/09 08:38:12 WARN Remoting: Tried to associate with unreachable remote address [akka.tcp://Remote@127.0.0.1:41602]. Address is now gated for 5000 ms, all messages to this address will be delivered to dead letters. Reason: Connection refused: /127.0.0.1:41602
15/02/09 08:38:12 INFO remote.RemoteActorRefProvider$RemoteDeadLetterActorRef: Message [akka.remote.RemoteWatcher$Heartbeat$] from Actor[akka://NotebookServer/system/remote-watcher#-457307005] to Actor[akka://NotebookServer/deadLetters] was not delivered. [8] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.

这是配置错误还是其他问题?

编辑:

所以这个问题有几个方面

  1. 当使用ctrl-c关闭正在运行的docker容器时,它实际上仍然存在。当我用上面的命令重新运行它时,它会启动一个单独的新容器,该容器没有新创建的笔记本

这可以通过使用docker ps查看正在运行的容器列表、找到正在运行的一个容器并使用docker attach process_id附加到它来减轻。数据仍然存在。

  1. 使用装入的卷存储笔记本会导致权限问题。装载在容器中的目录只有所有者写入权限,其中所有者是user1000。spark笔记本以用户守护程序(用户id1)的身份运行

这是关于github上这个问题的长篇大论,但没有明确的解决方案。

Dockerfile将继续发展,但现在至少我们可以在docker容器之外备份笔记本电脑。

这将达到目的: docker run --rm -v /Users/pkerp/projects/chairliftplot:/opt/docker/notebooks/ext -p 9000:9000 andypetrella/spark-notebook:0.6.0-scala-2.10.4-spark-1.4.1-hadoop-2.6.0

以便文件夹Users/pkerp/projects/chairliftplot将包含spark笔记本列表中ext文件夹中的所有笔记本。

这意味着:

  • Users/pkerp/projects/chairliftplot中的所有笔记本在ext文件夹中都可见
  • ext文件夹中所有新创建的笔记本将在主机文件夹Users/pkerp/projects/chairliftplot上可用

当然,您也可以使用: docker run --rm -v /Users/pkerp/projects/chairliftplot:/opt/docker/notebooks -p 9000:9000 andypetrella/spark-notebook:0.6.0-scala-2.10.4-spark-1.4.1-hadoop-2.6.0 这将丢弃所有默认笔记本,只显示/Users/pkerp/projects/chairliftplot的内容。但是,通过这种方式所有新创建的笔记本电脑都将在主机中可用,无论它们是在哪个文件夹中创建的。

最新更新