使用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:调查每个引擎的更多进程
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:调查每个引擎的更多进程