【问题标题】:How to set hadoop replication in java client by class org.apache.hadoop.conf.Configuration?java - 如何通过类org.apache.hadoop.conf.Configuration在java客户端中设置hadoop复制?
【发布时间】:2013-01-27 12:43:04
【问题描述】:

我使用java Api作为客户端上传文件,但它总是将dfs.replication设置为3,结果当我使用命令(hadoop dfsadmin -report)检查情况时,所有块都在复制因子下,因为我只有两个数据节点要测试。

我只想知道如何通过org.apache.hadoop.conf.Configuration 类或其他方式在java 客户端中设置hadoop dfs.replication?感谢您的帮助!

【问题讨论】:

    标签: java api file-upload replication


    【解决方案1】:

    如果文件已经通过 3 块复制复制到 HDFS,您可以使用 setReplication API 以及您的文件 src 和预期复制计数来设置特定于您的文件的复制,如下所示:

    FileSystem fs = FileSystem.get(new Configuration());
    fs.setReplication(new Path("hdfs_path:/foldername/filename"), (short)2);
    

    setReplication API 描述为here: public boolean setReplication(Path src, short replication)

    此外,如果要复制具有 2 个块复制因子的文件,您可以直接在命令中传递复制计数,如下所示:

    hadoop fs -D dfs.replication=2 YOUR_COMMANDS
    

    【讨论】:

      【解决方案2】:

      根据Java API for the Hadoop FileSystem class,您可以在创建输出流以将文件写入集群时指定文件的复制因子。例如。

      create(Path f, short replication) 
      

      我目前无法在本地测试这个,因为我这里只有一个 Zookeeper 节点运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-04
        • 1970-01-01
        • 2013-03-09
        • 1970-01-01
        • 2011-06-05
        • 1970-01-01
        • 2011-07-15
        相关资源
        最近更新 更多