1. 程式人生 > >Hadoop之HDFS常用操作練習(基礎)

Hadoop之HDFS常用操作練習(基礎)

內容整理於筆記

叢集規劃:

☛Hadoop的高可用完全分佈模式中有HDFS的主節點和資料節點、MapReduce的主節點和任務節點、資料同步通訊節點、主節點切換控制節點總共6類服務節點, 其中 HDFS的主節點、MapReduce的主節點、主節點切換控制節點共用相同主機cgt-01和cgt-02,HDFS的資料節點、MapReduce的任務節點共用相同主機cgt-03、cgt-04、cgt-05, 資料同步通訊節點可以使用叢集中的任意主機, 但因為其存放的是元資料備份,所以一般不與主節點使用相同主機。 ☛高可用完全分佈模式中需要滿足主節點有備用的基本要求,所以需要兩臺或以上的主機作為主節點, 而完全分佈模式中需要滿足資料有備份和資料處理能夠分佈並行的基本要求,所以需要兩臺或以上的主機作為HDFS的資料節點和MapReduce的任務節點,同時資料同步通訊節點工作原理同Zookeeper類似,需要三臺或以上的奇數臺主機,具體規劃如下。

主機名 IP地址 服務名稱 cgt-01 192.168.10.111 Hadoop主節點 Hadoop主節點切換服務 Yarn主節點 cgt-02 192.168.10.112 Hadoop主節點 Hadoop主節點切換服務 Yarn主節點 cgt-03 192.168.10.113 Hadoop資料服務 Hadoop同步通訊服務 Yarn節點管理服務 cgt-04 192.168.10.114 Hadoop資料服務 Hadoop同步通訊服務 Yarn節點管理服務 cgt-05 192.168.10.115 Hadoop資料服務 Hadoop同步通訊服務 Yarn節點管理服務

Hadoop常見shell 命令

-ls: 檢視指定路徑的當前目錄結構 -ls -R: 遞迴檢視指定路徑的目錄結構 -du: 統計目錄下檔案(夾)的大小 -mkdir: 建立空白資料夾(-P遞迴建立資料夾) -rm: 刪除檔案/空白資料夾 -rmr: 遞迴刪除 -touchz:建立空白檔案 -cat: 檢視檔案內容 -text: 將原始檔輸出為文字格式 -get: 將Hadoop上某個檔案下載到本地已有目錄下 -mV: 將Hadoop上某個檔案移動 -kill: 將正在執行的hadoop作業kill掉 -du -h: 顯示目錄下各個檔案大小 -du -S: 彙總目錄下檔案大小 -du -S -h:彙總檔案所佔儲存空間

實驗內容與完成情況 HDFS中常見Shell命令 (1)向HDFS中上傳任意文字檔案,如果指定的檔案在HDFS中已經存在,由使用者指定是追加到原有檔案末尾還是覆蓋原有的檔案;

(2)從HDFS中下載指定檔案,如果本地檔案與要下載的檔名稱相同,則自動對下載的檔案重新命名; 例如:從HDFS下載file1.txt到本地目錄:和本地重名自動重新命名$ hadoop fs -get /user/admin/file1.txt /home/admin/

(3)將HDFS中指定檔案的內容輸出到終端中 例如:檢視列印HDFS中指定檔案file1.txt的內容$ hadoop fs -cat /user/admin/file1.xt$ hadoop fs -text /user/admin/file1.txt

(4)顯示HDFS中指定的檔案的讀寫許可權、大小、建立時間、路徑等資訊; 例如:檢視HDFS中file1.txt的讀寫許可權、 檔案大小、建立時間、路徑等。 $ hadoop fs -du /user/admin/file1.txt $ hadoop fs -dus /user/admin/file1.txt $ hadoop fs -du -h /user/admin/file1.txt

(5)給定HDFS中某一一個目錄,輸出該目錄下的所有檔案的讀寫許可權、大小、建立時間、路徑等資訊,如果該檔案是目錄,則遞迴輸出該目錄下所有檔案相關資訊: 例如:新建目錄dir1, /dir1/dir2, 新建並,上傳檔案file2.txt到dir1, file2.xt內 容為hello world!,新建並上傳檔案file3.txt到dir2,file3.xt的內 容為hello hadoop!,然後檢視dir1目錄下的所有檔案讀寫許可權、大小等;遞迴輸出dir2目錄下所有檔案相關資訊。 $ hadoop fs -mkdir dir1 $ hadoop fs -mkdir -p dir1

$hadoop fs -mkdir -p /user/admin/dir1/dir2 $ echo ‘hello world!’ > /home/admin/file2.txt $ hadoop fs -put /home/admin/file2.txt /user/admin/dir1/ $ hadoop fs -cat /user/admin/dir1/file2.txtS $ hadoop fs -du -h /user/admin/dir1/

$ echo 'hello hadoop!' > /home/admin/file3.xt

$ hadoop fs -put /home/admin/file3.txt /user/admin/dir1/dir2/ $ hadoop fs -ls /user/admin/dir1 $ hadoop fs -ls -R /user/admin/dir1

(6)提供一個HDFS內的檔案的路徑,對該檔案進行建立和刪除操作。如果檔案所在目錄不存在,則自動建立目錄:

例如: HDFS內的檔案file4.txt,指定路徑為dir1/dir3

$ hadoop fs -touchz /user/admin/dir1/dir3/file4.txt

(7)提供一個HDFS的目錄的路徑,對該目錄進行建立和刪除操作。建立目錄時, 如果目錄檔案所在目錄不存在則自動建立相應目錄;刪除目錄時,由使用者指定當該目錄不為空時是否還刪除該目錄: 例如: HDFS內的目錄dir4,指定路徑為/dir1/,在HDFS中/dir1/dir4目 錄下新建檔案file5.txt $ hadoop fs -mkdir -p /user/admin/dir1/dir4 $ hadoop fs -touchz /user/admin/dir1/dir4/ile5.txt $ hadoop fs -rm /user/admin/dir1/dir4 $ hadoop fs -rm -r /user/admin/dir1/dir4

(8)向HDFS中指定法人檔案追加內容,由使用者指定內容追加到原有檔案的開頭或結尾:、 先檢視file3.txt的內容:

使用命令$hadooop fs -appendTofile ~/Test/file1.txt /user/admin/dir1/dir2/file3.txt將本地檔案file1.txt的內容追加到HDFS中file3.txt的文末。

二、MapReduce - WordCount程式練習 要求:①下載一個WordCount的程式包並上傳 ②執行示例 說明:單詞計數是最簡單也是最能體現MapReduce思想的程式之一,可稱為MapReduce版的“Hello world”。 單詞計數主要完成功能是:統計一系列文字檔案中的每個單詞出現的次數。 現在以“admin”普通使用者登入“Master.Hadoop”伺服器。即在主節點操作。 建立本地例項檔案 首先在“/home/admin”的目錄下建立資料夾“file”. 接著建立連個本地檔案file1.txt和file2.txt. 使file1.txt內容為“Hello Word”,而file2.txt的檔案內容是“Hello hadoop”。 $ cd file $ echo “Hello word”> file1.txt $ echo “Hello hadoop”> file2.txt

在HDFS建立輸入資料夾 $ hadoop fs -mkdir input 上傳本地file中檔案到叢集的input目錄下 $ hadoop fs -put ~/file/file*.txt input $ hadoop fs -ls input

上傳jar包 使用Xftp工具把WordCount的jar執行程式包,上傳到~/hadoop/hadoop=2.7.3/share/hadoop/mapreduce目錄下

在叢集上執行WordCount程式 備註:以input為輸入目錄,output為輸出目錄 $ hadoop jar ~/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-0.20.2-examples.jar wordcount input output

檢視結果 檢視HDFS上output目錄內容

Hadoop的web驗證練習 HDFS啟動驗證 1、檢視jps程序狀態: