- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我需要同时处理大量文件(数千个不同的文件,每个文件的平均大小为 2MB)。
所有信息都存储在一个(1.5TB)网络硬盘上,将由大约 30 台不同的机器处理。为了提高效率,每台机器将读取(和处理)不同的文件(有数千个文件需要处理)。
每台机器——在从 1.5TB 硬盘上的“incoming”文件夹中读取文件后——将处理信息并准备好将处理后的信息输出回 1.5TB 上的“processed”文件夹结核病驱动器。每个文件的处理信息与输入文件的平均大小大致相同(每个文件约 2MB)。
什么是更好的做法:
(1)对于每台加工机M,将所有要被M加工的文件复制到其本地硬盘中,然后在本地读取并加工这些文件机器M。
(2) 不是将文件复制到每台机器,而是每台机器直接访问“传入”文件夹(使用 NFS),并从那里读取文件,然后在本地处理它们。
哪个想法更好?当一个人做这样的事情时,有什么“做”和“不做”吗?
我很好奇让 30 台左右的机器同时读取(或写入)信息到同一个网络驱动器是否有问题?
(注意:现有文件只会被读取,不会被追加/写入;新文件将从头开始创建,因此不存在多次访问同一文件的问题...)。是否存在任何我应该预料到的瓶颈?
(如果重要的话,我在所有机器上都使用 Linux、Ubuntu 10.04 LTS)
最佳答案
我肯定会做 #2 - 我会按如下方式做:
在您的主服务器上使用所有文件运行 Apache。 (或者其他一些 HTTP 服务器,如果你真的想要的话)。我这样做有几个原因:
HTTP 基本上是纯 TCP(带有一些 header )。一旦请求被发送 - 这是一个非常“单向”的协议(protocol)。低开销,不健谈。高性能和高效率 - 低开销。
如果您(无论出于何种原因)决定需要移动或扩展它(例如,使用云服务),HTTP 将是一种比 NFS 更好的在开放互联网上移动数据的方式.您可以使用 SSL(如果需要)。您可以通过防火墙(如果需要)。等等……等等……等等……
根据文件的访问模式,假设需要读取整个文件 - 只需执行一个网络操作会更容易/更快 - 并将整个文件拉入一口气——而不是每次读取文件的一小部分时都不断地通过网络请求 I/O。
分发和运行执行所有这些操作的应用程序可能很容易 - 并且不依赖于网络安装的存在 - 特定文件路径等。如果您有文件的 URL - 客户端可以完成它的工作。它不需要建立挂载、硬目录,也不需要成为根用户即可设置此类挂载。
如果您有 NFS 连接问题 - 当您尝试访问挂载并且它们挂起时,整个系统会变得很糟糕。使用在用户空间上下文中运行的 HTTP - 您只会收到超时错误 - 您的应用程序可以采取它选择的任何操作(例如页面您 - 记录错误等)。
关于linux - 同时处理多个文件——复制文件还是通过 NFS 读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4454315/
我正在运行 Debian GNU/Linux 7 VM mount.nfs 版本 mount.nfs: (linux nfs-utils 1.2.6) 我想在 NFS 挂载上设置配额。 NFS 服务器
我正在尝试使用 VirtualBox 作为提供程序并使用 ansible 作为配置工具来“升级”一台 CentOS 机器 (centos7-x64-vbox43)。我执行了以下命令: vagrant
我最近使用 inotify 创建了一个保管箱系统,监视在特定目录中创建的文件。我正在监视的目录是从 NFS 服务器挂载的,并且 inotify 的行为与我的预期不同。考虑以下场景,其中 inotify
我已经在我的本地机器上安装了一个 NFS 挂载(所以,我想我的机器是 NFS 客户端)并且一个文件正在被托管 NFS 挂载的远程机器(NFS 服务器)写入 NFS 挂载中。现在,我如何使用 JAVA
我关注这个tutorial为我的服务器设置 NFS。目前,我有 1 台服务器将其部分目录共享为 HOST,2 台服务器将这些目录作为 CLIENT。 我的问题很直接,如果我的HOST包含200万张图片
我在主机上有一个 NFS 分区,如果将其添加到容器中 docker run -i -t -v /srv/nfs4/dir:/mnt ubuntu /mnt 将包含共享数据,但它不会导致冲突吗?因为它还
没有 iptables 规则,我可以挂载我的 NFSSERVER:/PATH 但有了它(firewall/iptables) 已启用,但我无法安装。 [.e.g., after iptables --
我们有两个数据中心,每个数据中心都有许多共享一个基于 EMC 的大型 nfs 的 Linux 服务器。 挑战在于保持两个 nfs 同步。目前假设写入仅发生在 nfs1 上,然后 nfs1 必须将更改传
我在尝试挂载 nfs 导出时遇到以下错误。 sudo mount 192.168.1.175:/mnt/nas /mnt/c/nas mount.nfs: No such device 关于如何解
NFS 挂载在我的 RHEL 7 AWS 实例中不起作用。 当我做一个 mount -o nfsvers=3 10.10.11.10:/ndvp2 /root/mountme2/ 我得到错误: mou
我正在复制 Controller 示例 [1] 中尝试 Kubernetes NFS 卷声明。 我已经设置了 NFS 服务器、PV 和 PVC。我的复制 Controller 看起来像这样 apiVe
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我想查找并更改用户帐户及其在本地文件系统上的默认组,但不包括大量 NFS 安装和指向这些安装的符号链接(symbolic link)。我尝试了多种语法但没有成功 - find / -user dumm
我正在使用 docker NFS 容器,但是在安装导出的目录(即使在本地主机上)时遇到了麻烦。 问题 exportfs: does not support NFS export 设置 我的容器使用入
HDFS NFS GateWay mount.nfs:输入/输出错误? 1.报错如下: [root@xx sbin]# mount -t nfs -o vers=3,proto=tcp,nolock,
我无法为 Docker Swarm 安装 NFS 卷,并且缺乏有关 --mount 语法( https://docs.docker.com/engine/reference/commandline/s
我有一个 Kubernetes 集群设置(本地),它有一个 NFS 共享(my-nfs.internal.tld)安装到 /exports/backup在每个节点上创建备份。 现在我正在设置我的日志记
我想将 sqlite 数据库嵌入到现有的 tcl 应用程序中(从平面文件迁移)。 目前;我们的 tcl 解释器是从网络位置运行的; /bin/tclsh8.3 我有一个 nfs $PATH对于已经为所
我在一台服务器上为客户端创建了一个 NFS 共享服务器和客户端都是centos 6系统。服务器 nfs 导出:/srv/diskless/tmp *(rw,sync,no_root_squash)。
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 10 个月前关闭。 Improve
我是一名优秀的程序员,十分优秀!