使用Hadoop上的大量科学数据

时间:2012-07-25 16:07:00

标签: hadoop mapreduce hdf5 netcdf

我目前正在启动一个名为“使用Hadoop进行时间序列挖掘算法的云计算”的项目。 我拥有的数据是大小超过TB的hdf文件。在hadoop中我知道我们应该将文本文件作为输入以进行进一步处理(map-reduce任务)。所以我有一个选项,我将所有.hdf文件转换为文本文件,这将花费很多时间。

或者我找到了一种如何在map reduce程序中使用原始hdf文件的方法。 到目前为止,我还没有成功找到任何读取hdf文件并从中提取数据的java代码。 如果有人对如何使用hdf文件有了更好的了解,我将非常感谢这样的帮助。

由于 AYUSH

4 个答案:

答案 0 :(得分:3)

以下是一些资源:

  • SciHadoop(使用netCDF但可能已经扩展到HDF5)。
  • 您可以使用JHDF5或较低级别的官方Java HDF5 interface来读取map-reduce任务中任何HDF5文件中的数据。

答案 1 :(得分:2)

对于第一个选项,您可以使用HDF dump之类的转换工具将HDF文件转储为文本格式。否则,您可以使用Java库编写程序来读取HDF文件并将其写入文本文件。

对于您的第二个选项,SciHadoop是如何从Hadoop读取Scientific数据集的一个很好的示例。它使用NetCDF-Java库来读取NetCDF文件。 Hadoop不支持文件IO的POSIX API。因此,它使用额外的软件层将NetCDF-java库的POSIX调用转换为HDFS(Hadoop)API调用。如果SciHadoop还没有支持HDF文件,你可能会走一条更艰难的道路并自己开发一个类似的解决方案。

答案 2 :(得分:1)

如果您没有找到任何Java代码并且可以使用其他语言,那么您可以使用hadoop流式传输。

答案 3 :(得分:1)

SciMate http://www.cse.ohio-state.edu/~wayi/papers/SciMATE.pdf是个不错的选择。它是基于MapReduce的变体开发的,已经证明它可以比Hadoop更有效地执行许多科学应用程序。