這篇文章主要為大家展示了“HDFS中客戶端操作有哪些”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“HDFS中客戶端操作有哪些”這篇文章吧。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),嶺東企業(yè)網(wǎng)站建設(shè),嶺東品牌網(wǎng)站建設(shè),網(wǎng)站定制,嶺東網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,嶺東網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
1. 將支持window系統(tǒng)的hadoop安裝包,解壓到本地,并配置環(huán)境變量( 無(wú)中文或特殊符號(hào)的路徑) --比如:我的Hadoop安裝包位置是:D:\hadoop\hadoop-3.1.0 配置環(huán)境變量: HADOOP_HOME D:\hadoop\hadoop-3.1.0 path %HADOOP_HOME%\bin 2. 如果上述操作后還有問題可以將bin目錄下hadoop.dll和winutils.exe放到C:/windows/system32目錄下,然后重啟電腦。
操作HDFS:
1.創(chuàng)建文件系統(tǒng)對(duì)象 2.具體操作 :上傳,刪除,下載..... 3.關(guān)資源
private FileSystem fs; //1.創(chuàng)建fs文件系統(tǒng)對(duì)象 @Before public void before() throws Exception { /* get(final URI uri, final Configuration conf,final String user) uri : HDFS的地址 conf : 需要使用的配置信息 user : 用來(lái)操作HDFS的用戶 */ // uri : HDFS的地址 URI uri = new URI("hdfs://hadoop102:9820"); //conf : 需要使用的配置信息 Configuration conf = new Configuration(); //user : 用來(lái)操作HDFS的用戶 String user = "luck"; fs = FileSystem.get(uri, conf, user); } //3.關(guān)資源 @After public void after(){ try { if (fs != null) { fs.close(); } } catch (IOException e) { e.printStackTrace(); } }
//2.具體的操作 //上傳 @Test public void test() throws IOException { /* copyFromLocalFile(boolean delSrc, boolean overwrite, Path src, Path dst) delSrc : 是否刪除源文件(是剪切還是復(fù)制) overwrite : 如果目標(biāo)文件已存在是否覆蓋目標(biāo)文件 --注意:如果不覆蓋但目標(biāo)文件又存在則會(huì)報(bào)錯(cuò) src : 源文件路徑(本地) dst : 目標(biāo)文件路徑(HDFS) */ fs.copyFromLocalFile(true, true,new Path("D:\\io\\hdfs\\aa.txt"),new Path("/hdfs")); } //下載 @Test public void test2() throws IOException { /* copyToLocalFile(boolean delSrc, Path src, Path dst, boolean useRawLocalFileSystem) delSrc : 是否刪除源文件(HDFS上的文件) src : 源文件路徑(HDFS) dst : 目標(biāo)文件路徑(本地) useRawLocalFileSystem : 是否使用useRawLocalFileSystem 如果使用:不會(huì)下載crc校驗(yàn)文件 如果不使用 : 會(huì)下載crc校驗(yàn)文件 */ fs.copyToLocalFile(false,new Path("/hdfs/aa.txt"),new Path("D:\\io\\hdfs"), false); } //刪除 @Test public void test3() throws IOException { /* delete(Path f, boolean recursive) f : 刪除的數(shù)據(jù)的路徑 recursive : 是否遞歸(如果是目錄(非空)必須是true否則會(huì)報(bào)錯(cuò)。如果是文件true和false都可以) */ fs.delete(new Path("/longge/sanguo.txt"),true); } //改名 @Test public void test4() throws IOException { /* rename(Path src, Path dst) src : 源文件路徑 dst : 目標(biāo)文件路徑 */ //fs.rename(new Path("/longge/xiyou.txt"),new Path("/longge/xiyouji.txt")); //移動(dòng) fs.rename(new Path("/longge/xiyouji.txt"),new Path("/hdfs/xiyouji.txt")); } //文件詳情查看 @Test public void test5() throws IOException { /* listFiles( final Path f, final boolean recursive) f : 目標(biāo)路徑 recursive : 是否遞歸 */ RemoteIteratorremoteIterator = fs.listFiles(new Path("/"), true); while(remoteIterator.hasNext()){ //文件詳情對(duì)象 LocatedFileStatus fileStatus = remoteIterator.next(); //文件名 System.out.println("=============" + fileStatus.getPath().getName() + "==================="); System.out.println("=====所屬主:" + fileStatus.getOwner()); System.out.println("=====副本數(shù)量:" + fileStatus.getReplication()); //獲取塊的信息 BlockLocation[] blockLocations = fileStatus.getBlockLocations(); for (BlockLocation block : blockLocations) { System.out.println(block); } }
//用流的方式實(shí)現(xiàn)HDFS上傳和下載內(nèi)容 //上傳 @Test public void test7() throws IOException { //讀-從本地讀(文件輸入流) FileInputStream fis = new FileInputStream("D:\\io\\hdfs\\aa.txt"); //寫-向HDFS寫 FSDataOutputStream fos = fs.create(new Path("/hdfs/aa.txt")); //一邊讀一邊寫 /* 文件對(duì)拷 copyBytes(InputStream in, OutputStream out,int buffSize, boolean close) in : 輸入流 out : 輸出流 buffsize :緩存大小 close : 是否關(guān)流 */ IOUtils.copyBytes(fis,fos,1024,false); //關(guān)流 IOUtils.closeStream(fis); IOUtils.closeStream(fos); /** * */ } //下載 @Test public void test8() throws IOException { //讀 - 從HDFS上讀 FSDataInputStream fis = fs.open(new Path("/hdfs/xiyouji.txt")); //寫 - 向本地寫(文件輸出流) FileOutputStream fos = new FileOutputStream("D:\\io\\hdfs\\xiyouji.txt"); //文件對(duì)拷 IOUtils.copyBytes(fis,fos,1024,true); }
以上是“HDFS中客戶端操作有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!