1. 程式人生 > >HDFS在Linux中操作命令

HDFS在Linux中操作命令

HDFS簡介

1,HDFS概念:
分散式檔案系統

2,設計思路

(1)分而治之
大檔案切分成小檔案,多臺伺服器共同管理一個檔案
小檔案做備份,分散儲存到不同的伺服器上,做到可靠性不丟失
(2)HDFS設計思想

3,HDFS架構
在這裡插入圖片描述
在這裡插入圖片描述
4,HDFS特點
優點:

(1)構建在廉價的機器上
a: 通過多副本提高可靠性
b: 提供了容錯和恢復機制
(2)高容錯性
a. 資料自動儲存多個副本
b. 副本丟失後,自動恢復
(3)適合批處理
a. 移動計算而非移動資料
b. 資料位置暴露給計算框架
(4)適合大資料處理
a. 能夠處理GB、 TB、甚至 PB 級資料
b. 能夠處理百萬規模以上的檔案數量, 10K+節點規模
(5)流式檔案訪問
a. 一次性寫入,多次讀取。檔案一旦寫入,不能修改,只能追加
b. 保證資料一致性

缺點:

(1)不善於處理低延遲資料訪問
a. 比如毫秒級的資料儲存,它是做不到的
b. 適合高吞吐率的場景,就是在某一個時間寫入大量的資料
(2)不善於處理小檔案存取
a. 佔用 NameNode 大量記憶體 ,NameNode 的記憶體是有限的
b. 小檔案儲存的尋道時間超過檔案讀取時間,這違背了 HDFS 的設計原則
(3)不支援併發寫入、檔案隨機修改
a. 一個檔案只能有一個寫者
b. 僅支援檔案的追加(append),不支援檔案的隨機修改

HDFS的shell(命令列客戶端)操作

1,Hadoop叢集管理指令碼

Hadoop 安裝目錄 bin 目錄下的 hadoop 指令碼是最基礎的叢集管理指令碼,使用者可以通過該指令碼完成各種功能,如 HDFS 檔案管理、MapReduce 作業管理等。
使用方式:hadoop [–config confdir] COMMAND
<–config:是用於設定 Hadoop 配置檔案目錄,預設目錄為 ${HADOOP_HOME}/etc/hadoop/>

2,HDFS 管理命令 fs

在叢集正常執行的前提下,使用如下方法,進行 Shell 操作:
[[email protected] ~]$ hadoop fs
[[email protected] ~]$ hadoop fs -help
展示的是 HDFS 支援的命令列引數:
注意:
開始使用命令前,必須啟動 Hadoop。
以上指令均是在 Linux 命令列視窗介面操作。
[ ]表示可選引數,<>表示必須引數。

3,常用命令引數介紹

1,幫助:
 hadoop fs -help
 hadoop fs -help ls

2,HDFS上操作檔案或資料夾
-ls 顯示目錄資訊
hadoop fs -ls hdfs://hadoop01:9000/
Hadoop fs -ls /
-mkdir zaiHDFS上建立目錄
hadoop fs -mkdir /abc <單級建立》
hadoop fs -mkdir -p 123/as
-cp 從 HDFS 的一個路徑複製到 HDFS 的另外一個路徑
hadoop fs -cp /abc/** /123/abc
-mv 在 HDFS 目錄中移動檔案
hadoop fs -mv /abc/1.txt /123/abc/
-rm 刪除HDFS上的檔案或者資料夾
hadoop fs -rm /abc/1.txt <刪除HDFS上的檔案>
hadoop fs -rm -r /123/as <刪除HDFS上的資料夾>
-rmdir 刪除HDFS上的空目錄
hadoop fs -rmdir /123

3,上傳和下載檔案

-put 等同於copyFromLocal,從本地上傳檔案到HDFS
hadoop fs -put hadoop-2.6.5
hadoop fs -copyFromLocal hadoop-2.6.5
-get 等同於copyToLocal,從HDFS下載檔案到本地
hadoop fs -get hadoop1<檔案路徑> ./<下載到的路徑>
hadoop fs -copyToLocal /abc/1.txt Desktop/data/<重新命名>
-moveFromLocal 從本地剪下檔案到HDFS
hadoop fs -moveFromLocal /home/theone/Desktop/software/data/1.txt /abc
-moveToLocal 從HDFS剪下檔案到本地
hadoop fs -moveToLocal /abc/1.txt /home/theone/Desktop/software/data/
<命令無法實現,資料不能被修改>
-appendToFile 追加一個檔案內容到已經存在的檔案末尾
hadoop fs -appendToFile 2.txt /abc/2.txt
-getmerge 合併下載多個檔案
hadoop fs -getmerge /abc/*.txt ./all.txt

4,檢視文字內容

-cat 顯示檔案內容
hadoop fs -cat /abc/1.txt
-tail 顯示一個檔案最後1kb的內容
hadoop fs -tail /abc/1.txt
-text 將 HDFS 中檔案以文字形式輸出(包括 gz 包、jar 包等形式)<用cat會亂碼>
hadoop fs -text /abc/hadoop-2.6.5

5,修改許可權

-chmod 改變檔案許可權(命令的使用者必須是檔案的所有者或者超級使用者)
hadoop -chmod -R 600 /abc/1.txt
-chown 改變檔案的擁有者和所屬組(命令的使用者必須是檔案的所有者或者超級使用者)
hadoop -chown -R theone:theone /abc

6,統計 <## -h 以更易讀的位元組單位(K、M 等)顯示資訊>

-count 統計一個指定目錄下的目錄數、檔案數和位元組數。
hadoop fs -count -h /abc
-df 統計檔案系統的可用空間資訊
hadoop fs -df -h /abc
-du 統計資料夾的大小資訊 <## -s 只統計引數所佔用空間總的大小>
hadoop fs -du -h -s /abc

7,副本

-setrep 設定HDFS中檔案的副本數量
hadoop fs -setrep 3 /abc/1.txt
<## 這裡設定的副本數只是記錄在NameNode的元資料中,
是否真的會有這麼多副本,還得看DataNode的數量 >