2016-10-02 70 views
1

我的实验室刚刚获得了Microsoft Azure的赞助,我正在探索如何利用它。我是工业级云服务新手,对于大量的术语和概念非常困惑。简而言之,这里是我的场景:使用Microsoft Azure作为计算集群

  1. 我想用多个数据集实验相同的算法,即数据并行性。
  2. 该算法在Linux(ubuntu 16.04)上用C++实现。我尽我所能使用静态链接,但仍依赖于一些动态库。但是,这些动态库可以通过apt轻松安装。
  3. 每个数据集是结构化的,意味着数据(图像,其他文件...)与文件夹组织。

想法系统配置将是一堆相同的虚拟机和共享的文件系统。然后我可以通过脚本或其他东西用'qsub'提交我的工作。有没有办法在Azure上做到这一点?

我调查了批量服务,但无法建立计算节点后安装的依赖。我也有存储问题。到目前为止,我只看到了使用Blob存储批处理的例子,它是非结构化的。

那么,有没有在Azure中的任何其他服务能满足我的要求吗?

回答

1

我有点想通了我的自我基础上的文章:https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-classic-hpcpack-cluster/。这是我的解决方案:

  1. 使用Windows头节点和一组Linux计算节点创建HPC Pack。以下是Marketplace中的几个有用模板。

  2. 从头部节点上,我们可以用“clusrun”里面的PowerShell命令执行Linux的计算节点内,无论是内部HPC群集管理器,或。我们可以通过apt-get为计算节点轻松安装依赖关系。

  3. 内的存储帐户的一个创建文件共享。这可以由集群内的所有机器装载。

  4. 这里出现的一个小问题是,出于某种加密原因,您无法在Linux机器之外的Azure上挂载文件共享。我的脑海中有两种解决方案:(1)将文件共享挂载到Windows头节点,并通过FTP或SSH创建文件共享。 (2)创建另一个Linux VM(作为网桥),在该VM上安装文件共享,并使用“scp”从外部与其通信。由于我不熟悉Windows,我采用了后来的解决方案。

  5. 对于可执行文件,我只是上传在本地机器上编译的二进制可执行文件。大多数依赖关系是静态链接的。尽管如此,仍然有一些动态对象。我将这些动态对象上传到Azure,并在计算节点上执行程序时设置LD_LIBRARY_PATH。

  6. 作业提交在Windows头节点完成。为了使它更加灵活,我编写了一个python脚本,它编写XML文件。作业管理器可以加载这些XML文件来创建作业。下面是一些说明:https://msdn.microsoft.com/en-us/library/hh560266(v=vs.85).aspx

我认为应该有更多与Azure的批量服务完美的解决方案,但到目前为止,我的小集群上运行得很好用HPC包。希望这篇文章可以帮助某人。

0

Azure的文件可以为您提供一个共享的文件解决方案,为你的Ubuntu箱 - 详情请看这里:

https://azure.microsoft.com/en-us/documentation/articles/storage-how-to-use-files-linux/

再根据您的需求,您可以通过使用容器创建通过Blob存储伪结构然后在你的斑点的命名策略中使用“/”。

大卫的点,而批一般看着这些类型的工作负载,可能不适合您的解决方案。 VM Scale Sets(https://azure.microsoft.com/en-us/documentation/articles/virtual-machine-scale-sets-overview/)将允许您通过负载或时间表来扩展计算容量,具体取决于您的工作负载行为。

+0

非常感谢您的回复!我还发现Azure File非常有用。我成功部署了HPC Pack的集群。 – Higerra