MATLABPCT解决方案主要包含以下特点。
(1)可集成的调度器
MATLABPCT框架提供的调度器,可通过用户编写的提交以及执行者解码方法,与第三方并行计算软件集成。
(2)共享文件系统
通过共享文件系统提供计算数据与输出结果的统一管理。
(3)统一的数据格式
由于MATLAB采用了集中式数据共享方式,所以用户不用关心具体的数据格式,客户端可以使用MATLAB的文件格式将输入数据写入共享文件系统,而执行节点通过共享文件系统获取输入数据,并使用同样的文件格式再将输出数据写到共享文件系统上供客户端读取结果。
MATLABPCT的这种工作框架本身就是一种通用的集成框架(见图9-15)。包含调度器、统一数据管理工具以及统一数据格式。
图9-15 基于共享文件系统的集成框架
这种框架的好处主要有:
●用户可以通过命令方式与计算工具集成。
●不需要过多关心数据的内部格式。
●数据集中,方便管理。
相信很多公司与个人都有遗留系统,针对这些系统就可以采用MATLA BPCT框架与云计算环境集成。
具体步骤是:
1)定义遗留系统的输入和输出文件格式。
2)通过共享文件系统统一输入与输出。
3)通过类似Symphony DE中symexec的命令,在多台计算机上同时启动应用。
4)最后由一个程序统一处理输出结果。(www.xing528.com)
对于文件操作需要考虑到作业间的协调。在MATLABPCT中,针对每一个任务的输入数据都会有一个专门的输入数据文件。这种方式简化了数据的处理。
但当某一个输入数据文件很大时,出于文件系统自身容量的考虑,需要同时对该文件写入与读取操作,特别是当多个写入进程与读取进程不在同一台计算机上时,需要一个在并行运算环境中全局可用的运行锁,控制对资源的操作。这时候就需要对文件加锁,以避免多个处理程序同时写入造成的数据破坏,或同时写入与读取,造成的数据不一致的情况。
加锁同样可以通过共享文件系统完成。比如当同时对数据文件A操作,可以在共享文件中记一个标志文件B说明该文件正在被操作,其他处理程序等到标志文件内容改变或移除时,再进行操作。也可以使用3.3.4节中介绍的zookeeper这样的云计算协调软件来做加锁和解锁的操作。
该框架同时也存在以下缺点。
1)数据集中存放。数据集中存放的好处是方便管理,但对于数据文件较大的情况,传输数据所花费的时间就会变长,这时使用数据集中存放的方式就会严重影响计算速度。
2)更多的计算节点与更多的许可费用。更多的计算节点,意味着MATLAB等类似软件将被安装到更多的计算机上。用户将为此支付更高的费用。
在实际使用中用户有时需要使用第三方计算库。MATLAB提供使用Java,C,C++语言等集成方法。而使用这些第三方库进行并行计算并不需要在计算节点上部署MATLAB。用户往往将使用这些库的计算结果作为MATLAB整体计算的一部分。
采用文件共享方式可以解决数据获取的问题,但无法解决集中存放,数据传输的问题。同时采用共享文件的方式共享小数据一样效率不高,因为对于小数据,完全可以通过客户端直接输入参数,通过网络传递数据。这比写到文件系统中再读取效率要高。
(1)大文件处理
我们可以借鉴Hadoop HDFS+MapReduce框架。在数据收集阶段,就将大数据文件分块存储在分布式文件系统中,客户端将需要处理的文件信息通过网络传递给MapReduce计算框架,由MapReduce框架在数据所在的计算节点进行计算。节省大数据传输时间。
(2)小数据处理
针对小数据,特别是结构化数据,可以采用Symphony DE的处理方式。将小数据封装为网络数据消息发送给各计算节点。
上述两种方案是针对不同应用场合的具体方案(见图9-16),都可看做基于消息框架的。采用基于消息的框架,另外的好处是,可以与各种第三方工具或算法库集成。比如要调用具体的第三方工具或库,用户可以使用Hadoop MapReduce,也可以使用Symphong DE计算框架的Mapper方法或者Service程序启动第三方工具或直接调用第三方工具。
对于MATLAB这种可以生成算法库的工具,这种解决方案可以降低对MATLAB本身的依赖,减少或降低购买许可证的费用。
图9-16 基于消息的框架
基于消息的框架比基于共享文件系统的框架要复杂,在进行集成时,开发人员需要编写较多的代码,还要选择到底是直接通过消息传递数据还是传递所需数据的位置等相关信息,根据应用的实际情况选择合适的计算框架。
在这种框架中,如何封装消息是框架的重点。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。