2012-08-09 118 views
0

f.e.创建文件20字节。
第一进程会写从0到4
2日的5至9
hadoop/HDFS:是否可以从多个进程写入同一个文件?

我需要这个并行使用我的MapReduce创建一个大的文件。

谢谢。

P.S.也许它还没有实现,但它可能在一般情况下 - 请指出我应该在哪里挖掘。

+0

为什么你要写入并行的** **文件?那和mapreduce有什么关系? – 2012-08-09 12:38:44

+0

我想加快这个过程。我可以做并行数据计算。现在我应该找到一种方法将准备好的数据写入文件。平行而不是排队更好。 – denys 2012-08-09 13:22:38

+0

你不能加快速度,至少不能写入单个文件。 – 2012-08-09 13:30:23

回答

3

您是否能够解释在创建该文件后您打算如何处理该文件。

如果你需要将它从HDFS中取出然后使用它,那么你可以让Hadoop M/R创建单独的文件,然后使用像hadoop fs -cat /path/to/output/part* > localfile这样的命令将这些部分组合到一个文件中并保存到本地文件系统。

否则,您无法让多个写入器对同一个文件开放 - 读取和写入HDFS是基于流的,虽然您可以打开多个读取器(可能读取不同的数据块),但多次写入是不可能的。

Web下载程序在多个线程中使用Range HTTP header来请求文件的某些部分,然后在稍后合并这些部分之前使用tmp文件(如Thomas Jungblut所建议的那样),或者他们可能能够使用随机IO,缓冲将下载的部件写入内存,然后将其写入输出文件的正确位置。很遗憾,您无法使用Hadoop HDFS执行随机输出。

0

我认为简短的答案是否定的。你完成这个任务的方式是将你的多个'初步'文件写入hadoop,然后将它们M/R复制到一个统一文件中。基本上,使用hadoop,不要重新发明轮子。

相关问题