HDFS-命令行操作及客戶端操作

1、HDFS 命令行操作

1.1、基本語法

bin/hadoop fs 具體命令

1.2、參數大全

通過命令 bin/hadoop fs 查看

1.3、常用操作命令

1)、啓動 Hadoop 集羣:

2)、-help:輸出這個命令參數

3)、-ls: 顯示目錄信息

4)、-mkdir:在 hdfs 上創建目錄

5)、-moveFromLocal 從本地剪切粘貼到 hdfs

touch abc.txt

hadoop fs -moveFromLocal abc.txt /user/root/test

6)、--appendToFile :追加一個文件到已經存在的文件末尾

touch ximen.txt

vi ximen.txt

hadoop fs -appendToFile ximen.txt /user/root/test/abc.txt

7)、-cat :顯示文件內容

8)、-tail:顯示一個文件的末尾

9)、-chgrp 、-chmod、-chown:linux 文件系統中的用法一樣,修改文件所屬權限

hadoop fs -chmod 666 /user/root/test/abc.txt

10)、-copyFromLocal:從本地文件系統中拷貝文件到 hdfs 路徑去

hadoop fs -copyFromLocal README.txt /user/root/test

11)、-copyToLocal:從 hdfs 拷貝到本地

hadoop fs -copyToLocal /user/root/test/jinlian.txt ./abc.txt

12)、-cp :從 hdfs 的一個路徑拷貝到 hdfs 的另一個路徑

hadoop fs -cp /user/root/test/abc.txt  /abc2.txt

13)、-mv:在 hdfs 目錄中移動文件

hadoop fs -mv /abc2.txt /user/root/test/

14)、-get:等同於 copyToLocal,就是從 hdfs 下載文件到本地

hadoop fs -get /user/root/test/abc2.txt  ./

15)、-getmerge :合併下載多個文件,比如 hdfs 的目錄 /aaa/下有多個文件:log.1, log.2,log.3,...

hadoop fs -getmerge /user/root/test/*  ./zaiyiqi.txt

16)、-put:等同於 copyFromLocal

hadoop fs -put ./zaiyiqi.txt /user/root/test/

17)、-rm:刪除文件或文件夾

hadoop fs -rm /user/root/test/abc2.txt

18)、-rmdir:刪除空目錄

hadoop fs -mkdir /test

hadoop fs -rmdir /test

19)、-df :統計文件系統的可用空間信息

hadoop fs -df -h /

20)、-du 統計文件夾的大小信息

hadoop fs -du -s -h /user/root/test 2.7 K /user/root/test

hadoop fs -du -h /user/root/test

21)、-setrep:設置 hdfs 中文件的副本數量

hadoop fs -setrep 2 /user/root/test/abc.txt

2、HDFS 客戶端操作

2.1、HDFS 客戶端環境準備

jar包準備:

1)解壓 hadoop-2.7.2.tar.gz 到非中文目錄 。

2)進入 share 文件夾,查找所有 jar 包,並把 jar 包拷貝到_lib 文件夾下 。

3)在全部 jar 包中查找 *sources.jar,並剪切到_source 文件夾。

4)在全部 jar 包中查找 *tests.jar,並剪切到_test 文件夾。

eclipse 準備:

1)、解壓自己電腦編譯後的hadoop jar包到目錄 D:\soft\hadoop-2.7.2。

2)、配置 HADOOP_HOME 環境變量

HADOOP_HOME   D:\soft\hadoop-2.7.2

PATH  %HADOOP_HOME%\bin

3)、創建第一個 java 工程 HdfsClientDemo1

4)、創建 lib 文件夾,然後添加 jar 包

5)、創建包名:com.test.hdfs

6)、創建 HdfsClient 類

注:當我們走公網ip 訪問namenode 的時候,可以得到相應的datanode 的註冊信息。於是通過對應的註冊信息進行訪問,但是此時datanode 向namenode 註冊的是內網的ip 因爲遠程訪問的機器和hdfs 的機器不在一個內網集羣 ,所以會導致雖然有一個datanode 但是沒有可用節點。
解決方法在遠程調用的相應的配置中加入configuration.set("dfs.client.use.datanode.hostname","true");
使用hostname 進行訪問同時在hosts 文件中配置對應的主機名和公網ip 的映射,即可遠程成功調用hdfs。

2.2、通過 API 操作 HDFS

1)、HDFS 獲取文件系統

2)、HDFS 文件上傳

3)、HDFS 文件下載

4)、HDFS 目錄創建

5)、HDFS 文件夾刪除

6)、HDFS 文件名更改

7)、HDFS 文件詳情查看(查看文件名稱、權限、長度、塊信息)

8)、HDFS 文件和文件夾判斷

2.3、通過 IO 流操作 HDFS

1)、HDFS 文件上傳

2)、HDFS 文件下載

3)、定位文件讀取

下載第一塊:

下載第二塊:

合併文件:

在 window 命令窗口中執行 type hadoop-2.7.2.tar.gz.part2 >> hadoop-2.7.2.tar.gz.part1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章