0

我正在寻找一种将新文件系统挂接到 Hadoop 中的方法,以针对 HDFS 对这个新文件系统的性能进行基准测试。我是 Hadoop 新手,所以如果我问错了问题,请随时纠正我。如果有帮助,我将使用亚马逊的 EMR。

4

4 回答 4

1

您将需要为您的新文件系统创建一个 Hadoop 文件系统驱动程序。这将是一个扩展类org.apache.hadoop.fs.FileSystem。这种“驱动程序”的例子是众所周知的DistributedFileSystem。HDFS,LocalFilesystem等等S3FileSystem。然后,您必须使用中的方案注册新文件系统core-site.xml,假设您注册了“gaurav”:

<property>
  <name>fs.gaurav.impl</name>
  <value>com.package.GauravFileSystem</value>
</property>

您现在可以使用已注册的方案引用您自己的文件系统中的文件:gaurav://somepath/somename. 或者,您可以通过更改将新文件系统设置为默认文件系统fs.default.name。您的集群现在应该在您自己的文件系统之上运行(当然,如果一切正确且有效)。

例如,查看HADOOP-9629以获取完整 Hadoop 文件系统的示例。

于 2014-06-11T19:57:41.420 回答
1

是的,您可以在其他文件系统之上运行 hadoop,它们只需要实现 hdfs 接口。这是一个在名为tachyon的新文件系统上运行它的示例。在亚马逊上,显而易见的选择是在 S3 文件系统上运行。

不是这方面的专家,但让你的文件系统透明地支持 hadoop map reduce 似乎相对微不足道,这是 tachyon 是如何做到的TachyonFileSystem,基本上它只是扩展了 hadoop FileSystem 类。

于 2014-06-11T19:28:05.090 回答
0

不,Hadoop 只能与 HDFS 一起使用……MapR 正在使用另一个版本的 HDFS。

但是您可以在 DFS 上开发自己的 MapReduce 并将其与 Hadoop 进行比较。

于 2014-06-11T19:18:01.030 回答
0

另一种方法是利用ServiceLoader,通过放置一个带有路径的配置文件META-INF/services/org.apache.hadoop.fs.FileSystem,并将合格的实现类名称作为值,我们可以得到这个文件系统,如下所示

FileSystem.get(new URI("{SCHEME}://" + "{VALUE}" + "/"), conf)

示例:https ://github.com/grahamar/hadoop-aws/blob/master/src/main/resources/META-INF/services/org.apache.hadoop.fs.FileSystem

于 2020-06-25T05:01:16.307 回答