您好,登錄后才能下訂單哦!
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.junit.Test;
public class replication {
/**
* 通過(guò)API實(shí)現(xiàn)自定義文件的副本數(shù)
* 最后測(cè)試的時(shí)候修改集群hdfs.site.xml中dfs.namenode.fs-limits.min-block-size的值為10K
* 注意修改集群的配置文件后手動(dòng)的刷新nodes的命令并不能讓文件生效,需要重新啟動(dòng)集群
* 最后通過(guò)webui hadoop01:50070來(lái)查看
*/
@Test
public void customReplicationNum() throws Exception {
//創(chuàng)建configuration對(duì)象,有個(gè)默認(rèn)的加載順序,先從core-default.xml,再到src目錄中的文件,這里
//我們給定了
Configuration conf = new Configuration();
//修改當(dāng)前文件的副本數(shù)量
conf.set("dfs.replication", "4");
//修改當(dāng)前文件的塊大小
conf.set("dfs.blocksize", "20480");
//修改namenode的blcoksize的下限,需要修改集群的配置,這里設(shè)置是有問(wèn)題的
// conf.set("dfs.namenode.fs-limits.min-block-size", "1024*10");
//通過(guò)conf的configuration對(duì)象創(chuàng)建了該分布式文件系統(tǒng)fs,默認(rèn)如果不指定文件的話為本地文件系統(tǒng)
FileSystem fs = FileSystem.get(conf);
//定義一個(gè)URL的字符串
String file = "hdfs://hadoop01:9000/user/hadoop/data2/kala-copy.jpg";
//通過(guò)一個(gè)URL的字符串構(gòu)建一個(gè)path對(duì)象
Path path = new Path(file);
FSDataOutputStream out = fs.create(path);
IOUtils.copyBytes(new FileInputStream("E:/zhaopian.jpg"), out, 1024);
out.close();
}
}
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。