[英]java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration
[英]How to set hadoop replication in java client by class org.apache.hadoop.conf.Configuration?
我使用java Api作為客戶端來上傳文件,但是它總是將dfs.replication
設置為3,因此當我使用命令(hadoop dfsadmin -report)檢查情況時,所有塊都處於復制因子下,因為我只是有兩個數據節點要測試。
我只想知道如何通過類org.apache.hadoop.conf.Configuration
或以其他方式在java客戶端中設置hadoop dfs.replication? 謝謝您的幫助!
如果文件已通過3塊復制復制到HDFS,則可以使用setReplication API以及文件src和預期的復制計數來設置特定於文件的復制,如下所示:
FileSystem fs = FileSystem.get(new Configuration());
fs.setReplication(new Path("hdfs_path:/foldername/filename"), (short)2);
setReplication API描述這里 :公共布爾setReplication(路徑SRC,短復制)
另外,如果要復制具有2個塊復制因子的文件,則可以直接在命令中傳遞復制計數,如下所示:
hadoop fs -D dfs.replication=2 YOUR_COMMANDS
根據Hadoop FileSystem類的Java API,您可以在創建輸出流以將文件寫入集群時指定文件的復制因子。 例如
create(Path f, short replication)
我目前無法在本地進行測試,因為我只有一個Zookeeper節點在此處運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.