2012-01-28 105 views
1

我正在编写代码将文件传输到hadoop hdfs parallel。所以我有很多线程调用filesystem.copyFromLocalFile。关于hadoop文件系统transferFromLocalFile

我认为打开一个文件系统的成本不小,所以我只在我的项目中打开了一个文件系统。所以我认为,如果有太多的线程同时调用它,可能会有问题。但到目前为止,它没有问题地正常工作。

任何人都可以给我一些关于这种复制方法的信息吗? 非常感谢你&有一个愉快的周末。

回答

0

你能告诉我更多关于copyFromLocalFile()的信息吗?

我不确定,但我想你的情况,线程共享相同的资源之间。因为,你只有一个FileSystem实例,所以每个可能共享这个对象的时间共享。

+0

代码中没有同步。所以没有时间分享。无论有多少个线程将运行。此外,对于复制,不需要存储内部状态,这就是它的工作原理。 – 2012-01-28 10:59:37

+0

我其实只是想知道这个copyFromLocalFile()是否线程安全?或者文件系统将启动许多文件传输线程。 – 2012-01-30 19:26:44

1

我看到了下面的设计需要考虑的要点:
一)将成为这一过程的瓶颈?我认为在2-3个并行复制操作中,本地磁盘或1GB以太网将成为瓶颈。您可以以多线程应用程序的形式执行此操作,也可以运行一些进程。无论如何,我不认为你需要高水平的并行性。 b)错误处理。一个线程的失败不应该阻止整个过程,并且同时文件不应该丢失。我通常在这种情况下做的是同意在最坏的情况下文件可以被复制两次。如果确定 - 系统可以在简单的“复制然后删除”方案中工作。 c)如果您从其中一个群集节点复制 - HDFS将变得不平衡,因为一个副本将存储在您复制的主机上。你需要不断地做平衡。