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