【发布时间】:2015-10-11 22:11:27
【问题描述】:
我试图将大量数据(长整数数组)从多 (8) 台远程计算机传输到单台计算机(主进程)。所有这些都通过 100 MBps 的 LAN 连接并且是相同的机器(所以不用担心字节序)。
每台远程机器都有一个 8GB 长的 int 数组,我必须将它传输到单台计算机进行处理。我的问题是将这些数组快速转移到主进程的最佳方法是什么。我尝试使用传统的 TCP 来完成这项工作,传输数据需要很长时间(大约 28 分钟)。有什么办法可以提高这个速度吗? .切换到 UDP 对我有帮助吗?使用多个端口/套接字会帮助我缓冲吗?解决此类问题的最佳方法是什么?
我可能无法压缩数据(因为它们中的大多数都是唯一的)并且我需要发送所有内容(因为我在主进程中执行重要操作)
【问题讨论】:
-
只是一个想法 - 你尝试过压缩吗?
-
您真的需要一次传输所有数据吗?也许您可以将它存储在某个地方(例如,在某个数据库中)并按块增量获取它?如果您不解释这些数据到底是什么以及它来自哪里,我们将无能为力......
-
尝试将算法移动到数据中,而不是将数据移动到算法中。也许 map-reduce 可以帮助你。
-
如果您算一算,在 100mbps 网络上传输 8GB 数据至少需要 11 分钟。这可以接受吗?
-
刚刚注意到我犯了一个愚蠢的错误,输入 b 而不是 B。这是 100MBps 对不起,伙计们。