使用Docker和Marathon的中微子ipyparallel发射器

ipyparallel_mesos的Python项目详细描述


#iPyparallel Mesos/Marathon Launcher

iPyparallel内置支持多个后端。这是使用Docker和Marathon将iPython群集启动到Mesos的后端。



conda channel
conda install--channel activisiongamescience ipyparallel廑u mesos
```

create new ipython profile
````
ipython profile create--parallel--profile=mesos
````

edit` ~/.ipython/profile廑u mesos/ipcluster廑config.py并添加
```
设置
c.marathonlauncher.marathon廑master廑url='http://marathon廑url:8080'廑url,并将端口设置为marathon master
c.marathonlauncher.marathon廑app廑group='/test/ipythonest/jdennison/'廑marathon应用程序组。每个群集都需要唯一,因此如果有多个用户部署群集,请确保他们选择自己的应用程序组。

='ipyparallel_mesos.launcher.marathoncontrollerlauncher'
c.ipclusterengines.engine_launcher_class='ipyparallel_mesos.launcher.marathonenginesetlauncher'

c.marathonlauncher.controller_docker_image='jdennison/ipyparallel marathon controller:dev''docker容器图像controller
c.marathonlauncher.engine_docker_image='jdennison/ipyparallel marathon engine:dev'引擎的docker映像。这是您应该安装自定义依赖项的位置

注意:如果你的引擎使用更多的内存,Docker容器将被内核杀死而不发出警告。
c.marathonlauncher.controller_memory=512限制Docker容器的内存量(兆字节)。注意:如果您的引擎使用更多的这个,Docker容器将被内核杀死而不会发出警告。
c.marathonlauncher.controller_config_port='1235'控制器为客户端和引擎公开的端口,以检索连接信息。注意,如果同一个集群上有多个用户,则需要更改
```


,而此新配置文件将与jupyter ipython cluster选项卡一起使用。您应该从命令行开始帮助调试。
```
ipcluster start--n=4--profile=mesos
````

>只要此命令启动,您就应该在前面设置的"马拉松应用程序"组下的马拉松用户界面中看到Docker容器。您现在可以用火做饭了。

在刚刚运行ipcluster的同一台计算机上打开一个新的终端会话。启动juypter或ipython会话。
```
import ipyparallel as ipp
rc=ipp.client(profile='mesos')


import socket
rc[:]。应用异步(socket.gethostname)。get_dict()应打印ipython引擎的主机。
```

运行ipcluster的终端有三个主要组件:客户端、控制器和引擎。请参阅[文档](https://ipyparallel.readthedocs.org/)了解更深入的内容。这个项目提供了两个docker容器来运行mesos集群中的控制器和引擎,以及从ipyparallel jupyter的cluster选项卡和ipcluster cli工具部署它们的新启动程序。而现有的Docker镜像在这里是为[控制器](https://hub.docker.com/r/jdennison/ipyparallel-marathon-controller/)和[引擎](https://hub.docker.com/r/jdennison/ipyparallel marathon-engine/)公开托管的。

[ipyparallel marathon engine](https://hub.docker.com/r/jdennison/ipyparallel-marathon-engine/)安装自定义依赖项非常有用,特别是在用户有不同需求的情况下。支持多版本软件包多个用户可能是一个真正的斗争。如果使用自定义引擎映像,请确保更新:`c.marathonlauncher.engine_docker_image`.

\我们发现我们的工作负载非常有弹性,因此使用现有资源来上下旋转集群对我们非常有用。但是,如果您从头开始设置一个新的集群,专门用于长时间运行的ipython集群,我建议使用现有的ssh启动程序或用于基于云的工作流,如starcluster。为单个用例管理一个mesos集群可能有点过头了。

这个包提供了两个启动程序"marathoncontrollerlauncher"和"marathonenginesetlauncher"。每个发射器都会启动一个单独的马拉松应用程序、一个控制器和n个引擎。控制器公开了一系列端口,使其能够与引擎通信,因此此容器将挂载到主机的网络(即使用"--net=host"docker选项)。控制器为引擎和客户端写入连接文件,然后启动http服务器,在"controller_config_port"上公开这些文件。给定"controller_config_port"和托管该控制器的mesos从机,您可以检索作为客户端或引擎连接所需的连接文件。要获取这些连接文件,每个引擎容器都需要知道"controller_config_port"、controller marathon应用程序id和marathon api的位置才能找到控制器。如果控制器在网桥模式下运行,我们可以依赖服务端口,但这是未来的增强功能。

如果要将多个群集部署到单个mesos群集,请确保更改默认的"controller_config_port",否则会出现端口冲突。

容器。可能存在网络问题。

Milage可能因其他版本而异。
-IPyparallel的整个安全模型是从不通过网络发送连接文件中的密钥。这个项目完全忽略了这一点,并在一个开放的http服务器上提供这些文件。在容器中运行引擎可能会提供一些保护,但请注意,此项目不会试图保护您免受网络上恶意参与者的攻击。
-控制器使用大量端口,为了便于部署,控制器docker容器在主机网络模式下运行。
-目前每个引擎都在单独的Docker容器下运行。虽然这对流程管理很好,但是cgroup隔离不允许memmapping numpy数据帧。TOdo:调查每个引擎的更多进程

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在没有代码气味的情况下编写遵循Liskov替代和其他可靠原则的不可变映射?   java最新jre上的压缩字符串对旧编译代码有好处吗?   java是否可以在javascript中取消PrimeFaces menuitem onclick函数   mysql从SQL数据库中访问java中xml名称空间标记的值   从java程序打开excel文件   java在方法中使用“var”是否会使执行(并发)线程不安全?   java使搜索视图以一种关于AndroidManifest的通用方式可用。xml   java对如何准确使用正则表达式感到困惑?   mule如何访问java文件中的记录变量   java在从2D数组引发异常后继续   枚举当前设置为的java值   java当listview只有几个项目时,如何使alert对话框显示listview的所有项目?   java getTableRow()返回大于项大小的索引   c用java传输二进制文件(数据)   java更改多选列表项复选框颜色