我有一个ECS集群,包括20个注册实例。
我有三个任务定义来解决一个大数据问题。
任务1:拆分任务-这将启动一个码头容器,并且容器定义有一个入口点来运行一个名为HPC的脚本。这个脚本将大数据分割成一个挂载的EFS中的5个部分。此任务的任务数(计数)为1。
任务2:运行任务:这会启动另一个坞容器,而这个对接容器有一个入口点来运行一个名为HPC-script的脚本,它处理每个分割的部分。为此选择的任务数为5,因此可以并行处理。
任务3:合并任务:这将启动第三个对接器容器,该容器有一个入口点来运行一个名为HPC的脚本,它合并了来自所有部分的不同输出。同样,我们需要运行的任务数(计数)为1。
现在AWS服务限制说:limits.html,我们可以运行的最大任务(计数)是10,所以我们现在只能并行运行10个进程。也就是说,拆分文件(一个实例上运行一个任务),运行进程(任务运行在10个实例上),合并文件(任务运行在一个实例上)。
10的限制限制了我们可以并行处理的级别,我不知道该如何处理。我对这个限制感到惊讶,因为肯定需要在集群中的10多个实例上运行长时间运行的进程。
你们能不能给我一些关于如何绕过这个限制,或者如何最优地使用ECS来运行的一些建议,比如说20多个任务并行。我使用的扩展位置是“每个主机一个任务”,因为该过程使用一个主机中的所有核心。
如何才能更好地使用ECS架构这一点?
发布于 2019-08-15 21:44:07
每次运行任务启动的任务数(计数)
这是每次调用运行任务API时可以启动的最大任务数。若要启动更多任务,请再次调用运行任务API。
发布于 2019-08-16 15:48:31
如果您的任务进行拆分工作的架构是为了等待这样的工作以某种方式可用(使用某种类型的队列系统或其他),我将将它们作为服务启动,并根据需要将“期望任务”从零更改为20。
当您需要员工时,将服务规模扩大到20个需要的任务。然后启动您的任务来拆分工作,并启动等待完成的任务。当所有的工人都完成后,你可以把他们缩小到零。
这似乎也更适合Fargate的工作,除非您有极端的内存或磁盘大小的需要。否则,您可能希望将此与根据需要扩展基于EC2的集群进行配对,并在不需要时进行回退。
https://stackoverflow.com/questions/57516169
复制相似问题