HDFS指令和cloudera manager網頁管理介面筆記(二)_MapReduce莎士比亞txt檔案分析實作

 
從起初尚未上傳莎士比亞 txt檔案





執行HDFS指令上傳莎士比亞 txt檔案
hdfs dfs -put /home/cloudera/shakespeare.txt
如果不指定hdfs端目錄,則使用家目錄

shakespeare.txt 此檔案約為5.18MB




顯示/user/cloudera/shakespeare.txt由那些hdfs區塊組成
檢查shakespeare.txt的區塊個數
用指令
hdfs fsck -blocks -files /user/cloudera/shakespeare.txt
hdfs fsck /user/cloudera/shakespeare.txt -files -blocks


使用Cloudera Manager -> HDFS -> NameNode WebUI


WordCout範例
(運行前要確保要被計數的檔案必須存在於HDFS,輸出目錄不能事先存在於HDFS。)
ls -l /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar

yarn jar /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar




hdfs dfs -ls /user/cloudera/wordcount_output/
  • 來源檔案(位在HDFS,必須已經存在) wordcount的輸出目錄(位在HDFS,但不能已經存在)
  • wordcount_output此檔案位於執行yarn所在機器,不需要事先上傳到HDFS,運行時由resource manager將程式碼傳送到所有執行此操作的Yarn Container中
yarn jar /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar wordcount /user/cloudera/shakespeare.txt /user/cloudera/wordcount_output/





/user/cloudera/wordcount_output/part-r-00000          --r表示此檔案為reducer所產生
/user/cloudera/wordcount_output/part-r-00001          --檔案個數表示reduce階段有幾個reducer



檢視執行結果
hdfs dfs -tail /user/cloudera/wordcount_output/part-r-00001



使用getmerge選項將HDFS目錄的內容變成一個檔案後下載到本地端
hdfs dfs -getmerge wordcount_output shakespeare_wordcount.csv
head shakespeare_wordcount.csv

刪除目錄指令



hdfs dfs -rm -r wordcount_output

成功刪除目錄

是不是都只能用預設128M block size呢?
默認捨麼參數都不打情況下確實都是128MB,若想更改可透過指令參數-D去指定
從client端指定HDFS區塊大小(-D dfs.block.size=1M)


hdfs dfs -D dfs.block.size=1M -put /home/cloudera/shakespeare.txt /user/cloudera/shakespeare_1M.txt
hdfs dfs -ls

在 HDFS 中,檔案被切分成區塊(block)來儲存,每個區塊的大小取決於 HDFS 的區塊大小設定。當檔案超過區塊大小時,HDFS 會自動將檔案分割成多個區塊,每個區塊的大小等於設定的區塊大小,最後一個區塊會儲存檔案剩下的資料。

因此:
5.18 MB 檔案在 1 MB 的區塊大小下,會被分成 6 個區塊。
前 5 個區塊:每個區塊大小為 1 MB。
第 6 個區塊:儲存剩下的 0.18 MB(約 190 KB)。


顯示HDFS檔案的區塊數量指令
hdfs fsck /user/cloudera/shakespeare_1M.txt -files -blocks



查看檔案在 HDFS 中的區塊分佈情況
會列出每個區塊的大小、分佈位置等詳細資訊,進一步確認檔案被切分的狀況。
hdfs fsck /user/cloudera/shakespeare_1M.txt -blocks -locations



此時會發現有6個split,也會感覺跑比較久。
yarn jar /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar wordcount /user/cloudera/shakespeare_1M.txt /user/cloudera/wordcount_output/


也可以明確看到有6個mapper


若跑去cloudera的web ui查看
Clusers -> YARN -> Applications


若中途ctrl + c是不會中斷process執行的,只是停掉client終端顯示更新而已
可以用指令
yarn application -list
陳列出運行中的任務數和進度














留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header