4

我一直在使用PaperMill定期执行我的 python 笔记本。要执行计算密集型笔记本,我需要连接到在我的 EMR 集群中运行的远程内核。

在 Jupyter notebook 的情况下,我可以通过启动 jupyter 服务器来做到这一点,jupyter notebook --gateway-url=http://my-gateway-server:8888并且我可以在远程内核上执行我的代码。但是如何让我的本地 python 代码(通过 PaperMill)使用远程内核?在内核管理器中进行哪些更改以连接到远程内核?

我能找到的一个相关的 SO 答案在这里。这建议对远程服务器进行端口转发,并使用来自服务器的连接文件初始化 KernelManager。我无法做到这一点,因为blockingkernelmanagerIpython.zmp 中不再存在,我也更喜欢像 jupyter 那样的 HTTP 连接。

4

1 回答 1

2

Hacky 方法 - 设置一个 shell 脚本来执行以下操作:

  1. hadoop使用用户在您的 EMR 主节点上创建 python 环境
  2. 在您的环境中安装sparkmagic并按照 sparkmagic 的 README.md 文件中的说明配置所有内核
  3. 将您的笔记本复制到主节点/直接从 s3 位置使用它
  4. 与造纸厂一起运行:

    papermill s3://path/to/notebook/input.ipynb s3://path/to/notebook/output.ipynb -p param=1

如果您的集群主节点每次都相同,则第 1 步和第 2 步是一次要求。

稍微好一点的方法:

  1. 在 Jupyter 本身中设置远程内核:REMOTE KERNEL
  2. 通过选择此远程内核,使用 papermill 作为普通笔记本执行

我将这两种方法用于不同的用例,它们现在似乎工作正常。

于 2020-02-06T12:09:18.110 回答