Java 将多个文件从HDFS复制到本地:多线程?

Java 将多个文件从HDFS复制到本地:多线程?,java,multithreading,apache,hadoop,hdfs,Java,Multithreading,Apache,Hadoop,Hdfs,在我的Java应用程序中,我需要将多个文件从HDFS复制到本地文件系统 以下两种方法中哪一种更快? 1.按顺序逐个复制文件 2.运行并行线程来复制每个文件。如果您的本地文件系统中有一个物理磁盘,那么最好采用顺序方法,因为并行方法会导致磁盘(在硬盘驱动器的情况下)不必要地来回旋转(取决于操作系统是否能帮助您以及写入的性质),另外,因为您一次只能使用一个物理资源,所以一个线程就足够了 如果此本地文件系统有多个物理磁盘,那么运行并行线程以获得更高性能的可能性是理想的(例如线程A写入所有将要驱动C的文件

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

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

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


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

感谢您的回复:)如果我们将文件从本地FS复制到本地FS,我同意您的回答。但是,在从HDFS复制到本地FS的情况下,我认为通过并行复制可以减少总体网络IO时间。因此,总体磁盘I/O速度可能会变慢,但网络I/O速度会更快。那么,按顺序将文件从HDFS复制到本地FS是否仍然有意义呢?如果可以通过并行方式减少网络I/O,那么可能只是使其并行,并缓冲需要由一个文件系统写入线程写入的数据。不过,我对什么是网络I/O的最佳选择没有太多的了解。