0

我有几个巨大的 TIFF 图像(60,000x60,000 ~600MB)。使用 Hadoop,我想为每个图像创建一个瓷砖金字塔(deepzoom 格式)并将它们存储在 HDFS 上。理想情况下,我想实现每个节点只处理图像的一部分。

实现它的最佳方法是什么?在 HDFS 上存储小文件是否会产生很大的开销?

4

2 回答 2

2

你确定你需要hadoop吗?您的图像不是那么大。我使用了 6 年的桌面可以在 4 分钟内对更大的图像进行深度缩放:

$ tiffinfo huge.tif
TIFF Directory at offset 0x12d095e4 (315659748)
  Image Width: 91460 Image Length: 51866
  Tile Width: 512 Tile Length: 512
  Resolution: 10, 10 pixels/cm
  Bits/Sample: 8
  Compression Scheme: JPEG
...
$ time vips dzsave huge.tif x
real  3m40.841s
user  4m57.587s
sys   0m50.375s
于 2013-03-13T11:57:01.897 回答
0

在 HDFS 上存储小文件是否会产生很大的开销?

查看 Cloudera 的这篇文章。使用HDFS federation,大量文件的问题会有所缓解。

http://www.cloudera.com/blog/2009/02/the-small-files-problem/

实现它的最佳方法是什么?

首先检查创建深度缩放格式的API是否可以应用于图像文件的一部分。如果必须一次处理完整的文件,那么 Hadoop 提供的优势并不大。默认情况下,HDFS 将文件拆分为 64 MB 的拆分,每个拆分都可以由映射器并行处理。

如果您是 Hadoop 新手,请查看基本字数统计示例在 Hadoop 中的工作原理,并尝试根据您的要求做一些类似的事情。

于 2012-07-09T13:47:13.130 回答