版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
實(shí)訓(xùn)2.3HDFS的讀寫API操作1.實(shí)訓(xùn)目的通過本實(shí)訓(xùn)使學(xué)生學(xué)會(huì)在本地(Windows環(huán)境)編寫Java代碼,學(xué)會(huì)用離線工程編寫HDFS的讀寫操作,并且學(xué)會(huì)打包工程上傳到服務(wù)器執(zhí)行。2.實(shí)訓(xùn)內(nèi)容該實(shí)訓(xùn)需要每位學(xué)生在已搭建HDFS開發(fā)環(huán)境上編寫了HDFS寫、讀程序代碼;并打包項(xiàng)目,在集群環(huán)境上執(zhí)行該程序。3.實(shí)訓(xùn)要求以小組為單元進(jìn)行實(shí)訓(xùn),每小組5人,小組自協(xié)商選一位組長,由組長安排和分配實(shí)訓(xùn)任務(wù),具體參考實(shí)訓(xùn)操作環(huán)節(jié)。4.準(zhǔn)備知識(shí)(1)IDEA編輯器介紹IDEA全稱是IntelliJIDEA,是Java語言開發(fā)的集成環(huán)境(也可用于其他語言),IntelliJ在業(yè)界被公認(rèn)為最好的java開發(fā)工具之一,特別是在智能代碼助手、代碼自動(dòng)提示、重構(gòu)、SFTP、FTP、J2EE支持、代碼審查、Ant、JUnit、CVS整合、創(chuàng)新的GUI設(shè)計(jì)等方面,發(fā)揮著巨大的作用。IDEA是JetBrains公司的產(chǎn)品,這家公司總部位于捷克共和國的首都布拉格,開發(fā)人員以嚴(yán)謹(jǐn)著稱的東歐程序員為主。IDEA的版本分為商業(yè)版本與開源版本,對(duì)比如圖2-50所示。圖2-50IDEA編輯器版本對(duì)比(2)Java實(shí)現(xiàn)文件讀寫在操作HDFS的讀寫操作之前,我們最好有一點(diǎn)Java基礎(chǔ),比如說Java是怎么實(shí)現(xiàn)Java的文件讀寫的。下面列舉幾種Java的讀寫文件方式,供大家自行搜索資料學(xué)習(xí)。方式一:InputStream、OutputStream方式二(緩存字節(jié)流):BufferedInputStream、BufferedOutputStream使用方式與字節(jié)流差不多,但是效率比后者更高(推薦使用)。方式三:InputStreamReader、OutputStreamWriter方式四:BufferedReader、BufferedWriter方式五:Reader、PrintWriter建議使用第二種方式BufferedInputStream、BufferedOutputStream。5.實(shí)訓(xùn)步驟(1)前提工作①需要提前安裝好Windows系統(tǒng)上的JDK,本實(shí)訓(xùn)教程安裝的版本為:jdk-11.0.6。②需要將Hadoop的安裝包解壓在Windows系統(tǒng)上的某一路徑。③需要安裝好IDEA編輯器,本次實(shí)訓(xùn)使用的版本為:ideaIC-2022.2.3。(2)新建Java項(xiàng)目①打開IDEA后,新建一個(gè)項(xiàng)目,點(diǎn)擊“NewProject”,如圖2-51所示。圖2-51項(xiàng)目類型選擇在彈出的窗口中,完成以下配置,如圖2-52所示。項(xiàng)目名稱:hadoop-projectJDK:選擇自己Windows上安裝的JDK圖2-52完成相應(yīng)配置然后點(diǎn)擊窗口下方的“Create”,接著會(huì)新建好項(xiàng)目。(3)項(xiàng)目配置①右擊“src”,選擇“New”,點(diǎn)擊“Package”,建一個(gè)包,名為:“com.bigdata”,如圖2-53所示。圖2-53新建包②然后編輯項(xiàng)目結(jié)構(gòu),點(diǎn)擊“File”,點(diǎn)擊“ProjectStructure”按鈕,如圖2-54所示。圖2-54編輯項(xiàng)目結(jié)構(gòu)③點(diǎn)擊“Libraries”,引入編寫HDFS程序相關(guān)的jar包依賴。具體操作:點(diǎn)擊“Libraries”→“+”→“Java”,然后找到解壓后的Hadoop安裝包,導(dǎo)入一個(gè)是公共依賴包,如圖2-57所示。圖2-57導(dǎo)入HDFS公共依賴包導(dǎo)入HDFS其他的相關(guān)依賴包,如圖5-58所示。圖2-58導(dǎo)入HDFS相關(guān)依賴包(4)編寫HDFS代碼在com.bigdata包里新建一個(gè)WriteFile類,編寫WriteFile類代碼,代碼如下:packagecom.bigdata;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FSDataOutputStream;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.Path;importjava.io.IOException;import.URI;publicclassWriteFile{publicstaticvoidmain(String[]args)throwsIOException{Stringcontent="Hello,bigdata!";Stringdest="hdfs://master:8020/test.txt";Configurationconfiguration=newConfiguration();FileSystemfileSystem=FileSystem.get(URI.create(dest),configuration);FSDataOutputStreamout=fileSystem.create(newPath(dest));out.write(content.getBytes("UTF-8"));out.close();}}注意:請(qǐng)按照實(shí)際情況修改master的主機(jī)名?。?)編寫HDFS讀操作代碼在com.bigdata包里新建一個(gè)ReadFile類,編寫ReadFile類,代碼如下:packagecom.bigdata;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FSDataInputStream;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.Path;importjava.io.*;import.URI;publicclassReadFile{publicstaticvoidmain(String[]args)throwsIOException{Stringdest="hdfs://master:8020/test.txt";Configurationconfiguration=newConfiguration();FileSystemfileSystem=FileSystem.get(URI.create(dest),configuration);FSDataInputStreamin=fileSystem.open(newPath(dest));BufferedReaderbufferedReader=newBufferedReader(newInputStreamReader(in));Stringline=null;while((line=bufferedReader.readLine())!=null){System.out.println(line);}in.close();}}(6)打包代碼到服務(wù)器①點(diǎn)擊“ProjectStructure”→“Artifacts”→“+”→“JAR”→“Frommoduleswithdependencies...”,如圖2-59所示。圖2-59添加JAR②點(diǎn)擊之后會(huì)彈出設(shè)置界面,如圖2-60所示。圖2-60jar包配置因?yàn)槲覀冇袔讉€(gè)main方法,所以我們可以不選擇“MainClass”,直接點(diǎn)擊“OK”即可。③因?yàn)榉?wù)器上已經(jīng)有了相應(yīng)的jar包,所以需要排除掉再打包。點(diǎn)擊“Artifacts”→“hadoop-project:jar”→“OutputLayout”,勾選相應(yīng)的jar包,點(diǎn)擊“-”進(jìn)行移除。如圖2-61所示。圖2-61刪除多余的JAR包然后一直點(diǎn)擊“OK”即可。(7)打包操作①打包之前,有一點(diǎn)需要特別注意,如果你的服務(wù)器上的JDK版本是8,而在Windows的版本為jdk11的話,需要設(shè)置一下打包的項(xiàng)目語言級(jí)別才能兼容。點(diǎn)擊“ProjectStructure”→“Project”,在“LanguageLevel”選擇服務(wù)器上相應(yīng)的語言級(jí)別,JDK8對(duì)應(yīng)的是8級(jí)別,如圖2-62所示。圖2-62選擇對(duì)應(yīng)的語言級(jí)別②點(diǎn)擊菜單欄的“Build”→“BuildArtifacts...”,在彈出的選項(xiàng)中,選擇“Build”即可。如圖2-64所示。圖2-64構(gòu)建jar包④稍等一會(huì),執(zhí)行完后就可以看到out目錄生成了一個(gè)jar包,如圖2-65所示。圖2-65查看生成的jar包(8)上傳服務(wù)器并執(zhí)行①使用MobaXterm工具上傳jar包到master節(jié)點(diǎn)的/root/jars文件夾(沒有此目錄則新建創(chuàng)建)。如圖2-所示。圖2-查看jar包上傳結(jié)果②啟動(dòng)HDFS(如果啟動(dòng)則無需進(jìn)行)start-dfs.sh③執(zhí)行jar包(在jar包所在的路徑下,此處路徑為:/root/jars)
先執(zhí)行HDFS的寫操作代碼(如HDFS上已有/test.txt文件會(huì)報(bào)錯(cuò),請(qǐng)先刪除或者更換代碼里的文件名):hadoopjarhadoop-project.jarcom.bigdata.WriteFile查看是否寫內(nèi)容進(jìn)去,查看結(jié)果如圖2-67所示。hdfsdfs-cat/test.txt圖2-67查看寫文件結(jié)果展示執(zhí)行完后發(fā)現(xiàn)已經(jīng)可以查看到有寫入了數(shù)據(jù),然后執(zhí)行讀取HDFS數(shù)據(jù)的代碼,讀取結(jié)果如圖6-68所示。hadoopjarhadoop-project.jarcom.bigdata.ReadFile圖2-68執(zhí)行讀文件結(jié)果展示可以看到有結(jié)果輸出。6.實(shí)訓(xùn)總結(jié)本次實(shí)訓(xùn)主要是在IDEA上編寫HDFS讀、寫操作程序代碼,并打包在集群環(huán)境上執(zhí)行;學(xué)生通過本次實(shí)訓(xùn)的學(xué)習(xí),可以加深對(duì)HDFS的讀寫邏輯以及編程原理的認(rèn)識(shí)。本實(shí)訓(xùn)不用聯(lián)網(wǎng)也可以執(zhí)行HDFS的讀寫操作,此外,一樣也可以執(zhí)行Spark、機(jī)器學(xué)習(xí)等案例。本實(shí)訓(xùn)非常關(guān)鍵,因?yàn)榫W(wǎng)絡(luò)不好或者是簡單的項(xiàng)目,這種傳統(tǒng)的方式也是非常簡單方便的??傆[整一個(gè)操作流程,下面總結(jié)一下同學(xué)們?cè)诓僮鬟^程中比較容易遇到的錯(cuò)誤:同學(xué)們可能分不清Windows、Client、服務(wù)器、HDFS集群的相關(guān)概念,此處做一個(gè)簡單的說明以便同學(xué)們理解,后面還會(huì)遇到很多相關(guān)的概念,所以務(wù)必要理清思路。Windows:指的是你的個(gè)人電腦或者學(xué)校里的實(shí)訓(xùn)室的電腦,是提供給你學(xué)習(xí)的,此電腦上應(yīng)該安裝好了JDK,而且也應(yīng)該先安裝好代碼編輯工具,本次實(shí)訓(xùn)使用的編輯工具是IDEA。如果是使用Eclipse或者其他編輯工具,也是可以的。服務(wù)器:服務(wù)器在工作上一般指的是物理服務(wù)器或者云服務(wù)器。因?yàn)樵趯W(xué)習(xí)的時(shí)候,如果使用此類服務(wù)器,需要投入的資金成本會(huì)很高,所以學(xué)習(xí)的時(shí)候,可以選擇其他服務(wù)器。比如說在個(gè)人電腦上安裝多臺(tái)虛擬機(jī),通過VMWare等軟件,安裝好一臺(tái)虛擬機(jī),然后復(fù)制多兩臺(tái)或者更多臺(tái)出來,那這些虛擬機(jī)就是所說的服務(wù)器,也可以稱之為節(jié)點(diǎn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度農(nóng)機(jī)產(chǎn)業(yè)園區(qū)建設(shè)與運(yùn)營合同4篇
- 二零二五年度廚房櫥柜批量采購合同4篇
- 二零二五版門面分租及品牌管理服務(wù)合同4篇
- 2025年度房地產(chǎn)開發(fā)拆遷賠償協(xié)議4篇
- 2025年度個(gè)人財(cái)產(chǎn)抵押貸款合同糾紛解決條款3篇
- 2025年度個(gè)人農(nóng)業(yè)觀光園承包經(jīng)營協(xié)議3篇
- 2025版農(nóng)家樂特色民宿經(jīng)營管理合同模板4篇
- 二零二五年度數(shù)字經(jīng)濟(jì)項(xiàng)目投資出資協(xié)議4篇
- 2025版高端模具加工與維護(hù)服務(wù)合同4篇
- 二零二五版門窗企業(yè)知識(shí)產(chǎn)權(quán)保護(hù)協(xié)議2篇
- 妊娠合并低鉀血癥護(hù)理查房
- 煤礦反三違培訓(xùn)課件
- 向流程設(shè)計(jì)要效率
- 安全文明施工的管理要點(diǎn)
- 2024年中國航空發(fā)動(dòng)機(jī)集團(tuán)招聘筆試參考題庫含答案解析
- 當(dāng)代中外公司治理典型案例剖析(中科院研究生課件)
- 動(dòng)力管道設(shè)計(jì)手冊(cè)-第2版
- 2022年重慶市中考物理試卷A卷(附答案)
- Python繪圖庫Turtle詳解(含豐富示例)
- 煤礦機(jī)電設(shè)備檢修技術(shù)規(guī)范完整版
- 榆林200MWp并網(wǎng)光伏發(fā)電項(xiàng)目可行性研究報(bào)告
評(píng)論
0/150
提交評(píng)論