【问题标题】:Copy Multiple files from HDFS to local: Multithreading?将多个文件从 HDFS 复制到本地:多线程?
【发布时间】:2014-10-11 03:45:23
【问题描述】:

在我的 Java 应用程序中,我需要将多个文件从 HDFS 复制到本地文件系统。

以下两种方法中哪一种会更快? 1.逐个逐个拷贝文件 2. 运行并行线程来复制每个文件。

【问题讨论】:

    标签: java multithreading apache hadoop hdfs


    【解决方案1】:

    如果您有一个物理磁盘作为本地文件系统的一部分,那么顺序方法最好,因为并行方法会导致磁盘(在硬盘驱动器的情况下)不必要地来回旋转(取决于操作系统可以为您提供多少帮助以及写入的性质),而且因为您一次只能使用一个物理资源,所以一个线程就足够了。

    如果这个本地文件系统有多个物理磁盘,那么运行并行线程以获得更高性能的可能性可能是理想的(例如线程 A 写入将要驱动 C 的所有文件,而线程 B 写入所有要驱动的文件驱动器 D)。

    【讨论】:

    • 感谢您的回复 :) 如果我们将文件从本地 FS 复制到本地 FS,我同意您的回答。但是,在从 HDFS 复制到本地 FS 的情况下,我认为通过并行复制将减少整体网络 IO 时间。因此,整体磁盘 I/O 可能会变慢,但网络 I/O 会更快。那么,将文件从 HDFS 顺序复制到 Local FS 是否仍然有意义?
    • 如果网络 I/O 可以通过并行来减少,那么也许只是使并行并缓冲需要由一个文件系统写入线程写入的数据。不过,我对网络 I/O 的最佳选择不是很了解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    相关资源
    最近更新 更多