在IgniteCompute上部署ComputeJob

时间:2018-01-30 16:02:09

标签: ignite

第一个问题:我可以将ComputeJob部署到IgniteCompute上的每个节点吗?

我知道Ignite可以部署由ComputeJob组成的ComputeTask。检查完内部代码后,在我看来ComputeJob是序列化的,与args一起发送到远程代码,然后进行处理。如果我错了,请纠正我。

在我的情况下,一个节点将加载ComputeTask的本地部署副本,然后ComputeTask将生成ComputeJob,这些ComputeJob被发送到其他节点进行计算。产生的这些ComputeJob除了传递给它的args之外都是相同的。在这种情况下,如果我可以在远程节点上加载本地部署的ComputeJob副本并仅传递通过网络发送到此节点的args,则网络通信应该减少。我的应用程序的理论瓶颈是网络带宽,我正在尝试优化。

第二个问题:如果我无法部署ComputeJob,是否有任何解决方法可以防止多次发送相同的# install.packages("MODIS") library(MODIS) # set MODISoptions() # ... tfs <- runGdal(product = "MOD15A2H", tileH = 11, tileV = 4, outProj = "EPSG:32615", begin = "2017001", end = "2017010", SDSstring = "101100", job = "mod15a2h.006") tfs $MOD15A2H.006 $MOD15A2H.006$`2017-01-01` [1] ".../MODIS_~1/PROCES~1/mod15a2h.006/MOD15A2H.A2017001.Fpar_500m.tif" [2] ".../MODIS_~1/PROCES~1/mod15a2h.006/MOD15A2H.A2017001.FparLai_QC.tif" [3] ".../MODIS_~1/PROCES~1/mod15a2h.006/MOD15A2H.A2017001.FparExtra_QC.tif" $MOD15A2H.006$`2017-01-09` [1] ".../MODIS_~1/PROCES~1/mod15a2h.006/MOD15A2H.A2017009.Fpar_500m.tif" [2] ".../MODIS_~1/PROCES~1/mod15a2h.006/MOD15A2H.A2017009.FparLai_QC.tif" [3] ".../MODIS_~1/PROCES~1/mod15a2h.006/MOD15A2H.A2017009.FparExtra_QC.tif"

非常感谢您的见解!

1 个答案:

答案 0 :(得分:0)

使用Ignite&#39; ComputeJob序列化BinaryMarshaller时,它不会带来太多开销。您不会每次都发送作业的类字节。二进制表示也不包含可从类中推断出的任何字段名称或其他信息。几乎所有字节都是作业字段的实际值,这些字段通常对应于作业参数。您可以在Ignite的二进制格式here上找到更多信息。

如果您想查看作业二进制表单的大小和结构,可以使用

等手动序列化它
byte[] array = ignite.configuration().getMarshaller().marshal(job);