我正在研究大小超过hdfs块的大型地理图像文件。我需要将图像分成几个条带(例如,高度为100px
),然后对它们应用一些处理,最后重建最终图像。
为此,我创建了一个自定义输入格式(继承自FileInputFormat)和一个自定义记录阅读器。我通过定义在记录阅读器中读取的几个FileSplit(对应于一个条带)来分割输入格式的图像。
我不确定我的分割过程是否已经过优化,因为条带可以跨越2个hdfs块,而且我不知道如何发送"分裂到最好的工人(那里将有最小数量的远程阅读)
目前我正在使用FileInputFormat.getBlockIndex()
和拆分开头偏移量来获取拆分主机。
您有什么建议可以帮助我解决这个问题吗?
P.S。我正在使用新的Hadoop API
答案 0 :(得分:1)
使用HIPI对hadoop进行图像处理, [检查出来,http://hipi.cs.virginia.edu/ ] [1]
答案 1 :(得分:0)
如果在单个映射器中处理整个图像是现实的,那么您可能会发现通过使图像文件的块大小大于每个图像的大小来实现完整数据局部性更简单,并通过处理多个来获得并行性一次拍照。