




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、.物聯(lián)網(wǎng)數(shù)據(jù)處理實 驗 指 導(dǎo) 書實驗一:熟悉常用的Linux操作(2學(xué)時)一、實驗?zāi)康呐c要求1、熟悉安裝和配置Linux。2、熟悉常用的Linux操作。6、總結(jié)在調(diào)試過程中的錯誤。二、實驗類型驗證型三、實驗原理及說明通過實際操作,使學(xué)生對Linux的使用有一個更深刻的理解;熟悉Linux的開發(fā)環(huán)境及程序結(jié)構(gòu)。四、實驗儀器安裝操作系統(tǒng):Linux 五、實驗內(nèi)容和步驟熟悉常用的Linux操作請按要求上機(jī)實踐如下linux基本命令。cd命令:切換目錄(1)切換到目錄 /usr/local(2)去到目前的上層目錄(3)回到自己的主文件夾ls命令:查看文件與目錄(4)查看目錄/usr下所有的文件mkd
2、ir命令:新建新目錄(5)進(jìn)入/tmp目錄,創(chuàng)建一個名為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,再復(fù)制這個目錄內(nèi)容到/usrmv命令:移動文件與目錄,或更名(11)將上例文件bashrc1移動到目錄/usr/test(12)將上例test目錄重命名為test2rm命令:移除文件或目錄(13)將上例復(fù)制的bash
3、rc1文件刪除(14)rm -rf 將上例的test2目錄刪除cat命令:查看文件內(nèi)容(15)查看主文件夾下的.bashrc文件內(nèi)容tac命令:反向列示(16)反向查看主文件夾下.bashrc文件內(nèi)容more命令:一頁一頁翻動查看(17)翻頁查看主文件夾下.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命令:
4、修改文件時間或創(chuàng)建新文件(22)在/tmp下創(chuàng)建一個空文件hello并查看時間(23)修改hello文件,將日期調(diào)整為5天前chown命令:修改文件所有者權(quán)限(24)將hello文件所有者改為root帳號,并查看屬性find命令:文件查找(25)找出主文件夾下文件名為.bashrc的文件tar命令:壓縮命令tar -zcvf /tmp/etc.tar.gz /etc(26)在/目錄下新建文件夾test,然后在/目錄下打包成test.tar.gz(27)解壓縮到/tmp目錄tar -zxvf /tmp/etc.tar.gzgrep命令:查找字符串(28)從/.bashrc文件中查找字符串'
5、;examples'(29)配置Java環(huán)境變量,在/.bashrc中設(shè)置(30)查看JAVA_HOME變量的值六、注意事項命令的名稱。七、預(yù)習(xí)與思考題1、Linux 操作系統(tǒng)的安裝和使用2、常用的命令實驗二:安裝Hadoop開發(fā)環(huán)境(2學(xué)時)一、實驗?zāi)康呐c要求1.掌握Linux虛擬機(jī)安裝方法或者雙操作系統(tǒng)安裝方法。Hadoop在Linux操作系統(tǒng)上運(yùn)行可以發(fā)揮最佳性能,鑒于目前很多讀者可能正在使用Windows操作系統(tǒng),因此,為了完成本書的后續(xù)實驗,這里有必要通過本實驗讓讀者掌握在Windows操作系統(tǒng)上搭建Linux虛擬機(jī)的方法,以及安裝雙操作系統(tǒng)的方法(同時安裝Windows和L
6、inux系統(tǒng),電腦開機(jī)時,可以選擇登錄哪個系統(tǒng))。2.掌握Hadoop的偽分布式安裝方法。很多讀者并不具備集群環(huán)境,需要在一臺機(jī)器上模擬一個小的集群,因此,需要通過本實驗讓讀者掌握在單機(jī)上進(jìn)行Hadoop的偽分布式安裝方法。二、實驗類型綜合型三、實驗原理及說明通過實際操作,使學(xué)生對Hadoop的使用有一個更深刻的理解;熟悉Hadoop的開發(fā)環(huán)境及程序結(jié)構(gòu)。四、實驗儀器操作系統(tǒng):Windows系統(tǒng)或者Ubuntu(推薦)。虛擬機(jī)軟件:推薦使用的開源虛擬機(jī)軟件為VirtualBox 。VirtualBox是一款功能強(qiáng)大的免費(fèi)虛擬機(jī)軟件,它不僅具有豐富的特色,而且性能也很優(yōu)異,簡單易用,可虛擬的系統(tǒng)
7、包括Windows、Mac OS X、Linux、OpenBSD、Solaris、IBM OS2甚至Android 4.0系統(tǒng)等操作系統(tǒng)。讀者可以在Windows系統(tǒng)上安裝VirtualBox軟件,然后在VirtualBox上安裝并且運(yùn)行Linux操作系統(tǒng)。本次實驗?zāi)J(rèn)的Linux發(fā)行版為Ubuntu14.04。五、實驗內(nèi)容和步驟共享文件夾設(shè)置virtualbox中ubuntu和windows共享文件夾設(shè)置先關(guān)閉ubuntu,在virtualbox“設(shè)置”中找到“共享文件夾”,點擊進(jìn)入,點擊右邊添加目錄按鈕,添加windows中要共享的目錄,取一個名。比如我在D盤建一個名為share的文件夾,
8、如下圖:重啟ubuntu,在ubuntu系統(tǒng)最上端“設(shè)備”中找到“共享文件夾”,點擊進(jìn)入,點擊右邊添加目錄按鈕,添加第二步操作的共享目錄,如進(jìn)入虛擬Ubuntu,在命令行終端下輸入:sudo mkdir /mnt/sharedsudo mount -t vboxsf share /mnt/shared其中"share"是之前創(chuàng)建的共享文件夾的名字。OK,現(xiàn)在Ubuntu和主機(jī)可以互傳文件了。要想自動掛載的話,可以在/etc/fstab中添加一項share /mnt/shared vboxsf rw,gid=100,uid=1000,auto 0 0Java安裝第一步 獲取安
9、裝包。到oracle官方去下載jdk安裝包,選擇版本時注意選擇自己的系統(tǒng)的版本。第二步:解壓安裝sudo tar zxvf ./jdk-7-linux-i586.tar.gz -C /usr/lib/jvm cd /usr/lib/jvm sudo mv jdk1.7.0/ java-7-sun 第三步:修改環(huán)境變量vi /.bashrc 添加:export JAVA_HOME=/usr/lib/jvm/java-7-sun export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib export
10、 PATH=$JAVA_HOME/bin:$PATH 保存退出,輸入以下命令使之立即生效。source /.bashrc 第四步:配置默認(rèn)JDK版本由于ubuntu中可能會有默認(rèn)的JDK,如openjdk,所以,為了將我們安裝的JDK設(shè)置為默認(rèn)JDK版本,還要進(jìn)行如下工作。執(zhí)行代碼:sudo update-alternatives -install /usr/bin/java java /usr/lib/jvm/java-7-sun/bin/java 300 sudo update-alternatives -install /usr/bin/javac javac /usr/lib/jvm/
11、java-7-sun/bin/javac 300 sudo update-alternatives -install /usr/bin/jar jar /usr/lib/jvm/java-7-sun/bin/jar 300 sudo update-alternatives -install /usr/bin/javah javah /usr/lib/jvm/java-7-sun/bin/javah 300 sudo update-alternatives -install /usr/bin/javap javap /usr/lib/jvm/java-7-sun/bin/javap 300 執(zhí)行
12、代碼:sudo update-alternatives -config java 系統(tǒng)會列出各種JDK版本,如下所示:baidubaidu:$ sudo update-alternatives -config java 有 3 個候選項可用于替換 java (提供 /usr/bin/java)。 選擇 路徑 優(yōu)先級 狀態(tài) - * 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 自動模式 1 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 手動模式 2 /usr/lib/jvm/java-6-sun/jr
13、e/bin/java 63 手動模式 3 /usr/lib/jvm/java-7-sun/bin/java 300 手動模式 要維持當(dāng)前值*請按回車鍵,或者鍵入選擇的編號:3 update-alternatives: 使用 /usr/lib/jvm/java-7-sun/bin/java 來提供 /usr/bin/java (java),于 手動模式 中。第五步:測試baidubaidu:$ java -version java version "1.7.0" Java(TM) SE Runtime Environment (build 1.7.0-b147) Java H
14、otSpot(TM) Server VM (build 21.0-b17, mixed mode) Hadoop安裝1、創(chuàng)建hadoop用戶安裝 Ubuntu 的時候不是用的 “hadoop” 用戶,那么需要增加一個名為 hadoop 的用戶。首先按 ctrl+alt+t 打開終端窗口,輸入如下命令創(chuàng)建新用戶 :sudo useradd -m hadoop -s /bin/bash接著使用如下命令設(shè)置密碼,可簡單設(shè)置為 hadoop,按提示輸入兩次密碼: sudo passwd hadoop可為 hadoop 用戶增加管理員權(quán)限,方便部署,避免一些對新手來說比較棘手的權(quán)限問題:sudo add
15、user hadoop sudo最后注銷當(dāng)前用戶(點擊屏幕右上角的齒輪,選擇注銷),返回登陸界面。在登陸界面中選擇剛創(chuàng)建的 hadoop 用戶進(jìn)行登陸。2. 安裝SSH、配置SSH無密碼登陸集群、單節(jié)點模式都需要用到 SSH 登陸(類似于遠(yuǎn)程登陸,你可以登錄某臺 Linux 主機(jī),并且在上面運(yùn)行命令),Ubuntu 默認(rèn)已安裝了 SSH client,此外還需要安裝 SSH server:sudo dpkg -i openssh-server_6.0p1-3ubuntu1_i386.debsudo dpkg -i ssh_6.0p1-3ubuntu1_all.deb安裝后,可以使用如下命令登陸
16、本機(jī):ssh localhost利用 ssh-keygen 生成密鑰,并將密鑰加入到授權(quán)中:$exit # 退出剛才的 ssh localhost$cd /.ssh/ # 若沒有該目錄,請先執(zhí)行一次ssh localhost$ssh-keygen -t rsa # 會有提示,都按回車就可以$cat ./id_rsa.pub >> ./authorized_keys # 加入授權(quán)$sudo tar -zxf /下載/hadoop-2.6.0.tar.gz -C /usr/local # 解壓到/usr/local中$cd /usr/local/$sudo mv ./hadoop-2.
17、6.0/ ./hadoop # 將文件夾名改為hadoop$sudo chown -R hadoop ./hadoop # 修改文件權(quán)限$cd /usr/local/hadoop$./bin/hadoop version六、注意事項Apache Hadoop官網(wǎng)下載Hadoop2.7.1版本安裝文件。七、預(yù)習(xí)與思考題1、在Linux環(huán)境下完成偽分布式環(huán)境的搭建,并運(yùn)行Hadoop自帶的WordCount實例檢測是否運(yùn)行正常。實驗三:熟悉Hadoop平臺(2學(xué)時)一、實驗?zāi)康呐c要求1、理解 Hadoop平臺運(yùn)行原理。2、熟悉Hadoop的操作二、實驗類型設(shè)計型三、實驗原理及說明通過實際操作,使學(xué)
18、生對Hadoop的使用有一個更深刻的理解;熟悉Hadoop的開發(fā)環(huán)境及程序結(jié)構(gòu)。四、實驗儀器安裝Ubuntu系統(tǒng)的計算機(jī)若干臺五、實驗內(nèi)容和步驟1. Hadoop單機(jī)配置(非分布式)Hadoop 默認(rèn)模式為非分布式模式(本地模式),無需進(jìn)行其他配置即可運(yùn)行。非分布式即單 Java 進(jìn)程,方便進(jìn)行調(diào)試。Hadoop 附帶了豐富的例子(運(yùn)行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce- examples-2.6.0.jar 可以看到所有例子),包括 wordcount、terasort、join、grep 等。在此我們選擇運(yùn)
19、行 grep 例子,我們將 input 文件夾中的所有文件作為輸入,篩選當(dāng)中符合正則表達(dá)式 dfsa-z.+ 的單詞并統(tǒng)計出現(xiàn)的次數(shù),最后輸出結(jié)果到 output 文件夾中。執(zhí)行成功后如下所示,輸出了作業(yè)的相關(guān)信息,輸出的結(jié)果是符合正則的單詞 dfsadmin 出現(xiàn)了1次注意,Hadoop 默認(rèn)不會覆蓋結(jié)果文件,因此再次運(yùn)行上面實例會提示出錯,需要先將 ./output 刪除。2. Hadoop偽分布式配置Hadoop 可以在單節(jié)點上以偽分布式的方式運(yùn)行,Hadoop 進(jìn)程以分離的 Java 進(jìn)程來運(yùn)行,節(jié)點既作為 NameNode 也作為 DataNode,同時,讀取的是 HDFS 中的文件
20、。Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,偽分布式需要修改2個配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每個配置以聲明 property 的 name 和 value 的方式來實現(xiàn)。修改配置文件 core-site.xml (通過 gedit 編輯會比較方便: gedit ./etc/hadoop/core-site.xml),將當(dāng)中的修改為下面配置:同樣的,修改配置文件 hdfs-site.xml:Hadoop配置文件說明Hadoop 的運(yùn)行方式是由配置文件決定的(運(yùn)行
21、 Hadoop 時會讀取配置文件),因此如果需要從偽分布式模式切換回非分布式模式,需要刪除 core-site.xml 中的配置項。此外,偽分布式雖然只需要配置 fs.defaultFS 和 dfs.replication 就可以運(yùn)行(官方教程如此),不過若沒有配置 hadoop.tmp.dir 參數(shù),則默認(rèn)使用的臨時目錄為 /tmp/hadoo-hadoop,而這個目錄在重啟時有可能被系統(tǒng)清理掉,導(dǎo)致必須重新執(zhí)行 format 才行。所以要指定 .dir 和 dfs.datanode.data.dir,否則在接下來的步驟中可能會出錯。配置完成后,執(zhí)行 Nam
22、eNode 的格式化:成功的話,會看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若為 “Exitting with status 1” 則是出錯。如果在這一步時提示 Error: JAVA_HOME is not set and could not be found. 的錯誤,則說明之前設(shè)置 JAVA_HOME 環(huán)境變量那邊就沒設(shè)置好,請先設(shè)置好 JAVA_HOME 變量,否則后面的過程都是進(jìn)行不下去的。接著開啟 NameNode 和 DataNode 守護(hù)進(jìn)程。若出現(xiàn)如下SSH提示,輸入yes即可。啟動時可能會出現(xiàn)如下
23、WARN 提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform using builtin-java classes where applicable WARN 提示可以忽略,并不會影響正常使用。啟動 Hadoop 時提示 Could not resolve hostname如果啟動 Hadoop 時遇到輸出非常多“ssh: Could not resolve hostname xxx”的異常情況,如下圖所示:這個并不是 ssh 的問題,可通過設(shè)置 Hadoop 環(huán)境變量來解決
24、。首先按鍵盤的 ctrl + c 中斷啟動,然后在 /.bashrc 中,增加如下兩行內(nèi)容(設(shè)置過程與 JAVA_HOME 變量一樣,其中 HADOOP_HOME 為 Hadoop 的安裝目錄):保存后,務(wù)必執(zhí)行 source /.bashrc 使變量設(shè)置生效,然后再次執(zhí)行 ./sbin/start-dfs.sh 啟動 Hadoop。啟動完成后,可以通過命令 jps 來判斷是否成功啟動,若成功啟動則會列出如下進(jìn)程: “NameNode”、”DataNode” 和 “SecondaryNameNode”(如果 SecondaryNameNode 沒有啟動,請運(yùn)行 sbin/stop-dfs.sh
25、 關(guān)閉進(jìn)程,然后再次嘗試啟動嘗試)。如果沒有 NameNode 或 DataNode ,那就是配置不成功,請仔細(xì)檢查之前步驟,或通過查看啟動日志排查原因。成功啟動后,可以訪問 Web 界面 http:/localhost:50070 查看 NameNode 和 Datanode 信息,還可以在線查看 HDFS 中的文件。六、注意事項熟悉Hadoop的配置文件。七、預(yù)習(xí)與思考題單機(jī)版與偽分布式的配置。實驗四:Hadoop初級實踐(2學(xué)時)一、實驗?zāi)康呐c要求1、理解 Hadoop平臺運(yùn)行原理。2、熟悉wordcount程序。二、實驗類型設(shè)計型三、實驗原理及說明通過實際操作,使學(xué)生對Hadoop的使
26、用有一個更深刻的理解;熟悉Hadoop的開發(fā)環(huán)境及程序結(jié)構(gòu)。四、實驗儀器安裝Ubuntu系統(tǒng)的計算機(jī)若干臺五、實驗內(nèi)容和步驟單詞計數(shù)是最簡單也是最能體現(xiàn)MapReduce思想的程序之一,可以稱為MapReduce版"Hello World",該程序的完整代碼可以在Hadoop安裝包的"src/examples"目錄下找到。單詞計數(shù)主要完成功能是:統(tǒng)計一系列文本文件中每個單詞出現(xiàn)的次數(shù),如下圖所示。以"hadoop"用戶登錄Hadoop服務(wù)器。1. 創(chuàng)建本地的示例數(shù)據(jù)文件:并在這個目錄下創(chuàng)建2個文件分別命名為【myTest1.txt】和
27、【myTest2.txt】或者你想要的任何文件名。分別在這2個文件中輸入下列示例語句:2. 在HDFS上創(chuàng)建輸入文件夾調(diào)出終端,輸入下面指令:$cd /usr/local/hadoop$./bin/hadoop fs -mkdir hdfsInput執(zhí)行這個命令時可能會提示類似安全的問題,如果提示了,請使用$./bin/hadoop dfsadmin -safemode leave來退出安全模式。當(dāng)分布式文件系統(tǒng)處于安全模式的情況下,文件系統(tǒng)中的內(nèi)容不允許修改也不允許刪除,直到安全模式結(jié)束。安全模式主要是為了系統(tǒng)啟動的時候檢查各個DataNode上數(shù)據(jù)塊的有效性,同時根據(jù)策略必要的復(fù)制或者刪除
28、部分?jǐn)?shù)據(jù)塊。運(yùn)行期通過命令也可以進(jìn)入 安全模式。3. 上傳本地file中文件到集群的hdfsInput目錄下在終端依次輸入下面指令:cd hadoop-1.2.1$./bin/hadoop fs -put file/myTest*.txt hdfsInput4. 運(yùn)行例子:在終端輸入下面指令:$./bin/hadoop jar hadoop-examples-1.2.1.jar wordcount hdfsInput hdfsOutput注意,這里的示例程序是1.2.1版本的,可能每個機(jī)器有所不一致,那么請用*通配符代替版本號$./bin/hadoop jar hadoop-examples-
29、*.jar wordcount hdfsInput hdfsOutput應(yīng)該出現(xiàn)下面結(jié)果:Hadoop命令會啟動一個JVM來運(yùn)行這個MapReduce程序,并自動獲得Hadoop的配置,同時把類的路徑(及其依賴關(guān)系)加入到Hadoop的庫中。以上就是Hadoop Job的運(yùn)行記錄,從這里可以看到,這個Job被賦予了一個ID號:job_201202292213_0002,而且得知輸入文件有兩個(Total input paths to process : 2),同時還可以了解map的輸入輸出記錄(record數(shù)及字節(jié)數(shù)),以及reduce輸入輸出記錄。查看HDFS上hdfsOutput目錄內(nèi)容:
30、在終端輸入下面指令:bin/hadoop fs -ls hdfsOutput從上圖中知道生成了三個文件,我們的結(jié)果在"part-r-00000"中。使用下面指令查看結(jié)果輸出文件內(nèi)容bin/hadoop fs -cat output/part-r-00000輸出目錄日志以及輸入目錄中的文件是永久存在的,如果不刪除的話,如果出現(xiàn)結(jié)果不一致,請參考這個因素。六、注意事項熟悉Hadoop常用的命令。七、預(yù)習(xí)與思考題Hadoop的執(zhí)行過程。實驗五:熟悉常用的HDFS操作(2學(xué)時)一、實驗?zāi)康呐c要求1、理解 Hadoop平臺運(yùn)行原理。2、熟悉HDFS系統(tǒng)二、實驗類型設(shè)計型三、實驗原理及
31、說明通過實際操作,使學(xué)生對Hadoop的使用有一個更深刻的理解;熟悉Hadoop的開發(fā)環(huán)境及程序結(jié)構(gòu)。四、實驗儀器安裝Ubuntu系統(tǒng)的計算機(jī)若干臺五、實驗內(nèi)容和步驟1. 編寫簡單shell腳步1. 使用gedit等任意文本編輯工具,都可以編寫shell腳本。使用“gedit test.sh”在當(dāng)前目錄下,創(chuàng)建一個測試shell腳本。shell腳本的后綴習(xí)慣性寫成“.sh”。1. 2shell腳本的開始需要聲明此腳本使用什么程序解析執(zhí)行,首行為“#!/bin/sh ”,標(biāo)明使用bash解析器解析當(dāng)前shell腳本。 2. 3完成所有語言都有的入門級顯示效果,使用shell腳本打印he
32、llo world,第二行為“echo Hello World!”。步驟閱讀3. 4由于新建的shell腳本沒有執(zhí)行權(quán)限,首先使用“chmod 755 test.sh”對shell腳本添加執(zhí)行權(quán)限。步驟閱讀4. 5使用“./test.sh”命令執(zhí)行新建的shell腳本。步驟閱讀5. 6看看自己編寫第一個shell腳本執(zhí)行的結(jié)果吧。2. 利用Hadoop提供的Shell命令完成相同任務(wù):(1) 向HDFS中上傳任意文本文件,如果指定的文件在HDFS中已經(jīng)存在,由用戶指定是追加到原有文件末尾還是覆蓋原有的文件;先到Hadoop主文件夾cd /usr/local/hadoop啟動Hadoop服務(wù)sb
33、in/start-dfs.shsbin/start-yarn.sh創(chuàng)建兩個任意文本文件用于實驗echo "hello world" > local.txtecho "hello hadoop" >text.txt檢查文件是否存在hadoop fs -test -e text.txtecho $?上傳本地文件到HDFS系統(tǒng)(上傳之后再執(zhí)行一遍上一步,如果是第一次做HDFS操作第一次做這一步會出錯,可以直接做一次hadoop fs -appendToFile local.txt text.txt就能解決)hadoop fs -put text.t
34、xt追加到文件末尾的指令hadoop fs -appendToFile local.txt text.txt查看HDFS文件的內(nèi)容hadoop fs -cat text.txt覆蓋原有文件的指令(覆蓋之后再執(zhí)行一遍上一步)hadoop fs -copyFromLocal -f local.txt text.txt以上步驟也可以用如下Shell腳步實現(xiàn)if $(hadoop fs -test -e text.txt);then $(hadoop fs -appendToFile local.txt text.txt);else $(hadoop fs -copyFromLocal -f loca
35、l.txt text.txt);fi(2) 從HDFS中下載指定文件,如果本地文件與要下載的文件名稱相同,則自動對下載的文件重命名; Shell命令實現(xiàn):if $(hadoop fs -test -e /usr/local/hadoop/text.txt);then $(hadoop fs -copyToLocal text.txt ./text.txt); else $(hadoop fs -copyToLocal text.txt ./text2.txt); fi(3) 將HDFS中指定文件的內(nèi)容輸出到終端中;hadoop fs -cat text.txt(4) 顯示HDFS中指定的文件的
36、讀寫權(quán)限、大小、創(chuàng)建時間、路徑等信息;hadoop fs -ls -h text.txt(5) 給定HDFS中某一個目錄,輸出該目錄下的所有文件的讀寫權(quán)限、大小、創(chuàng)建時間、路徑等信息,如果該文件是目錄,則遞歸輸出該目錄下所有文件相關(guān)信息;hadoop fs -ls -R -h /user/tiny(6) 提供一個HDFS內(nèi)的文件的路徑,對該文件進(jìn)行創(chuàng)建和刪除操作。如果文件所在目錄不存在,則自動創(chuàng)建目錄;Shell命令實現(xiàn):if $(hadoop fs -test -d dir1/dir2);then $(hadoop fs -touchz dir1/dir2/filename); else $
37、(hadoop fs -mkdir -p dir1/dir2 && hdfs dfs -touchz dir1/dir2/filename); fi刪除操作hadoop fs -rm dir1/dir2/filename(7) 提供一個HDFS的目錄的路徑,對該目錄進(jìn)行創(chuàng)建和刪除操作。創(chuàng)建目錄時,如果目錄文件所在目錄不存在則自動創(chuàng)建相應(yīng)目錄;刪除目錄時,由用戶指定當(dāng)該目錄不為空時是否還刪除該目錄;a) 創(chuàng)建目錄hadoop fs -mkdir -p dir1/dir2 b) 刪除目錄(如果目錄非空則會提示not empty,不執(zhí)行刪除)hadoop fs -rmdir dir1
38、/dir2 c) 強(qiáng)制刪除目錄hadoop fs -rm -r dir1/dir2 (8) 向HDFS中指定的文件追加內(nèi)容,由用戶指定內(nèi)容追加到原有文件的開頭或結(jié)尾;追加到文件末尾hadoop fs -appendToFile local.txt text.txt追加到文件開頭hadoop fs -get text.txtcat text.txt >> local.txthadoop fs -copyFromLocal -f text.txt text.txt(9) 刪除HDFS中指定的文件;hadoop fs -rm text.txt(10) 刪除HDFS中指定的目錄,由用戶指定
39、目錄中如果存在文件時是否刪除目錄;a) 刪除目錄(如果目錄非空則會提示not empty,不執(zhí)行刪除)hadoop fs -rmdir dir1/dir2 b) 強(qiáng)制刪除目錄hadoop fs -rm -R dir1/dir2(11) 在HDFS中,將文件從源路徑移動到目的路徑。hadoop fs -mv text.txt input3. 編程實現(xiàn)一個類“MyFSDataInputStream”,該類繼承“org.apache.hadoop.fs.FSDataInputStream”,要求如下:實現(xiàn)按行讀取HDFS中指定文件的方法“readLine()”,如果讀到文件末尾,則返回空,否則返回文
40、件一行的文本。package com.zucc.tiny.hdfs;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.text.SimpleDateFormat;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.*;public class MyFSDataInputStream extends
41、FSDataInputStream public MyFSDataInputStream(InputStream in) super(in); / TODO Auto-generated constructor stub public static String readline(Configuration conf, String remoteFilePath) throws IOException FileSystem fs = FileSystem.get(conf); Path remotePath = new Path(remoteFilePath); FSDataInputStre
42、am in = fs.open(remotePath); BufferedReader d = new BufferedReader(new InputStreamReader(in); String line = null; if(line=d.readLine()!=null) d.close(); in.close(); fs.close(); return line; else d.close(); in.close(); fs.close(); return null; public static void main(String args) Configuration conf =
43、 new Configuration(); conf.set("","hdfs:/localhost:9000"); String remoteFilePath = "/user/tiny/text.txt" / HDFS路徑 try System.out.println("讀取文件: " + remoteFilePath); System.out.println(MyFSDataInputStream.readline(conf, remoteFilePath); System.ou
44、t.println("n讀取完成"); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); 4. 查看Java幫助手冊或其它資料,用“.URL”和“org.apache.hadoop.fs.FsURLStreamHandlerFactory”編程完成輸出HDFS中指定文件的文本到終端中。package com.zucc.tiny.hdfs;import java.io.IOException;import java.io.InputStream;import .URL;im
45、port org.apache.hadoop.fs.*;import org.apache.hadoop.io.IOUtils;public class FsUrl static URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory(); public static void cat(String remoteFilePath) throws IOException InputStream in = null; try in = new URL("hdfs","localhost",90
46、00,remoteFilePath).openStream(); IOUtils.copyBytes(in, System.out, 4096, false); finally IOUtils.closeStream(in); /* * 主函數(shù) */ public static void main(String args) String remoteFilePath = "/user/tiny/text.txt" / HDFS路徑 try System.out.println("讀取文件: " + remoteFilePath); FsUrl.cat(r
47、emoteFilePath); System.out.println("n讀取完成"); catch (Exception e) e.printStackTrace(); 六、注意事項熟悉HDFS常用的命令。七、預(yù)習(xí)與思考題HDFS的執(zhí)行過程。實驗六:熟悉常用的HBase操作(2學(xué)時)一、實驗?zāi)康呐c要求1.理解HBase在Hadoop體系結(jié)構(gòu)中的角色;2.熟練使用HBase操作常用的Shell命令;3.熟悉HBase操作常用的Java API。二、實驗類型設(shè)計型三、實驗原理及說明通過實際操作,使學(xué)生對HBase的使用有一個更深刻的理解;熟悉HBase的開發(fā)環(huán)境。四、實驗儀器
48、操作系統(tǒng):LinuxHadoop版本:2.6.0或以上版本HBase版本:1.1.2或以上版本JDK版本:1.6或以上版本Java IDE:Eclipse五、實驗內(nèi)容和步驟把 HBase 壓縮包放到 Home 文件夾中右鍵打開終端,解壓 HBase 到/usr/localsudo tar zxvf hbase-1.2.3-bin.tar.gz -C /usr/local重命名方便后續(xù)操作sudo mv /usr/local/hbase-1.2.3/ /usr/local/hbase/獲取文件夾權(quán)限(tiny改為你的主機(jī)名)sudo chown -R tiny /usr/local/hbase/
49、設(shè)置環(huán)境變量sudo gedit /etc/profile在最后一行添加內(nèi)容:#set hbase pathexport PATH=$PATH:/usr/local/hbase/bin使環(huán)境變量生效source /etc/profile配置Hbase的配置文件進(jìn)入/usr/local/hbase/conf/cd /usr/local/hbase/conf/配置hbase-env.shgedit hbase-env.sh在最后一行添加內(nèi)容:配置hbase-site.xmlgedit hbase-site.xml在<configuration>標(biāo)簽中添加內(nèi)容:<property&
50、gt; <name>hbase.rootdir</name> <value>hdfs:/localhost:9000/hbase</value></property><property> <name>hbase.cluster.distributed</name> <value>true</value></property>啟動 Hadoop進(jìn)入 Hadoop 主文件夾cd /usr/local/hadoop/開啟 Hadoop 相關(guān)進(jìn)程sbin/start-df
51、s.shsbin/start-yarn.sh啟動 HBase進(jìn)入HBase主文件夾cd /usr/local/hbase/開啟HBase相關(guān)進(jìn)程bin/start-hbase.sh查看 jps進(jìn)入 Hbase Shell創(chuàng)建一個表以便實驗使用create 'student','score'1. 用Hadoop提供的HBase Shell命令完成相同任務(wù):(1) 列出HBase所有的表的相關(guān)信息,例如表名;a) 以列表的形式顯示所有數(shù)據(jù)表list b) 查看表的結(jié)構(gòu)describe 'student' c) 查詢表是否存在exists 's
52、tudent' d) 查詢表是否可用is_enabled 'student'(2) 在終端打印出指定的表的所有記錄數(shù)據(jù);scan 'student'(3) 向已經(jīng)創(chuàng)建好的表添加和刪除指定的列族或列;put 'student','s001','score:math','100'(4) 向student表,刪除指定列delete 'student','s001','score:math'(5) 統(tǒng)計表的行數(shù)。count 'student'2. 現(xiàn)有以下關(guān)系型數(shù)據(jù)庫中的表和數(shù)據(jù),要求將其轉(zhuǎn)換為適合于HBase存儲的表并插入數(shù)據(jù):學(xué)生表(Student)學(xué)號(S_No)姓名(S_Name)性別(S_Sex)年齡(S_Age)2015001Zhangsanmale232015003Maryfemale222015003Lisimale24課程表(Course)課程號(C_No)課程名(C_Name)學(xué)分(C_Credit)123001Math2.0123002Computer Science5.0123003English3.0 選課表(SC)學(xué)號(SC_Sno)課程號(SC_Cno)成績(SC_S
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 明確目標(biāo)2025年稅法考試試題及答案
- 靈活運(yùn)用現(xiàn)代漢語考試試題及答案
- 科技公司戰(zhàn)略中的風(fēng)險識別與管理方法試題及答案
- 《2025關(guān)于購銷合同的模板》
- 2025年紡織服裝制造業(yè)智能化生產(chǎn)智能服裝生產(chǎn)設(shè)備維護(hù)與保養(yǎng)報告
- 商業(yè)銀行數(shù)字化轉(zhuǎn)型對金融監(jiān)管的影響與2025年成效評估報告
- 2025年遠(yuǎn)程醫(yī)療助力偏遠(yuǎn)地區(qū)醫(yī)療服務(wù)均等化的政策研究
- 企業(yè)工作環(huán)境的數(shù)字化改進(jìn)路徑探討
- 基于用戶需求的2025年家用醫(yī)療器械市場前景預(yù)測
- 以用戶為中心探索智慧家居設(shè)計的模擬實踐-基于數(shù)子技術(shù)的探討
- (高清版)DG∕TJ 08-2243-2017 市屬高校建筑規(guī)劃面積標(biāo)準(zhǔn)
- 股權(quán)無償劃轉(zhuǎn)協(xié)議書
- 國家開放大學(xué)《工程數(shù)學(xué)(本)》形考任務(wù)1-5答案
- 【MOOC】國際交流學(xué)術(shù)英文寫作-湖南大學(xué) 中國大學(xué)慕課MOOC答案
- 《社區(qū)治理研究國內(nèi)外文獻(xiàn)綜述(1900字)》
- 專利法全套ppt課件(完整版)
- 癃閉中醫(yī)護(hù)理方案
- 淺談初創(chuàng)期科技企業(yè)全面預(yù)算管理問題
- E204-1批發(fā)和零售業(yè)商品銷售和庫存(限上、規(guī)上企業(yè)入庫標(biāo)準(zhǔn)及材料)
- 臥式單面多軸鉆鏜兩用組合機(jī)床液壓系統(tǒng)
- 醫(yī)院的檢驗報告單模板
評論
0/150
提交評論