單元4 任務(wù)4.5 HDFS的Java API操作_第1頁
單元4 任務(wù)4.5 HDFS的Java API操作_第2頁
單元4 任務(wù)4.5 HDFS的Java API操作_第3頁
單元4 任務(wù)4.5 HDFS的Java API操作_第4頁
單元4 任務(wù)4.5 HDFS的Java API操作_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

《大數(shù)據(jù)平臺部署與運維》單元4HDFS分布式存儲任務(wù)4.5HDFS的JavaAPI操作01掌握HDFS操作常用的JavaAPI02能夠應(yīng)用JavaAPI操作HDFS學習目標任務(wù)4.5HDFS的JavaAPI操作【任務(wù)場景】經(jīng)理:現(xiàn)在我們已經(jīng)把環(huán)境搭建好了,接下來創(chuàng)建一個項目,熟悉一下HDFSJavaAPI操作吧。小張:嗯,那我寫個demo吧,那我們數(shù)據(jù)怎么辦呢?經(jīng)理:可以模擬一下咱們電商網(wǎng)站的數(shù)據(jù)。小張:好的,經(jīng)理。任務(wù)4.5HDFS的JavaAPI操作任務(wù)布置:本任務(wù)目的在于學習HDFS的JavaAPI操作,在安裝Hadoop基礎(chǔ)環(huán)境之上使用IDEA工具,熟悉并掌握目錄與文件的創(chuàng)建和刪除操作,掌握文件上傳與下載操作、掌握數(shù)據(jù)流與文件讀寫操作,掌握目錄與文件的重命名操作。知識點1HDFS的常用JavaAPIHadoop是由Java語言編寫的,其中Hadoop3.1.0系列是JDK1.8編寫,我們可以通過JavaAPI調(diào)用HDFS的所有交互操作接口。Hadoop3.1.0javaAPI官方地址:/docs/r3.1.0/api/index.html知識點1HDFS的常用JavaAPI通過FileSystem訪問遠程集群一般情況下需要給定配置信息,Hadoop通過自定義的Configuration類來給定hadoop相關(guān)的連接信息。Configuration采用延遲加載的模式來加載配置信息,加載順序是按照代碼順序加載,但是如果在代碼中強制指定的話,那么會覆蓋文件中的加載。//創(chuàng)建配置器Configurationconf=

new

Configuration();conf.set("",

"hdfs://localhost:9000");conf.set("mapred.jop.tracker",

"localhost:9001");Configurationconf=

new

Configuration();

conf.addResource("core-default.xml");

conf.addResource("core-site.xml");Configuration類方法說明voidset(Stringname,Stringvalue)設(shè)置屬性,name是屬性名稱,value是屬性值voidaddResource(Stringname)添加一個配置資源知識點1HDFS的常用JavaAPIJavaAPI調(diào)用HDFS的所有交互操作接口中最常用的類是FileSystem類,包含了hdfsdfs相關(guān)操作的實現(xiàn)。如下是FlieSystem類的聲明:

FileSystem類位于org.apache.hadoop.fs包中,從聲明中我們能看到,它是一個抽象類,其次父類是Configured,實現(xiàn)了Closeable接口。Closeable接口是可以關(guān)閉的數(shù)據(jù)源或目標。需要實現(xiàn)close方法,可釋放對象保存的資源(如打開文件)。知識點1HDFS的常用JavaAPIHadoop提供的操作HDFS的api接口是以FileSystem為基礎(chǔ)的,在該類中提供一系列操作文件的方法,比如:文件上傳copyFromLocalFile方法,創(chuàng)建文件create方法,刪除文件delete方法等。該類的包名為org.apache.hadoop.fs.FileSystem。該類主要的子類有:DistributedFileSystem,WebHdfsFileSystem等。方法說明staticFileSystemget(Configutationconf)獲取FileSystem實例,靜態(tài)方法staticFileSystemget(URIuri,Configutationconf)獲取FileSystem實例,靜態(tài)方法staticFileSystemget(URIuri,Configutationconf,Stringuser)獲取FileSystem實例,靜態(tài)方法,多個用戶參數(shù)FSDataInputStreamopen(Pathf)在Path位置打開一個文件輸入流voidcopyFromLocalFile(Pathsrc,Pathdst)將本地文件拷貝到文件系統(tǒng)voidcopyToLocalFile(Pathsrc,Pathdst)講文件系統(tǒng)上的文件復(fù)制到本地booleanexists(Pathf)檢查文件或目錄是否存在booleanmkdirs(Pathf)新建所有目錄(包括父目錄),f是完整路徑abstractbooleanmkdirs(Pathf,FsPermissionp)在文件系統(tǒng)上創(chuàng)建指定文件,包括上級目錄FSOutputStreamcreate(Pathf)創(chuàng)建指定路徑的文件,返回一個輸出流booleandelete(Pathf,Booleanrecursive)永久刪除指定的文件或目錄,如果是空目錄,recursive直可以忽略任務(wù)4.5HDFS的JavaAPI操作【工作流程】HDFS的JavaAPI操作相關(guān)流程包括:1.基礎(chǔ)環(huán)境準備2.目錄與文件的創(chuàng)建、刪除操作3.文件上傳與下載操作任務(wù)4.5HDFS的JavaAPI操作【操作步驟】1.基礎(chǔ)環(huán)境準備HDFS的JavaAPI相關(guān)操作依賴的基礎(chǔ)環(huán)境,包括需要安裝好Hadoop以及開發(fā)工具等,具體軟件環(huán)境如下所示:前面我們已經(jīng)介紹了Windows的IDEA的安裝操作,該任務(wù)我們介紹一下Linux的IDEA操作,Linux版本的IDEA解壓即用非常方便,要求我們的Linux系統(tǒng)是桌面版。編號軟件基礎(chǔ)版本號1操作系統(tǒng)CentOS7桌面版,主機名node12Java編譯器JDK1.83HadoopHadoop3.1.04IDEA推薦新版本任務(wù)4.5HDFS的JavaAPI操作(1)IDEA的Linux環(huán)境安裝首先我們登陸IDEA官網(wǎng)下載入口:/idea/download/,選擇Linux版本下載最新安裝包。

將下載的安裝包上傳到服務(wù)器,然后解壓,相關(guān)命令如下:[root@master01Downloads]#lsideaIC-2021.2.3.tar.gz[root@master01Downloads]#tarzxvfideaIC-2021.2.3.tar.gz-C/usr/local/

啟動IDEA[root@master01Downloads]#cd/usr/local/[root@master01local]#mvidea-IC-212.5457.46idea[root@master01local]#cdidea/bin/[root@master01bin]#./idea.sh任務(wù)4.5HDFS的JavaAPI操作(2)導入Maven依賴 首先我們創(chuàng)建一個Maven項目,項目名稱我們可以命名為HDFSDemo,然后打開pom.xml文件,導入Maven依賴項:<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>RELEASE</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>3.1.1</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.1.1</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>3.1.1</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.8.2</version></dependency></dependencies>任務(wù)4.5HDFS的JavaAPI操作2.目錄與文件的創(chuàng)建、刪除操作//創(chuàng)建方法getFielSystem,實現(xiàn)獲取文件系統(tǒng)對象

publicstaticFileSystemgetFileSystem()throwsIOException,URISyntaxException{Configurationconf=newConfiguration();//創(chuàng)建conf對象

URIuri=newURI("hdfs://11:9000");//創(chuàng)建uri對象

finalFileSystemfileSystem=FileSystem.get(uri,conf);//創(chuàng)建fileSystem對象

returnfileSystem;}

//此方法實現(xiàn)目錄遍歷

publicstaticvoidlist(Stringdir)throwsException{FileSystemfileSystem=getFileSystem();FileStatus[]listStatus=fileSystem.listStatus(newPath(dir));for(FileStatusfileStatus:listStatus){booleanisDir=fileStatus.isDirectory();Stringname=fileStatus.getPath().toString();System.out.println(isDir+""+name);}}

publicstaticvoidmkdir(Stringpath)throwsException{finalFileSystemfileSystem=getFileSystem();fileSystem.mkdirs(newPath(path));//創(chuàng)建文件夾

//遍歷文件夾下的內(nèi)容

list("/");}任務(wù)4.5HDFS的JavaAPI操作

publicstaticvoidcreate(Stringpath)throwsException{finalFileSystemfileSystem=getFileSystem();fileSystem.create(newPath(path));//創(chuàng)建文件夾

//遍歷文件夾下的內(nèi)容

list("/");}/*刪除文件夾*/publicstaticvoiddelete(Stringpath)throwsException{finalFileSystemfileSystem=getFileSystem();fileSystem.delete(newPath(path),true);//創(chuàng)建文件夾

//遍歷文件夾下的內(nèi)容

list("/");}

publicstaticvoidmain(Stringargs[])throwsException{//創(chuàng)建目錄

//mkdir("/bigdata");//刪除目錄

//delete("/bigdata");//創(chuàng)建文件

create("/demo.txt");}任務(wù)4.5HDFS的JavaAPI操作3.文件上傳與下載操作(1)數(shù)據(jù)流與文件讀寫實現(xiàn)上傳和下載//創(chuàng)建方法getFileSystem,實現(xiàn)獲取文件系統(tǒng)對象publicstaticFileSystemgetFileSystem()throwsIOException,URISyntaxException{Configurationconf=newConfiguration();//創(chuàng)建conf對象URIuri=newURI("hdfs://11:9000");//創(chuàng)建uri對象finalFileSystemfileSystem=FileSystem.get(uri,conf);//創(chuàng)建fileSystem對象returnfileSystem;}

//創(chuàng)建方法uploadFile,實現(xiàn)文件上傳publicstaticvoiduploadFile(Stringsource,Stringdest)throwsIOException,FileNotFoundException,URISyntaxException{FileSystemfileSystem=getFileSystem();FSDataOutputStreamout=fileSystem.create(newPath(dest));//創(chuàng)建文件,返回輸出流對象FileInputStreamin=newFileInputStream(source);//定義文件輸入流IOUtils.copyBytes(in,out,1024,true);//文件上傳到HDFS的指定目錄下}

任務(wù)4.5HDFS的JavaAPI操作//創(chuàng)建方法downloadFile,實現(xiàn)文件下載到本地publicstaticvoiddownloadFile(Stringsource,Stringdest)throwsIOException,URISyntaxException{FileSystemfileSystem=getFileSystem();FSDataInputStreamin=fileSystem.open(newPath(source));FileOutputStreamout=newFileOutputStream(dest);IOUtils.copyBytes(in,out,1024,true);//將文件內(nèi)容下載到本地}

publicstaticvoidmain(Stringargs[])throwsException{//將本地"/opt/hello.txt"文件上傳到HDFS的"/"目錄下uploadFile("/opt/hello.txt","/hello.txt");//將HDFS的"/hello.txt"文件下載到本地"/opt"目錄下,并命名為"hello1.txt"downloadFile("/hello.txt","/opt/hello1.txt");}任務(wù)4.5HDFS的JavaAPI操作(2)copyFromLocalFile和copyToLocalFile實現(xiàn)文件上傳和下載//創(chuàng)建方法getFileSystem,實現(xiàn)獲取文件系統(tǒng)對象publicstaticFileSystemgetFileSystem()throwsIOException,URISyntaxException{Configurationconf=newConfiguration();//創(chuàng)建conf對象URIuri=newURI("hdfs://11:9000");//創(chuàng)建uri對象fina

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論