大資料Hadoop之HDFS模組《二》
上篇我們介紹了hdfs的一些概念和優缺點那麼我們這篇便來說說hdfs的讀寫流程和一些常用的命令: 《一》讀寫流程 一、hdfs 讀流程(下載檔案) 1) client向namenode發出下載請求,namenode查詢元資料資訊,找到檔案塊所在的datanode,返回給client。 2) client從返回的datanode中選擇(就近原則,再隨機)一個,請求下載。 3) datanode開始傳輸資料給clent(從磁碟讀取資料到輸入流,並以packet為單位做校驗)。 4) client以packet為單位接收檔案(先在本地記憶體中快取,然後再寫入本地磁碟的目標檔案)。 二、hdfs 寫流程(上傳檔案) 1) client將檔案切分為block(預設128M),向namenode發出檔案上傳請求,namenode檢查檔案是否存在,父目錄是否存在,返回是否可以上傳。 2) client請求第一個block上傳,namenode分配上傳的datanode資訊(dn1,dn2,dn3)。 3)client請求其中一個datanode進行檔案上傳(dn1),dn1收到請求與其餘datanode之間建立通訊管道,dn1, dn2, dn3依次向客戶端返回確認可以上傳。 4)client 開始往dn1上傳第一個block(先從磁碟讀取到本地記憶體快取),以packet為單位,dn1收到一個packet會傳給dn2,dn2傳給dn3,dn1每次傳一個packet會放入一個應答佇列等待應答。 5)第一個block上傳完成之後,開始進行第二個block上傳。
《二》常用命令
hdfs 命令
hadoop fs 和 hdfs dfs 差不多hadoop fs 不僅可以在hdfs 使用,使用面廣,可以操作所有檔案系統hadoop dfs 和 hdfs dfs 都是用於hdfs 檔案系統中,但是hadoop dfs 已經過時了
hdfs dfs -help 引數 檢視命令的用法
hdfs dfs -ls 檔案 檢視檔案
hdfs dfs -touchz 檔案 在hdfs 上新建檔案
hdfs dfs -mkdir -p /aa/bb/cc 建立多層資料夾
hdfs dfs -put wcinput/wc.input /aa 上傳檔案
hdfs dfs -get /aa/wc.input input 下載
hdfs dfs -ls -R 檔案 等同於 hdfs dfs -lsr 檔案 遞迴檢視資料夾中所有檔案
hdfs dfs -moveFromlocal linux檔案 hdfs檔案 從本地移除到 hdfs檔案
hdfs dfs -cat 檔案 顯示檔案內容
hdfs dfs -appendToFile linux上的b.txt hdfs上的 a.txt 在檔案末尾追加 ,把linux上的b.txt追加到 hdfs上的a.txt上
hdfs dfs -tail -f b.txt 滾動檢視b.txt中的內容
hdfs dfs -chmod 755 /user/a.txt 修改檔案許可權
hdfs dfs -chown 使用者a:組名b user/a.txt 修改檔案的 組為b 和使用者為a
hdfs dfs -copyFromLocal linux檔案 hdfs檔案 相當於 -put 從linux上拷貝一份檔案到hdfs檔案系統中
hdfs dfs -copyToLocal hdfs檔案 linux檔案 從hdfs拷貝一份到linux中 相當於 -get
hdfs dfs -cp 從hdfs的一個目錄拷貝到另一個目錄
hdfs dfs -mv 可以重新命名 。可以移動
hdfs dfs -rm -p 遞迴刪除
hdfs dfs -getmerge 把兩個檔案合併到一起 ,並下載下來有關磁碟命令:
hdfs dfs -getmerge a.txt b.txt ./ 合併a.txt和b.txt 到當前目錄,檢視磁碟的使用情況
hdfs dfs -df :統計系統檔案的可用空間 加 -h 轉化成 兆M K
hdfs dfs -du : 顯示資料夾的 的使用情況 加 -s顯示 總資料夾總共的大小
hdfs dfs -setrep : 設定某個檔案的副本數
hdfs dfs -setrep 1 /user/a.txt 設定a.txt的副本數為1
hdfs dfsadmin -report 檢視當前所有的節點及狀態
關於HDFS的流程和命令先給大家介紹這麼多吧,也不知道是否對大家有所幫助,如果覺得對你有所幫助,請分享給更多的朋友,謝謝!