你好,我正在处理一个存储在Amazon S3上的大数据集。我的代码架构如下:
Matlab客户端调用Matlab并行云(我的默认集群是并行云,16工人):
r = 0 (100 1);
readTimes = r;
parfori = 1:10 0
[国际扶轮,readTimesi] = myProcess (i);
r (i) =国际扶轮;
readTimes (i) = readTimesi;
结束
流(“平均阅读时间%。”1 f秒\ n '意思是(readTimes));
每个工作人员都独立访问Amazon S3,以检索使用dataStore进行处理的数据。
函数[r, readTime] = myProcess(我)
setenv (“AWS_ACCESS_KEY_ID”,“ID”);
setenv (“AWS_SECRET_ACCESS_KEY”,“关键”);
setenv (“AWS_REGION”,“us-west-2”);
fp = [s3: / / mybucket /数据/文件num2str(我). data的];
t =抽搐;
ds = fileDatastore (fp,“ReadFcn”, @AWSRead);
数据= ds.read;
readTime = toc (t);
r =意味着(数据);
结束
函数data = AWSRead(文件名)
fid = fopen(文件名);
=从文件中读数据(fid,正无穷,“短”);
文件关闭(fid);
结束
我正在努力解决为什么我的平均阅读时间慢,以及如何加快它的速度。
我注意到,如果我使用我的本地机器作为并行工作池parpool('local'),而不是Matlab并行云,平均读取时间要快得多。我读的
Matlab的文档
Matlab并行云运行在EC2上,EC2应该与S3自动集成,如果EC2和S3在同一个站点上,将有非常好的数据传输速度。
我的问题是
:我应该使用哪个站点有最大的数据传输性能?Matlab并行云托管在哪里?或者如何加快数据传输性能(除了在本地运行,因为我需要更多的worker)?
我没有使用Matlab驱动器来托管我的文件,因为它们太大,将不适合驱动器的5GB的最大分配。