【问题标题】:Can I plug in a different DFS instead of HDFS with Hadoop?我可以使用 Hadoop 插入不同的 DFS 而不是 HDFS 吗?
【发布时间】:2014-08-01 22:54:53
【问题描述】:

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

【问题讨论】:

    标签: hadoop hdfs benchmarking microsoft-distributed-file-system


    【解决方案1】:

    您需要为您的新文件系统创建一个 Hadoop 文件系统驱动程序。这将是一个扩展org.apache.hadoop.fs.FileSystem 的类。这种“驱动程序”的例子是众所周知的DistributedFileSystem aka。 HDFS、LocalFilesystemS3FileSystem 等。然后您必须使用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 文件系统的示例。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        不,Hadoop 仅适用于 HDFS ... MapR 正在使用另一个版本的 HDFS。

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

        【讨论】:

          【解决方案4】:

          另一种方法是利用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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-06-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多