本文記錄一下hdfs的一些常用指令
如果我們想要上傳檔案到hdfs,可以執行如下指令:
hadoop dfs -put 本地檔案的路徑 hdfs的路徑
例如:
hadoop dfs -put /home/spark/hadoop/datasource/inte***ce-access
.log
-20160829 /datasource
這樣是把本地的inte***ce-access.log-20160829 檔案放入hdfs的/datasource資料夾下
hdfs不能存在相同檔案
我們可以使用fsck命令去檢視hdfs上的乙個檔案的大小以及他的block大小以及路徑(mr1v預設的block為64m,mrv2預設的block大小為128m)
hdfs fsck /user/hive/warehouse/test.db/factorder -files
-blocks
-locations
如上指令將返回factorder檔案的檔案大小,以及他劃分為的block個數,以及block的大小和路徑
我們會看到我們每個block的replication的個數為1,這是因為我們在hdfs-site.xml中的配置個數為1.如果我們想要改變備份的數量,應該在hdfs-site.xml中進行配置.這樣之後再上傳hdfs的檔案就會進行多份的備份.注意,replacation的個數不能超過hadoop集群的datanode節點數量,==因為副本在datanode上只能存在乙份==
如果我們想要更改已經上傳的檔案的replication個數我們可以執行以下的操作
hadoop fs -setrep 3 /user/hive/warehouse/test.db/factorder
這樣我們就會將factorder檔案的block備份為3份,儲存在不同的datanode上.
我們可以執行如下指令檢視當前集群node節點的使用情況:
hdfs dfsadmin -report
這樣可以顯示如我們當前的集群的dfs的使用情況,如果我們當前集群的使用是不平衡的,我們可以使用hadoop的balancer
指令來平衡6
hdfs balancer -threshold xx
hdfs balancer -threshold
10%
threshold後加上乙個百分比,這個百分比代表datanode之間的使用差異小於這個值,我們便認為hdfs是平衡的.
在預設的情況下,balancer的過程是非常緩慢的.
hadoop的開發人員在開發balancer程式的時候,遵循了以下幾點原則:
1. 在執行資料重分布的過程中,必須保證資料不能出現丟失,不能改變資料的備份數,不能改變每乙個rack中所具備的block數量。
2. 系統管理員可以通過一條命令啟動資料重分布程式或者停止資料重分布程式。
3. block在移動的過程中,不能暫用過多的資源,如網路頻寬。
4. 資料重分布程式在執行的過程中,不能影響name node的正常工作。
我們可以通過
hdfs dfsadmin -setbalanacerbandwidth newbandwidth
hdfs dfsadmin -setbalanacerbandwidth (31457280)
來設定頻寬,單位是位元組,上面例子為設定datanode的頻寬為30m.
關於優化balancer的方法可以參考部落格:
- 漫談hadoop hdfs balancer
- hadoop balancer執行速度優化
HDFS常用操作
命令格式 hdfs dfs mkdir 舉例 在hdfs上已有資料夾data下面簡歷乙個新的資料夾zuo hdfs dfs mkdir data zuo 命令格式 hdfs dfs ls 列出檔案路徑下的檔案 hdfs dfs ls a 列出檔案路徑下所有的檔案,包括隱藏檔案 hdfs dfs ls...
HDFS常用操作
hdfs dfs ls hdfs dfs put file file example hdfs dfs put test1 input test 把當前本地目錄下的test1檔案上傳到hdfs input目錄下,並命名為testhdfs dfs get file file or dir local ...
HDFS常用操作
上傳檔案 hdfs dfs put src dest 從本地的src位置上傳到hdfs的dest位置,src可以有多個,空格隔開 複製檔案 hdfs dfs copyfromlocal src dest 複製檔案,從src位置複製到dest 位置,src可以有多個,空格隔開 移動檔案 剪下 hdfs...