![年工業(yè)物聯(lián)網(wǎng)白皮書(shū)(完整版)資料_第1頁(yè)](http://file4.renrendoc.com/view/991292be5bbfcb23875ece44935b4e50/991292be5bbfcb23875ece44935b4e501.gif)
![年工業(yè)物聯(lián)網(wǎng)白皮書(shū)(完整版)資料_第2頁(yè)](http://file4.renrendoc.com/view/991292be5bbfcb23875ece44935b4e50/991292be5bbfcb23875ece44935b4e502.gif)
![年工業(yè)物聯(lián)網(wǎng)白皮書(shū)(完整版)資料_第3頁(yè)](http://file4.renrendoc.com/view/991292be5bbfcb23875ece44935b4e50/991292be5bbfcb23875ece44935b4e503.gif)
![年工業(yè)物聯(lián)網(wǎng)白皮書(shū)(完整版)資料_第4頁(yè)](http://file4.renrendoc.com/view/991292be5bbfcb23875ece44935b4e50/991292be5bbfcb23875ece44935b4e504.gif)
![年工業(yè)物聯(lián)網(wǎng)白皮書(shū)(完整版)資料_第5頁(yè)](http://file4.renrendoc.com/view/991292be5bbfcb23875ece44935b4e50/991292be5bbfcb23875ece44935b4e505.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
年工業(yè)物聯(lián)網(wǎng)白皮書(shū)(完整版)資料(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)
工業(yè)物聯(lián)網(wǎng)白皮書(shū)(2021)年工業(yè)物聯(lián)網(wǎng)白皮書(shū)(完整版)資料(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)目前,物聯(lián)網(wǎng)進(jìn)入與傳統(tǒng)產(chǎn)業(yè)深度融合發(fā)展的嶄新階段,工業(yè)制造領(lǐng)域的轉(zhuǎn)型升級(jí)成為工業(yè)物聯(lián)網(wǎng)發(fā)展的重要驅(qū)動(dòng)力,世界各國(guó)紛紛發(fā)布相關(guān)的戰(zhàn)略舉措,搶占新一輪發(fā)展戰(zhàn)略機(jī)遇。值此工業(yè)物聯(lián)網(wǎng)的關(guān)鍵發(fā)展時(shí)期,《工業(yè)物聯(lián)網(wǎng)白皮書(shū)(2021)》重點(diǎn)圍繞工業(yè)物聯(lián)網(wǎng)的發(fā)展背景、內(nèi)涵本質(zhì)、技術(shù)現(xiàn)狀、標(biāo)準(zhǔn)現(xiàn)狀以及產(chǎn)業(yè)應(yīng)用等方面展開(kāi)論述。
《工業(yè)物聯(lián)網(wǎng)白皮書(shū)(2021)》對(duì)工業(yè)物聯(lián)網(wǎng)的定位是:工業(yè)物聯(lián)網(wǎng)是支撐智能制造的一套使能技術(shù)體系。依據(jù)物聯(lián)網(wǎng)的相關(guān)定義及在工業(yè)制造領(lǐng)域中應(yīng)用現(xiàn)狀的深入研究,本白皮書(shū)嘗試地給出工業(yè)物聯(lián)網(wǎng)的定義:工業(yè)物聯(lián)網(wǎng)是通過(guò)工業(yè)資源的網(wǎng)絡(luò)互連、數(shù)據(jù)互通和系統(tǒng)互操作,實(shí)現(xiàn)制造原料的靈活配置、制造過(guò)程的按需執(zhí)行、制造工藝的合理優(yōu)化和制造環(huán)境的快速適應(yīng),達(dá)到資源的高效利用,從而構(gòu)建服務(wù)驅(qū)動(dòng)型的新工業(yè)生態(tài)體系。工業(yè)物聯(lián)網(wǎng)表現(xiàn)出六大典型特征:智能感知、泛在連通、精準(zhǔn)控制、數(shù)字建模、實(shí)時(shí)分析和迭代優(yōu)化。
《工業(yè)物聯(lián)網(wǎng)白皮書(shū)(2021)》目錄
一、工業(yè)物聯(lián)網(wǎng)的發(fā)展背景
(一)工業(yè)物聯(lián)網(wǎng)的發(fā)展現(xiàn)狀
(二)工業(yè)物聯(lián)網(wǎng)的發(fā)展需求
工業(yè)物聯(lián)網(wǎng)的發(fā)展意義
二、工業(yè)物聯(lián)網(wǎng)的內(nèi)涵
(一)工業(yè)物聯(lián)網(wǎng)的本質(zhì)
(二)工業(yè)物聯(lián)網(wǎng)的階段
(三)工業(yè)物聯(lián)網(wǎng)的價(jià)值
三、工業(yè)物聯(lián)網(wǎng)的技術(shù)現(xiàn)狀
(一)工業(yè)物聯(lián)網(wǎng)的參考體系架構(gòu)
(二)工業(yè)物聯(lián)網(wǎng)的技術(shù)體系
(三)工業(yè)物聯(lián)網(wǎng)的技術(shù)趨勢(shì)
四、工業(yè)物聯(lián)網(wǎng)的產(chǎn)業(yè)現(xiàn)狀
(一)工業(yè)物聯(lián)網(wǎng)的終端產(chǎn)業(yè)現(xiàn)狀
(二)工業(yè)物聯(lián)網(wǎng)的平臺(tái)產(chǎn)業(yè)現(xiàn)狀
五、工業(yè)物聯(lián)網(wǎng)的標(biāo)準(zhǔn)現(xiàn)狀
(一)國(guó)內(nèi)外已開(kāi)展的物聯(lián)網(wǎng)標(biāo)準(zhǔn)化工作
(二)國(guó)內(nèi)外已開(kāi)展的工業(yè)物聯(lián)網(wǎng)標(biāo)準(zhǔn)化工作
(三)有待解決的工業(yè)物聯(lián)網(wǎng)標(biāo)準(zhǔn)化問(wèn)題
六、工業(yè)物聯(lián)網(wǎng)的應(yīng)用
(一)服務(wù)模式創(chuàng)新:基于機(jī)床物聯(lián)網(wǎng)的租賃應(yīng)用
(二)金融領(lǐng)域創(chuàng)新:基于工業(yè)物聯(lián)網(wǎng)的新保險(xiǎn)模式
(三)生產(chǎn)工藝優(yōu)化:實(shí)現(xiàn)對(duì)軋輥磨削的全程自動(dòng)控制
(四)智能物流應(yīng)用:基于工業(yè)物聯(lián)網(wǎng)的物流自動(dòng)化
《物聯(lián)網(wǎng)數(shù)據(jù)處理》實(shí)驗(yàn)指導(dǎo)書(shū)實(shí)驗(yàn)一:熟悉常用的Linux操作(2學(xué)時(shí))一、實(shí)驗(yàn)?zāi)康呐c要求1、熟悉安裝和配置Linux。2、熟悉常用的Linux操作。6、總結(jié)在調(diào)試過(guò)程中的錯(cuò)誤。二、實(shí)驗(yàn)類(lèi)型驗(yàn)證型三、實(shí)驗(yàn)原理及說(shuō)明通過(guò)實(shí)際操作,使學(xué)生對(duì)Linux的使用有一個(gè)更深刻的理解;熟悉Linux的開(kāi)發(fā)環(huán)境及程序結(jié)構(gòu)。四、實(shí)驗(yàn)儀器安裝操作系統(tǒng):Linux五、實(shí)驗(yàn)內(nèi)容和步驟熟悉常用的Linux操作請(qǐng)按要求上機(jī)實(shí)踐如下linux基本命令。cd命令:切換目錄(1)切換到目錄/usr/local(2)去到目前的上層目錄(3)回到自己的主文件夾ls命令:查看文件與目錄(4)查看目錄/usr下所有的文件mkdir命令:新建新目錄(5)進(jìn)入/tmp目錄,創(chuàng)建一個(gè)名為a的目錄,并查看有多少目錄存在(6)創(chuàng)建目錄a1/a2/a3/a4rmdir命令:刪除空的目錄(7)將上例創(chuàng)建的目錄a(/tmp下面)刪除(8)刪除目錄a1/a2/a3/a4,查看有多少目錄存在cp命令:復(fù)制文件或目錄(9)將主文件夾下的.bashrc復(fù)制到/usr下,命名為bashrc1(10)在/tmp下新建目錄test,再?gòu)?fù)制這個(gè)目錄內(nèi)容到/usrmv命令:移動(dòng)文件與目錄,或更名(11)將上例文件bashrc1移動(dòng)到目錄/usr/test(12)將上例test目錄重命名為test2rm命令:移除文件或目錄(13)將上例復(fù)制的bashrc1文件刪除(14)rm-rf將上例的test2目錄刪除cat命令:查看文件內(nèi)容(15)查看主文件夾下的.bashrc文件內(nèi)容tac命令:反向列示(16)反向查看主文件夾下.bashrc文件內(nèi)容more命令:一頁(yè)一頁(yè)翻動(dòng)查看(17)翻頁(yè)查看主文件夾下.bashrc文件內(nèi)容head命令:取出前面幾行(18)查看主文件夾下.bashrc文件內(nèi)容前20行(19)查看主文件夾下.bashrc文件內(nèi)容,后面50行不顯示,只顯示前面幾行tail命令:取出后面幾行(20)查看主文件夾下.bashrc文件內(nèi)容最后20行(21)查看主文件夾下.bashrc文件內(nèi)容,只列出50行以后的數(shù)據(jù)touch命令:修改文件時(shí)間或創(chuàng)建新文件(22)在/tmp下創(chuàng)建一個(gè)空文件hello并查看時(shí)間(23)修改hello文件,將日期調(diào)整為5天前chown命令:修改文件所有者權(quán)限(24)將hello文件所有者改為root帳號(hào),并查看屬性find命令:文件查找(25)找出主文件夾下文件名為.bashrc的文件tar命令:壓縮命令(27)解壓縮到/tmp目錄grep命令:查找字符串(28)從~/.bashrc文件中查找字符串'examples'(29)配置Java環(huán)境變量,在~/.bashrc中設(shè)置(30)查看JAVA_HOME變量的值六、注意事項(xiàng)命令的名稱(chēng)。七、預(yù)習(xí)與思考題1、Linux操作系統(tǒng)的安裝和使用2、常用的命令
實(shí)驗(yàn)二:安裝Hadoop開(kāi)發(fā)環(huán)境(2學(xué)時(shí))一、實(shí)驗(yàn)?zāi)康呐c要求1.掌握Linux虛擬機(jī)安裝方法或者雙操作系統(tǒng)安裝方法。Hadoop在Linux操作系統(tǒng)上運(yùn)行可以發(fā)揮最佳性能,鑒于目前很多讀者可能正在使用Windows操作系統(tǒng),因此,為了完成本書(shū)的后續(xù)實(shí)驗(yàn),這里有必要通過(guò)本實(shí)驗(yàn)讓讀者掌握在Windows操作系統(tǒng)上搭建Linux虛擬機(jī)的方法,以及安裝雙操作系統(tǒng)的方法(同時(shí)安裝Windows和Linux系統(tǒng),電腦開(kāi)機(jī)時(shí),可以選擇登錄哪個(gè)系統(tǒng))。2.掌握Hadoop的偽分布式安裝方法。很多讀者并不具備集群環(huán)境,需要在一臺(tái)機(jī)器上模擬一個(gè)小的集群,因此,需要通過(guò)本實(shí)驗(yàn)讓讀者掌握在單機(jī)上進(jìn)行Hadoop的偽分布式安裝方法。二、實(shí)驗(yàn)類(lèi)型綜合型三、實(shí)驗(yàn)原理及說(shuō)明通過(guò)實(shí)際操作,使學(xué)生對(duì)Hadoop的使用有一個(gè)更深刻的理解;熟悉Hadoop的開(kāi)發(fā)環(huán)境及程序結(jié)構(gòu)。四、實(shí)驗(yàn)儀器操作系統(tǒng):Windows系統(tǒng)或者Ubuntu(推薦)。虛擬機(jī)軟件:推薦使用的開(kāi)源虛擬機(jī)軟件為VirtualBox。VirtualBox是一款功能強(qiáng)大的免費(fèi)虛擬機(jī)軟件,它不僅具有豐富的特色,而且性能也很優(yōu)異,簡(jiǎn)單易用,可虛擬的系統(tǒng)包括Windows、MacOSX、Linux、OpenBSD、Solaris、IBMOS2甚至Android4.0系統(tǒng)等操作系統(tǒng)。讀者可以在Windows系統(tǒng)上安裝VirtualBox軟件,然后在VirtualBox上安裝并且運(yùn)行Linux操作系統(tǒng)。本次實(shí)驗(yàn)?zāi)J(rèn)的Linux發(fā)行版為Ubuntu14.04。五、實(shí)驗(yàn)內(nèi)容和步驟共享文件夾設(shè)置virtualbox中ubuntu和windows共享文件夾設(shè)置先關(guān)閉ubuntu,在virtualbox“設(shè)置”中找到“共享文件夾”,點(diǎn)擊進(jìn)入,點(diǎn)擊右邊添加目錄按鈕,添加windows中要共享的目錄,取一個(gè)名。比如我在D盤(pán)建一個(gè)名為share的文件夾,如下圖:重啟ubuntu,在ubuntu系統(tǒng)最上端“設(shè)備”中找到“共享文件夾”,點(diǎn)擊進(jìn)入,點(diǎn)擊右邊添加目錄按鈕,添加第二步操作的共享目錄,如進(jìn)入虛擬Ubuntu,在命令行終端下輸入:sudomkdir/mnt/sharedsudomount-tvboxsfshare/mnt/shared其中"share"是之前創(chuàng)建的共享文件夾的名字。OK,現(xiàn)在Ubuntu和主機(jī)可以互傳文件了。要想自動(dòng)掛載的話,可以在/etc/fstab中添加一項(xiàng)share/mnt/sharedvboxsfrw,gid=100,uid=1000,auto00Java安裝第一步獲取安裝包。到oracle官方去下載jdk安裝包,選擇版本時(shí)注意選擇自己的系統(tǒng)的版本。第二步:解壓安裝cd/usr/lib/jvm第三步:修改環(huán)境變量vi~/.bashrc添加:exportJAVA_HOME=/usr/lib/jvm/java-7-sunexportJRE_HOME=${JAVA_HOME}/jreexportCLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexportPATH=${JAVA_HOME}/bin:$PATH保存退出,輸入以下命令使之立即生效。source~/.bashrc第四步:配置默認(rèn)JDK版本由于ubuntu中可能會(huì)有默認(rèn)的JDK,如openjdk,所以,為了將我們安裝的JDK設(shè)置為默認(rèn)JDK版本,還要進(jìn)行如下工作。執(zhí)行代碼:sudoupdate-alternatives--install/usr/bin/javajava/usr/lib/jvm/java-7-sun/bin/java300sudoupdate-alternatives--install/usr/bin/javacjavac/usr/lib/jvm/java-7-sun/bin/javac300sudoupdate-alternatives--install/usr/bin/jarjar/usr/lib/jvm/java-7-sun/bin/jar300sudoupdate-alternatives--install/usr/bin/javahjavah/usr/lib/jvm/java-7-sun/bin/javah300sudoupdate-alternatives--install/usr/bin/javapjavap/usr/lib/jvm/java-7-sun/bin/javap300執(zhí)行代碼:sudoupdate-alternatives--configjava系統(tǒng)會(huì)列出各種JDK版本,如下所示:baidu@baidu:~$sudoupdate-alternatives--configjava有3個(gè)候選項(xiàng)可用于替換java(提供/usr/bin/java)。選擇路徑優(yōu)先級(jí)狀態(tài)*0/usr/lib/jvm/java-6-openjdk/jre/bin/java1061自動(dòng)模式1/usr/lib/jvm/java-6-openjdk/jre/bin/java1061手動(dòng)模式2/usr/lib/jvm/java-6-sun/jre/bin/java63手動(dòng)模式3/usr/lib/jvm/java-7-sun/bin/java300手動(dòng)模式要維持當(dāng)前值[*]請(qǐng)按回車(chē)鍵,或者鍵入選擇的編號(hào):3update-alternatives:使用/usr/lib/jvm/java-7-sun/bin/java來(lái)提供/usr/bin/java(java),于手動(dòng)模式中。第五步:測(cè)試baidu@baidu:~$java-versionJavaHotSpot(TM)ServerVM(build21.0-b17,mixedmode)Hadoop安裝1、創(chuàng)建hadoop用戶安裝Ubuntu的時(shí)候不是用的“hadoop”用戶,那么需要增加一個(gè)名為hadoop的用戶。首先按ctrl+alt+t打開(kāi)終端窗口,輸入如下命令創(chuàng)建新用戶:sudouseradd-mhadoop-s/bin/bash接著使用如下命令設(shè)置密碼,可簡(jiǎn)單設(shè)置為hadoop,按提示輸入兩次密碼:sudopasswdhadoop可為hadoop用戶增加管理員權(quán)限,方便部署,避免一些對(duì)新手來(lái)說(shuō)比較棘手的權(quán)限問(wèn)題:sudoadduserhadoopsudo最后注銷(xiāo)當(dāng)前用戶(點(diǎn)擊屏幕右上角的齒輪,選擇注銷(xiāo)),返回登陸界面。在登陸界面中選擇剛創(chuàng)建的hadoop用戶進(jìn)行登陸。2.安裝SSH、配置SSH無(wú)密碼登陸集群、單節(jié)點(diǎn)模式都需要用到SSH登陸(類(lèi)似于遠(yuǎn)程登陸,你可以登錄某臺(tái)Linux主機(jī),并且在上面運(yùn)行命令),Ubuntu默認(rèn)已安裝了SSHclient,此外還需要安裝SSHserver:安裝后,可以使用如下命令登陸本機(jī):sshlocalhost利用ssh-keygen生成密鑰,并將密鑰加入到授權(quán)中:$exit#退出剛才的sshlocalhost$cd~/.ssh/#若沒(méi)有該目錄,請(qǐng)先執(zhí)行一次sshlocalhost$ssh-keygen-trsa#會(huì)有提示,都按回車(chē)就可以$cat./id_rsa.pub>>./authorized_keys#加入授權(quán)$cd/usr/local/$sudochown-Rhadoop./hadoop#修改文件權(quán)限$cd/usr/local/hadoop$./bin/hadoopversion六、注意事項(xiàng)七、預(yù)習(xí)與思考題1、在Linux環(huán)境下完成偽分布式環(huán)境的搭建,并運(yùn)行Hadoop自帶的WordCount實(shí)例檢測(cè)是否運(yùn)行正常。
實(shí)驗(yàn)三:熟悉Hadoop平臺(tái)(2學(xué)時(shí))一、實(shí)驗(yàn)?zāi)康呐c要求1、理解Hadoop平臺(tái)運(yùn)行原理。2、熟悉Hadoop的操作二、實(shí)驗(yàn)類(lèi)型設(shè)計(jì)型三、實(shí)驗(yàn)原理及說(shuō)明通過(guò)實(shí)際操作,使學(xué)生對(duì)Hadoop的使用有一個(gè)更深刻的理解;熟悉Hadoop的開(kāi)發(fā)環(huán)境及程序結(jié)構(gòu)。四、實(shí)驗(yàn)儀器安裝Ubuntu系統(tǒng)的計(jì)算機(jī)若干臺(tái)五、實(shí)驗(yàn)內(nèi)容和步驟1.Hadoop單機(jī)配置(非分布式)Hadoop默認(rèn)模式為非分布式模式(本地模式),無(wú)需進(jìn)行其他配置即可運(yùn)行。非分布式即單Java進(jìn)程,方便進(jìn)行調(diào)試。Hadoop附帶了豐富的例子(運(yùn)行.可以看到所有例子),包括wordcount、terasort、join、grep等。在此我們選擇運(yùn)行g(shù)rep例子,我們將input文件夾中的所有文件作為輸入,篩選當(dāng)中符合正則表達(dá)式dfs[a-z.]+的單詞并統(tǒng)計(jì)出現(xiàn)的次數(shù),最后輸出結(jié)果到output文件夾中。執(zhí)行成功后如下所示,輸出了作業(yè)的相關(guān)信息,輸出的結(jié)果是符合正則的單詞dfsadmin出現(xiàn)了1次注意,Hadoop默認(rèn)不會(huì)覆蓋結(jié)果文件,因此再次運(yùn)行上面實(shí)例會(huì)提示出錯(cuò),需要先將./output刪除。2.Hadoop偽分布式配置Hadoop可以在單節(jié)點(diǎn)上以偽分布式的方式運(yùn)行,Hadoop進(jìn)程以分離的Java進(jìn)程來(lái)運(yùn)行,節(jié)點(diǎn)既作為NameNode也作為DataNode,同時(shí),讀取的是HDFS中的文件。Hadoop的配置文件位于/usr/local/hadoop/etc/hadoop/中,偽分布式需要修改2個(gè)配置文件core-site.xml和hdfs-site.xml。Hadoop的配置文件是xml格式,每個(gè)配置以聲明property的name和value的方式來(lái)實(shí)現(xiàn)。修改配置文件core-site.xml(通過(guò)gedit編輯會(huì)比較方便:gedit./etc/hadoop/core-site.xml),將當(dāng)中的修改為下面配置:同樣的,修改配置文件hdfs-site.xml:Hadoop配置文件說(shuō)明Hadoop的運(yùn)行方式是由配置文件決定的(運(yùn)行Hadoop時(shí)會(huì)讀取配置文件),因此如果需要從偽分布式模式切換回非分布式模式,需要?jiǎng)h除core-site.xml中的配置項(xiàng)。配置完成后,執(zhí)行NameNode的格式化:成功的話,會(huì)看到“successfullyformatted”和“Exittingwithstatus0”的提示,若為“Exittingwithstatus1”則是出錯(cuò)。如果在這一步時(shí)提示Error:JAVA_HOMEisnotsetandcouldnotbefound.的錯(cuò)誤,則說(shuō)明之前設(shè)置JAVA_HOME環(huán)境變量那邊就沒(méi)設(shè)置好,請(qǐng)先設(shè)置好JAVA_HOME變量,否則后面的過(guò)程都是進(jìn)行不下去的。接著開(kāi)啟NameNode和DataNode守護(hù)進(jìn)程。若出現(xiàn)如下SSH提示,輸入yes即可。啟動(dòng)時(shí)可能會(huì)出現(xiàn)如下WARN提示:WARNutil.NativeCodeLoader:Unabletoloadnative-hadooplibraryforyourplatform…usingbuiltin-javaclasseswhereapplicableWARN提示可以忽略,并不會(huì)影響正常使用。啟動(dòng)Hadoop時(shí)提示Couldnotresolvehostname如果啟動(dòng)Hadoop時(shí)遇到輸出非常多“ssh:Couldnotresolvehostnamexxx”的異常情況,如下圖所示:這個(gè)并不是ssh的問(wèn)題,可通過(guò)設(shè)置Hadoop環(huán)境變量來(lái)解決。首先按鍵盤(pán)的ctrl+c中斷啟動(dòng),然后在~/.bashrc中,增加如下兩行內(nèi)容(設(shè)置過(guò)程與JAVA_HOME變量一樣,其中HADOOP_HOME為Hadoop的安裝目錄):保存后,務(wù)必執(zhí)行source~/.bashrc使變量設(shè)置生效,然后再次執(zhí)行./sbin/start-dfs.sh啟動(dòng)Hadoop。啟動(dòng)完成后,可以通過(guò)命令jps來(lái)判斷是否成功啟動(dòng),若成功啟動(dòng)則會(huì)列出如下進(jìn)程:“NameNode”、”DataNode”和“SecondaryNameNode”(如果SecondaryNameNode沒(méi)有啟動(dòng),請(qǐng)運(yùn)行sbin/stop-dfs.sh關(guān)閉進(jìn)程,然后再次嘗試啟動(dòng)嘗試)。如果沒(méi)有NameNode或DataNode,那就是配置不成功,請(qǐng)仔細(xì)檢查之前步驟,或通過(guò)查看啟動(dòng)日志排查原因。成功啟動(dòng)后,可以訪問(wèn)Web界面://localhost:50070查看NameNode和Datanode信息,還可以在線查看HDFS中的文件。六、注意事項(xiàng)熟悉Hadoop的配置文件。七、預(yù)習(xí)與思考題單機(jī)版與偽分布式的配置。
實(shí)驗(yàn)四:Hadoop初級(jí)實(shí)踐(2學(xué)時(shí))一、實(shí)驗(yàn)?zāi)康呐c要求1、理解Hadoop平臺(tái)運(yùn)行原理。2、熟悉wordcount程序。二、實(shí)驗(yàn)類(lèi)型設(shè)計(jì)型三、實(shí)驗(yàn)原理及說(shuō)明通過(guò)實(shí)際操作,使學(xué)生對(duì)Hadoop的使用有一個(gè)更深刻的理解;熟悉Hadoop的開(kāi)發(fā)環(huán)境及程序結(jié)構(gòu)。四、實(shí)驗(yàn)儀器安裝Ubuntu系統(tǒng)的計(jì)算機(jī)若干臺(tái)五、實(shí)驗(yàn)內(nèi)容和步驟單詞計(jì)數(shù)是最簡(jiǎn)單也是最能體現(xiàn)MapReduce思想的程序之一,可以稱(chēng)為MapReduce版"HelloWorld",該程序的完整代碼可以在Hadoop安裝包的"src/examples"目錄下找到。單詞計(jì)數(shù)主要完成功能是:統(tǒng)計(jì)一系列文本文件中每個(gè)單詞出現(xiàn)的次數(shù),如下圖所示。以"hadoop"用戶登錄Hadoop服務(wù)器。1.創(chuàng)建本地的示例數(shù)據(jù)文件:并在這個(gè)目錄下創(chuàng)建2個(gè)文件分別命名為【myTest1.txt】和【myTest2.txt】或者你想要的任何文件名。分別在這2個(gè)文件中輸入下列示例語(yǔ)句:2.在HDFS上創(chuàng)建輸入文件夾調(diào)出終端,輸入下面指令:$cd/usr/local/hadoop$./bin/hadoopfs-mkdirhdfsInput執(zhí)行這個(gè)命令時(shí)可能會(huì)提示類(lèi)似安全的問(wèn)題,如果提示了,請(qǐng)使用$./bin/hadoopdfsadmin-safemodeleave來(lái)退出安全模式。當(dāng)分布式文件系統(tǒng)處于安全模式的情況下,文件系統(tǒng)中的內(nèi)容不允許修改也不允許刪除,直到安全模式結(jié)束。安全模式主要是為了系統(tǒng)啟動(dòng)的時(shí)候檢查各個(gè)DataNode上數(shù)據(jù)塊的有效性,同時(shí)根據(jù)策略必要的復(fù)制或者刪除部分?jǐn)?shù)據(jù)塊。運(yùn)行期通過(guò)命令也可以進(jìn)入安全模式。3.上傳本地file中文件到集群的hdfsInput目錄下在終端依次輸入下面指令:$./bin/hadoopfs-putfile/myTest*.txthdfsInput4.運(yùn)行例子:在終端輸入下面指令:$./bin/hadoop$./bin/hadoopjarhadoop-examples-*.jarwordcounthdfsInputhdfsOutput應(yīng)該出現(xiàn)下面結(jié)果:Hadoop命令會(huì)啟動(dòng)一個(gè)JVM來(lái)運(yùn)行這個(gè)MapReduce程序,并自動(dòng)獲得Hadoop的配置,同時(shí)把類(lèi)的路徑(及其依賴關(guān)系)加入到Hadoop的庫(kù)中。以上就是HadoopJob的運(yùn)行記錄,從這里可以看到,這個(gè)Job被賦予了一個(gè)ID號(hào):job_2_0002,而且得知輸入文件有兩個(gè)(Totalinputpathstoprocess:2),同時(shí)還可以了解map的輸入輸出記錄(record數(shù)及字節(jié)數(shù)),以及reduce輸入輸出記錄。查看HDFS上hdfsOutput目錄內(nèi)容:在終端輸入下面指令:bin/hadoopfs-lshdfsOutput從上圖中知道生成了三個(gè)文件,我們的結(jié)果在"part-r-00000"中。使用下面指令查看結(jié)果輸出文件內(nèi)容bin/hadoopfs-catoutput/part-r-00000輸出目錄日志以及輸入目錄中的文件是永久存在的,如果不刪除的話,如果出現(xiàn)結(jié)果不一致,請(qǐng)參考這個(gè)因素。六、注意事項(xiàng)熟悉Hadoop常用的命令。七、預(yù)習(xí)與思考題Hadoop的執(zhí)行過(guò)程。
實(shí)驗(yàn)五:熟悉常用的HDFS操作(2學(xué)時(shí))一、實(shí)驗(yàn)?zāi)康呐c要求1、理解Hadoop平臺(tái)運(yùn)行原理。2、熟悉HDFS系統(tǒng)二、實(shí)驗(yàn)類(lèi)型設(shè)計(jì)型三、實(shí)驗(yàn)原理及說(shuō)明通過(guò)實(shí)際操作,使學(xué)生對(duì)Hadoop的使用有一個(gè)更深刻的理解;熟悉Hadoop的開(kāi)發(fā)環(huán)境及程序結(jié)構(gòu)。四、實(shí)驗(yàn)儀器安裝Ubuntu系統(tǒng)的計(jì)算機(jī)若干臺(tái)五、實(shí)驗(yàn)內(nèi)容和步驟1.編寫(xiě)簡(jiǎn)單shell腳步使用gedit等任意文本編輯工具,都可以編寫(xiě)shell腳本。使用“gedittest.sh”在當(dāng)前目錄下,創(chuàng)建一個(gè)測(cè)試shell腳本。shell腳本的后綴習(xí)慣性寫(xiě)成“.sh”。2shell腳本的開(kāi)始需要聲明此腳本使用什么程序解析執(zhí)行,首行為“#!/bin/sh
”,標(biāo)明使用bash解析器解析當(dāng)前shell腳本。3完成所有語(yǔ)言都有的入門(mén)級(jí)顯示效果,使用shell腳本打印helloworld,第二行為“echo‘HelloWorld!’”。4由于新建的shell腳本沒(méi)有執(zhí)行權(quán)限,首先使用“chmod755test.sh”對(duì)shell腳本添加執(zhí)行權(quán)限。5使用“./test.sh”命令執(zhí)行新建的shell腳本。6看看自己編寫(xiě)第一個(gè)shell腳本執(zhí)行的結(jié)果吧。利用Hadoop提供的Shell命令完成相同任務(wù):向HDFS中上傳任意文本文件,如果指定的文件在HDFS中已經(jīng)存在,由用戶指定是追加到原有文件末尾還是覆蓋原有的文件;先到Hadoop主文件夾cd/usr/local/hadoop啟動(dòng)Hadoop服務(wù)sbin/start-dfs.shsbin/start-yarn.sh創(chuàng)建兩個(gè)任意文本文件用于實(shí)驗(yàn)echo"helloworld">local.txtecho"hellohadoop">text.txt檢查文件是否存在hadoopfs-test-etext.txtecho$?上傳本地文件到HDFS系統(tǒng)(上傳之后再執(zhí)行一遍上一步,如果是第一次做HDFS操作第一次做這一步會(huì)出錯(cuò),可以直接做一次hadoopfs-appendToFilelocal.txttext.txt就能解決)hadoopfs-puttext.txt追加到文件末尾的指令hadoopfs-appendToFilelocal.txttext.txt查看HDFS文件的內(nèi)容hadoopfs-cattext.txt覆蓋原有文件的指令(覆蓋之后再執(zhí)行一遍上一步)hadoopfs-copyFromLocal-flocal.txttext.txt以上步驟也可以用如下Shell腳步實(shí)現(xiàn)if$(hadoopfs-test-etext.txt);then$(hadoopfs-appendToFilelocal.txttext.txt);else$(hadoopfs-copyFromLocal-flocal.txttext.txt);fi從HDFS中下載指定文件,如果本地文件與要下載的文件名稱(chēng)相同,則自動(dòng)對(duì)下載的文件重命名;Shell命令實(shí)現(xiàn):if$(hadoopfs-test-e/usr/local/hadoop/text.txt);then$(hadoopfs-copyToLocaltext.txt./text.txt);else$(hadoopfs-copyToLocaltext.txt./text2.txt);fi將HDFS中指定文件的內(nèi)容輸出到終端中;hadoopfs-cattext.txt顯示HDFS中指定的文件的讀寫(xiě)權(quán)限、大小、創(chuàng)建時(shí)間、路徑等信息;hadoopfs-ls-htext.txt給定HDFS中某一個(gè)目錄,輸出該目錄下的所有文件的讀寫(xiě)權(quán)限、大小、創(chuàng)建時(shí)間、路徑等信息,如果該文件是目錄,則遞歸輸出該目錄下所有文件相關(guān)信息;hadoopfs-ls-R-h/user/tiny提供一個(gè)HDFS內(nèi)的文件的路徑,對(duì)該文件進(jìn)行創(chuàng)建和刪除操作。如果文件所在目錄不存在,則自動(dòng)創(chuàng)建目錄;Shell命令實(shí)現(xiàn):if$(hadoopfs-test-ddir1/dir2);then$(hadoopfs-touchzdir1/dir2/filename);else$(hadoopfs-mkdir-pdir1/dir2&&hdfsdfs-touchzdir1/dir2/filename);fi刪除操作hadoopfs-rmdir1/dir2/filename提供一個(gè)HDFS的目錄的路徑,對(duì)該目錄進(jìn)行創(chuàng)建和刪除操作。創(chuàng)建目錄時(shí),如果目錄文件所在目錄不存在則自動(dòng)創(chuàng)建相應(yīng)目錄;刪除目錄時(shí),由用戶指定當(dāng)該目錄不為空時(shí)是否還刪除該目錄;創(chuàng)建目錄
hadoopfs-mkdir-pdir1/dir2刪除目錄(如果目錄非空則會(huì)提示notempty,不執(zhí)行刪除)
hadoopfs-rmdirdir1/dir2強(qiáng)制刪除目錄
hadoopfs-rm-rdir1/dir2向HDFS中指定的文件追加內(nèi)容,由用戶指定內(nèi)容追加到原有文件的開(kāi)頭或結(jié)尾;追加到文件末尾hadoopfs-appendToFilelocal.txttext.txt追加到文件開(kāi)頭hadoopfs-gettext.txtcattext.txt>>local.txthadoopfs-copyFromLocal-ftext.txttext.txt刪除HDFS中指定的文件;hadoopfs-rmtext.txt刪除HDFS中指定的目錄,由用戶指定目錄中如果存在文件時(shí)是否刪除目錄;刪除目錄(如果目錄非空則會(huì)提示notempty,不執(zhí)行刪除)
hadoopfs-rmdirdir1/dir2強(qiáng)制刪除目錄
hadoopfs-rm-Rdir1/dir2在HDFS中,將文件從源路徑移動(dòng)到目的路徑。hadoopfs-mvtext.txtinput編程實(shí)現(xiàn)一個(gè)類(lèi)“MyFSDataInputStream”,該類(lèi)繼承“”,要求如下:實(shí)現(xiàn)按行讀取HDFS中指定文件的方法“readLine()”,如果讀到文件末尾,則返回空,否則返回文件一行的文本。publicclassMyFSDataInputStreamextendsFSDataInputStream{publicMyFSDataInputStream(InputStreamin){super(in);//TODOAuto-generatedconstructorstub}publicstaticStringreadline(Configurationconf,StringremoteFilePath)throwsIOException{FileSystemfs=FileSystem.get(conf);PathremotePath=newPath(remoteFilePath);FSDataInputStreamin=fs.open(remotePath);BufferedReaderd=newBufferedReader(newInputStreamReader(in));Stringline=null;if((line=d.readLine())!=null){d.close();in.close();fs.close();returnline;}else{d.close();in.close();fs.close();returnnull;}}publicstaticvoidmain(String[]args){Configurationconf=newConfiguration();StringremoteFilePath="/user/tiny/text.txt";//HDFS路徑try{}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}4.查看Java幫助手冊(cè)或其它資料,用“”和“”編程完成輸出HDFS中指定文件的文本到終端中。publicclassFsUrl{static{URL.setURLStreamHandlerFactory(newFsUrlStreamHandlerFactory());}publicstaticvoidcat(StringremoteFilePath)throwsIOException{InputStreamin=null;try{in=newURL("hdfs","localhost",9000,remoteFilePath).openStream();IOUtils.copyBytes(in,System.out,4096,false);}finally{IOUtils.closeStream(in);}}/***主函數(shù)*/publicstaticvoidmain(String[]args){StringremoteFilePath="/user/tiny/text.txt";//HDFS路徑try{FsUrl.cat(remoteFilePath);}catch(Exceptione){e.printStackTrace();}}}六、注意事項(xiàng)熟悉HDFS常用的命令。七、預(yù)習(xí)與思考題HDFS的執(zhí)行過(guò)程。
實(shí)驗(yàn)六:熟悉常用的HBase操作(2學(xué)時(shí))一、實(shí)驗(yàn)?zāi)康呐c要求1. 理解HBase在Hadoop體系結(jié)構(gòu)中的角色;2. 熟練使用HBase操作常用的Shell命令;3. 熟悉HBase操作常用的JavaAPI。二、實(shí)驗(yàn)類(lèi)型設(shè)計(jì)型三、實(shí)驗(yàn)原理及說(shuō)明通過(guò)實(shí)際操作,使學(xué)生對(duì)HBase的使用有一個(gè)更深刻的理解;熟悉HBase的開(kāi)發(fā)環(huán)境。四、實(shí)驗(yàn)儀器操作系統(tǒng):LinuxHadoop版本:2.6.0或以上版本HBase版本:JDK版本:1.6或以上版本JavaIDE:Eclipse五、實(shí)驗(yàn)內(nèi)容和步驟把HBase壓縮包放到Home文件夾中右鍵打開(kāi)終端,解壓HBase到/usr/local重命名方便后續(xù)操作獲取文件夾權(quán)限(tiny改為你的主機(jī)名)sudochown-Rtiny/usr/local/hbase/設(shè)置環(huán)境變量sudogedit/etc/profile在最后一行添加內(nèi)容:#sethbasepathexportPATH=$PATH:/usr/local/hbase/bin使環(huán)境變量生效source/etc/profile配置Hbase的配置文件進(jìn)入/usr/local/hbase/conf/cd/usr/local/hbase/conf/配置hbase-env.shgedithbase-env.sh在最后一行添加內(nèi)容:配置hbase-site.xmlgedithbase-site.xml在<configuration>標(biāo)簽中添加內(nèi)容:<property><name>hbase.rootdir</name><value>hdfs://localhost:9000/hbase</value></property><property><value>true</value></property>啟動(dòng)Hadoop進(jìn)入Hadoop主文件夾cd/usr/local/hadoop/開(kāi)啟Hadoop相關(guān)進(jìn)程sbin/start-dfs.shsbin/start-yarn.sh啟動(dòng)HBase進(jìn)入HBase主文件夾cd/usr/local/hbase/開(kāi)啟HBase相關(guān)進(jìn)程bin/start-hbase.sh查看jps進(jìn)入HbaseShell創(chuàng)建一個(gè)表以便實(shí)驗(yàn)使用create'student','score'用Hadoop提供的HBaseShell命令完成相同任務(wù):列出HBase所有的表的相關(guān)信息,例如表名;以列表的形式顯示所有數(shù)據(jù)表
list查看表的結(jié)構(gòu)
describe'student'查詢表是否存在
exists'student'查詢表是否可用
is_enabled'student'在終端打印出指定的表的所有記錄數(shù)據(jù);scan'student'向已經(jīng)創(chuàng)建好的表添加和刪除指定的列族或列;put'student','s001','score:math','100'向student表,刪除指定列delete'student','s001','score:math'統(tǒng)計(jì)表的行數(shù)。count'student'現(xiàn)有以下關(guān)系型數(shù)據(jù)庫(kù)中的表和數(shù)據(jù),要求將其轉(zhuǎn)換為適合于HBase存儲(chǔ)的表并插入數(shù)據(jù):學(xué)生表(Student)學(xué)號(hào)(S_No)姓名(S_Name)性別(S_Sex)年齡(S_Age)Zhangsanmale23Maryfemale22Lisimale24課程表(Course)課程號(hào)(C_No)課程名(C_Name)學(xué)分(C_Credit)123001Math2.0123002ComputerScience5.0123003English3.0選課表(SC)學(xué)號(hào)(SC_Sno)課程號(hào)(SC_Cno)成績(jī)(SC_Score)123001861230036912300277123003991230019812300295同時(shí),請(qǐng)編程完成以下指定功能:(1)createTable(StringtableName,String[]fields) 創(chuàng)建表,參數(shù)tableName為表的名稱(chēng),字符串?dāng)?shù)組fields為存儲(chǔ)記錄各個(gè)域名稱(chēng)的數(shù)組。要求當(dāng)HBase已經(jīng)存在名為tableName的表的時(shí)候,先刪除原有的表,然后再創(chuàng)建新的表。publicclassHBase{publicstaticConfigurationconfiguration;publicstaticConnectionconnection;publicstaticAdminadmin;publicstaticvoidcreateTable(StringtableName,String[]fields)throwsIOException{init();TableNametablename=TableName.valueOf(tableName);if(admin.tableExists(tablename)){admin.disableTable(tablename);admin.deleteTable(tablename);//刪除原來(lái)的表}HTableDescriptorhTableDescriptor=newHTableDescriptor(tablename);for(Stringstr:fields){HColumnDescriptorhColumnDescriptor=newHColumnDescriptor(str);hTableDescriptor.addFamily(hColumnDescriptor);}admin.createTable(hTableDescriptor);close();}publicstaticvoidinit(){configuration=HBaseConfiguration.create();configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase");try{connection=ConnectionFactory.createConnection(configuration);admin=connection.getAdmin();}catch(IOExceptione){e.printStackTrace();}}//關(guān)閉連接publicstaticvoidclose(){try{if(admin!=null){admin.close();}if(null!=connection){connection.close();}}catch(IOExceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args){String[]fields={"Score"};try{HBase.createTable("person",fields);}catch(IOExceptione){e.printStackTrace();}}} (2)addRecord(StringtableName,Stringrow,String[]fields,String[]values) 向表tableName、行row(用S_Name表示)和字符串?dāng)?shù)組files指定的單元格中添加對(duì)應(yīng)的數(shù)據(jù)values。其中fields中每個(gè)元素如果對(duì)應(yīng)的列族下還有相應(yīng)的列限定符的話,用“columnFamily:column”表示。例如,同時(shí)向“Math”、“ComputerScience”、“English”三列添加成績(jī)時(shí),字符串?dāng)?shù)組fields為{“Score:Math”,”Score;ComputerScience”,”Score:English”},數(shù)組values存儲(chǔ)這三門(mén)課的成績(jī)。publicclassHBase{publicstaticConfigurationconfiguration;publicstaticConnectionconnection;publicstaticAdminadmin;publicstaticvoidaddRecord(StringtableName,Stringrow,String[]fields,String[]values)throwsIOException{init();Tabletable=connection.getTable(TableName.valueOf(tableName));for(inti=0;i!=fields.length;i++){Putput=newPut(row.getBytes());String[]cols=fields[i].split(":");put.addColumn(cols[0].getBytes(),cols[1].getBytes(),values[i].getBytes());table.put(put);}table.close();close();}publicstaticvoidinit(){configuration=HBaseConfiguration.create();configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase");try{connection=ConnectionFactory.createConnection(configuration);admin=connection.getAdmin();}catch(IOExceptione){e.printStackTrace();}}//關(guān)閉連接publicstaticvoidclose(){try{if(admin!=null){admin.close();}if(null!=connection){connection.close();}}catch(IOExceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args){String[]fields={"Score:Math","Score:ComputerScience","Score:English"};String[]values={"99","80","100"};try{HBase.addRecord("person","Score",fields,values);}catch(IOExceptione){e.printStackTrace();}}} (3)scanColumn(StringtableName,Stringcolumn) 瀏覽表tableName某一列的數(shù)據(jù),如果某一行記錄中該列數(shù)據(jù)不存在,則返回null。要求當(dāng)參數(shù)column為某一列族名稱(chēng)時(shí),如果底下有若干個(gè)列限定符,則要列出每個(gè)列限定符publicclassHBase{publicstaticConfigurationconfiguration;publicstaticConnectionconnection;publicstaticAdminadmin;publicstaticvoidscanColumn(StringtableName,Stringcolumn)throwsIOException{init();Tabletable=connection.getTable(TableName.valueOf(tableName));Scanscan=newScan();scan.addFamily(Bytes.toBytes(column));ResultScannerscanner=table.getScanner(scan);for(Resultresult=scanner.next();result!=null;result=scanner.next()){showCell(result);}table.close();close();}//格式化輸出publicstaticvoidshowCell(Resultresult){Cell[]cells=result.rawCells();for(Cellcell:cells){}}publicstaticvoidinit(){configuration=HBaseConfiguration.create();configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase");try{connection=ConnectionFactory.createConnection(configuration);admin=connection.getAdmin();}catch(IOExceptione){e.printStackTrace();}}//關(guān)閉連接publicstaticvoidclose(){try{if(admin!=null){admin.close();}if(null!=connection){connection.close();}}catch(IOExceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args){try{HBase.scanColumn("person","Score");}catch(IOExceptione){e.printStackTrace();}}}該列的數(shù)據(jù)。 (4)modifyData(StringtableName,Stringrow,Stringcolumn) 修改表tableName,行row(可以用學(xué)生姓名S_Name表示),列column指定的單元格的數(shù)據(jù)。publicclassHBase{publicstaticlongts;publicstaticConfigurationconfiguration;publicstaticConnectionconnection;publicstaticAdminadmin;publicstaticvoidmodifyData(StringtableName,Stringrow,Stringcolumn,Stringval)throwsIOException{init();Tabletable=connection.getTable(TableName.valueOf(tableName));Putput=newPut(row.getBytes());Scanscan=newScan();ResultScannerresultScanner=table.getScanner(scan);for(Resultr:resultScanner){for(Cellcell:r.getColumnCells(row.getBytes(),column.getBytes())){ts=cell.getTimestamp();}}put.addColumn(row.getBytes(),column.getBytes(),ts,val.getBytes());table.put(put);table.close();close();}publicstaticvoidinit(){configuration=HBaseConfiguration.create();configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase");try{connection=ConnectionFactory.createConnection(configuration);admin=connection.getAdmin();}catch(IOExceptione){e.printStackTrace();}}//關(guān)閉連接publicstaticvoidclose(){try{if(admin!=null){admin.close();}if(null!=connection){connection.close();}}catch(IOExceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args){try{HBase.modifyData("person","Score","Math","100");}catch(IOExceptione){e.printStackTrace();}}}(5)deleteRow(StringtableName,Stringrow) 刪除表tableName中row指定的行的記錄。publicclassHBase{publicstaticConfigurationconfiguration;publicstaticConnectionconnection;publicstaticAdminadmin;publicstaticvoiddeleteRow(StringtableName,Stringrow)throwsIOException{init();Tabletable=connection.getTable(TableName.valueOf(tableName));Deletedelete=newDelete(row.getBytes());//刪除指定列族//delete.addFamily(Bytes.toBytes(colFamily));//刪除指定列//delete.addColumn(Bytes.toBytes(colFamily),Bytes.toBytes(col));table.delete(delete);table.close();close();}publicstaticvoidinit(){configuration=HBaseConfiguration.create();configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase");try{connection=ConnectionFactory.createConnection(configuration);admin=connection.getAdmin();}catch(IOExceptione){e.printStackTrace();}}//關(guān)閉連接publicstaticvoidclose(){try{if(admin!=null){admin.close();}if(null!=connection){connection.close();}}catch(IOExceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args){try{HBase.deleteRow("person","Score");}catch(IOExceptione){e.printStackTrace();}}}六、注意事項(xiàng)HBase創(chuàng)建表,插入數(shù)據(jù)七、預(yù)習(xí)與思考題使用客戶端調(diào)用HBase
實(shí)驗(yàn)七:NoSQL和關(guān)系數(shù)據(jù)庫(kù)的操作比較(2學(xué)時(shí))一、實(shí)驗(yàn)?zāi)康呐c要求1. 理解二種數(shù)據(jù)庫(kù)(MySQL,HBase)的概念以及不同點(diǎn);2. 熟練使用二種數(shù)據(jù)庫(kù)操作常用的Shell命令;3. 熟悉二種數(shù)據(jù)庫(kù)操作常用的JavaAPI。二、實(shí)驗(yàn)類(lèi)型設(shè)計(jì)型三、實(shí)驗(yàn)原理及說(shuō)明通過(guò)實(shí)際操作,使學(xué)生對(duì)NoSQL的使用有一個(gè)更深刻的理解;熟悉NoSQL的開(kāi)發(fā)環(huán)境及結(jié)構(gòu)。四、實(shí)驗(yàn)儀器操作系統(tǒng):LinuxHadoop版本:或以上版本MySQL版本:5.6或以上版本HBase版本:或以上版本JDK版本:1.7或以上版本JavaIDE:Eclipse五、實(shí)驗(yàn)內(nèi)容和步驟3.1MySQL數(shù)據(jù)庫(kù)操作Student學(xué)生表NameEnglishMathComputerzhangsan698677lisi5510088根據(jù)上面給出的表格,利用MySQL5.6設(shè)計(jì)出student學(xué)生表格;設(shè)計(jì)完后,用select語(yǔ)句輸出所有的相關(guān)信息,并給出截圖;查詢zhangsan的Computer成績(jī),并給出截圖;修改lisi的Math成績(jī),改為95.給出截圖.根據(jù)上面已經(jīng)設(shè)計(jì)出的student表,用MySQL的JAVA客戶端編程;添加數(shù)據(jù):English:45 Math:89 Computer:100scofield4589100獲取scofield的English成績(jī)信息3.2HBase數(shù)據(jù)庫(kù)操作Student學(xué)生表namescoreEnglishMathComputerzhangsan698677lisi5510088根據(jù)上面給出的表格,用HbaseShell模式設(shè)計(jì)student學(xué)生表格。設(shè)計(jì)完后,用scan指令瀏覽表的相關(guān)信息,給出截圖。查詢zhangsan的Computer成績(jī),給出截圖。修改lisi的Math成績(jī),改為95,給出截圖。根據(jù)上面已經(jīng)設(shè)計(jì)出的student,用HbaseAPI編程。添加數(shù)據(jù):English:45 Math:89 Computer:100scofield4589100獲取scofield的English成績(jī)信息六、注意事項(xiàng)NoSQL不是一個(gè)具體數(shù)據(jù)庫(kù),而是一類(lèi)數(shù)據(jù)庫(kù)的統(tǒng)稱(chēng)七、預(yù)習(xí)與思考題鍵值數(shù)據(jù)庫(kù)、列族數(shù)據(jù)庫(kù)、文檔數(shù)據(jù)庫(kù)、圖形數(shù)據(jù)庫(kù)的區(qū)別
實(shí)驗(yàn)八:MapReduce編程初級(jí)實(shí)踐(2學(xué)時(shí))一、實(shí)驗(yàn)?zāi)康呐c要求1.通過(guò)實(shí)驗(yàn)掌握基本的MapReduce編程方法;2.掌握用MapReduce解決一些常見(jiàn)的數(shù)據(jù)處理問(wèn)題,包括數(shù)據(jù)去重、數(shù)據(jù)排序和數(shù)據(jù)挖掘等。二、實(shí)驗(yàn)類(lèi)型綜合型三、實(shí)驗(yàn)原理及說(shuō)明已經(jīng)配置完成的Hadoop偽分布式環(huán)境。四、實(shí)驗(yàn)儀器操作系統(tǒng):LinuxHadoop版本:或以上版本JDK版本:1.7或以上版本JavaIDE:Eclipse五、實(shí)驗(yàn)內(nèi)容和步驟1.編程實(shí)現(xiàn)文件合并和去重操作對(duì)于兩個(gè)輸入文件,即文件A和文件B,請(qǐng)編寫(xiě)MapReduce程序,對(duì)兩個(gè)文件進(jìn)行合并,并剔除其中重復(fù)的內(nèi)容,得到一個(gè)新的輸出文件C。下面是輸入文件和輸出文件的一個(gè)樣例供參考。輸入文件A的樣例如下: 20210101x 20210102y 20210103x 20210104y 20210105z20210106x輸入文件B的樣例如下:20210101y20210102y20210103x20210104z20210105y根據(jù)輸入文件A和B合并得到的輸出文件C的樣例如下:20210101x20210101y20210102y20210103x20210104y20210104z20210105y 20210105z20210106x創(chuàng)建文件f1和f2將上面樣例內(nèi)容復(fù)制進(jìn)去在HDFS建立input文件夾(執(zhí)行這步之前要開(kāi)啟hadoop相關(guān)進(jìn)程)上傳樣例到HDFS中的input文件夾接著打開(kāi)eclipse創(chuàng)建MapReduce項(xiàng)目(具體實(shí)現(xiàn)步驟在HDFS實(shí)驗(yàn)里已經(jīng)詳細(xì)給過(guò))Eclipse的使用找到File菜單,選擇New->Project選擇Map/ReduceProject,然后Next輸入Projectname,然后Finish點(diǎn)開(kāi)項(xiàng)目,找到src文件夾,右鍵選擇New->Class輸入Package和Name,然后Finish修改一下JRE寫(xiě)好Java代碼(給的代碼里要修改HDFS和本地路徑),右鍵選擇RunAs->RunonHadoop,結(jié)果在HDFS系統(tǒng)中查看實(shí)驗(yàn)代碼:packagecom.Merge;publicclassMerge{/***@paramargs*對(duì)A,B兩個(gè)文件進(jìn)行合并,并剔除其中重復(fù)的內(nèi)容,得到一個(gè)新的輸出文件C*///重載map函數(shù),直接將輸入中的value復(fù)制到輸出數(shù)據(jù)的key上publicstaticclassMapextendsMapper<Object,Text,Text,Text>{privatestaticTexttext=newText();publicvoidmap(Objectkey,Textvalue,Contextcontext)throwsIOException,InterruptedException{text=value;context.write(text,newText(""));}}//重載reduce函數(shù),直接將輸入中的key復(fù)制到輸出數(shù)據(jù)的key上publicstaticclassReduceextendsReducer<Text,Text,Text,Text>{publicvoidreduce(Textkey,Iterable<Text>values,Contextcontext)throwsIOException,InterruptedException{context.write(key,newText(""));}}publicstaticvoidmain(String[]args)throwsException{Configurationconf=newConfiguration();String[]otherArgs=newString[]{"input","output"};/*直接設(shè)置輸入?yún)?shù)*/if(otherArgs.length!=2){System.exit(2);}Jobjob=Job.getInstance(conf,"Mergeandduplicateremoval");job.setJarByClass(Merge.class);job.setMapperClass(Map.class);job.setCombinerClass(Reduce.class);job.setReducerClass(Reduce.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(Text.class);FileInputFormat.addInputPath(job,newPath(otherArgs[0]));FileOutputFormat.setOutputPath(job,newPath(otherArgs[1]));System.exit(job.waitForCompletion(true)?0:1);}}六、注意事項(xiàng)Map函數(shù)和Reduce函數(shù)的編寫(xiě)。七、預(yù)習(xí)與思考題如何利用MapReduce技術(shù)實(shí)現(xiàn)分布式計(jì)算。報(bào)告名稱(chēng):基于物聯(lián)網(wǎng)的智能家居控制系統(tǒng)設(shè)計(jì)方案
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 買(mǎi)賣(mài)租賃房屋合同
- 基于大數(shù)據(jù)技術(shù)的環(huán)保產(chǎn)業(yè)供應(yīng)鏈合作框架協(xié)議
- 抹灰分項(xiàng)工程勞務(wù)合同書(shū)
- 結(jié)婚財(cái)產(chǎn)分割協(xié)議
- 項(xiàng)目季度工作總結(jié)與成果展示報(bào)告
- 離婚協(xié)議談話筆錄
- 國(guó)際貨物買(mǎi)賣(mài)合同中的所有權(quán)轉(zhuǎn)移
- 專(zhuān)利權(quán)轉(zhuǎn)讓協(xié)議書(shū)
- 個(gè)人房屋轉(zhuǎn)讓合同協(xié)議
- 在線教育課程設(shè)計(jì)開(kāi)發(fā)合作協(xié)議
- 急性缺血性卒中再灌注治療指南2024解讀
- 2024土方工程承包合同包含進(jìn)度支付與違約責(zé)任條款范本3篇
- 醫(yī)院醫(yī)用織物洗滌(租賃)服務(wù)方案投標(biāo)文件
- 2022年濰坊工程職業(yè)學(xué)院?jiǎn)握杏⒄Z(yǔ)題庫(kù)及答案解析
- 中建醫(yī)院幕墻工程專(zhuān)項(xiàng)方案
- 基于OBE理念的世界現(xiàn)代史教學(xué)與學(xué)生歷史思維培養(yǎng)探究
- 數(shù)據(jù)中心供配電系統(tǒng)概述演示
- TSG11-2020鍋爐安全技術(shù)規(guī)程(現(xiàn)行)
- 一年級(jí)20以內(nèi)加減及混合口算練習(xí)題
- 中南大學(xué)《藥理學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 機(jī)電隊(duì)技術(shù)員安全生產(chǎn)責(zé)任制(3篇)
評(píng)論
0/150
提交評(píng)論