https://www.bilibili.com/video/BV1WY4y197g7?p=26
切換到hadoop用戶
su - hadoop
進程啟停管理
一鍵啟停腳本
Hadoop HDFS組件內(nèi)置了HDFS集群的一鍵啟停腳本。
- $HADOOP_HOME/sbin/start-dfs.sh,一鍵啟動HDFS集群
執(zhí)行原理:- 在執(zhí)行此腳本的機器上,啟動SecondaryNameNode
- 讀取core-site.xml內(nèi)容(fs.defaultFS項),確認NameNode所在機器,啟動NameNode
- 讀取workers內(nèi)容,確認DataNode所在機器,啟動全部DataNode
start-dfs.sh
- $HADOOP_HOME/sbin/stop-dfs.sh,一鍵關(guān)閉HDFS集群
執(zhí)行原理:- 在執(zhí)行此腳本的機器上,關(guān)閉SecondaryNameNode
- 讀取core-site.xml內(nèi)容(fs.defaultFS項),確認NameNode所在機器,關(guān)閉NameNode
- 讀取workers內(nèi)容,確認DataNode所在機器,關(guān)閉全部NameNode
stop-dfs.sh
單進程啟停
除了一鍵啟停外,也可以單獨控制進程的啟停。
- $HADOOP_HOME/sbin/hadoop-daemon.sh,此腳本可以單獨控制所在機器的進程的啟停
用法:
hadoop-daemon.sh (start|status|stop) (namenode|secondarynamenode|datanode)
start啟動、status狀態(tài)、stop停止
hadoop-daemon.sh start namenode
hadoop-daemon.sh start secondarynamenode
hadoop-daemon.sh start datanode
hadoop-daemon.sh status namenode
hadoop-daemon.sh status secondarynamenode
hadoop-daemon.sh status datanode
hadoop-daemon.sh stop namenode
hadoop-daemon.sh stop secondarynamenode
hadoop-daemon.sh stop datanode
- $HADOOP_HOME/bin/hdfs,此程序也可以用以單獨控制所在機器的進程的啟停
用法:
hdfs --daemon (start|status|stop) (namenode|secondarynamenode|datanode)
hdfs --daemon start namenode
hdfs --daemon start secondarynamenode
hdfs --daemon start datanode
hdfs --daemon status namenode
hdfs --daemon status secondarynamenode
hdfs --daemon status datanode
hdfs --daemon stop namenode
hdfs --daemon stop secondarynamenode
hdfs --daemon stop datanode
文件系統(tǒng)操作命令
HDFS文件系統(tǒng)基本信息
- 如何區(qū)分呢?
Linux:file:///
HDFS:hdfs://namenode:port/ - 如上路徑:
Linux:file:///usr/local/hello.txt
HDFS:hdfs://node1:8020/usr/local/hello.txt
協(xié)議頭file:/// 或 hdfs://node1:8020/可以省略
需要提供Linux路徑的參數(shù),會自動識別為file://
需要提供HDFS路徑的參數(shù),會自動識別為hdfs://
除非你明確需要寫或不寫會有BUG,否則一般不用寫協(xié)議頭
介紹
關(guān)于HDFS文件系統(tǒng)的操作命令,Hadoop提供了2套命令體系
hadoop命令(老版本用法),用法:hadoop fs [generic options]
hadoop fs
hdfs命令(新版本用法),用法:hdfs dfs [generic options]
hdfs dfs
創(chuàng)建文件夾
用法:
hadoop fs -mkdir [-p] <path> ...
hdfs dfs -mkdir [-p] <path> ...
path 為待創(chuàng)建的目錄
-p選項的行為與Linux mkdir -p一致,它會沿著路徑創(chuàng)建父目錄。
先啟動Hadoop集群
start-dfs.sh
創(chuàng)建Linux系統(tǒng)的文件
hadoop fs -mkdir -p file:///home/hadoop/test1
ls
創(chuàng)建HDFS文件系統(tǒng)的文件
hadoop fs -mkdir -p hdfs://node1:8020/test/test2
不寫協(xié)議頭自動識別為需要創(chuàng)建的是HDFS文件系統(tǒng)的文件
hadoop fs -mkdir -p /hello/world/test3
查看指定目錄下內(nèi)容
用法:
hadoop fs -ls [-h] [-R] [<path> ...]
hdfs dfs -ls [-h] [-R] [<path> ...]
path 指定目錄路徑
-h 人性化顯示文件size
-R 遞歸查看指定目錄及其子目錄
hadoop fs -ls /
hadoop fs -ls /hello
hadoop fs -ls /hello/world
hadoop fs -ls /test
hadoop fs -ls -R /
上傳文件到HDFS指定目錄
hadoop fs -put [-f] [-p] <localsrc> ... <dst>
hdfs dfs -put [-f] [-p] <localsrc> ... <dst>
-f 覆蓋目標文件(已存在下)
-p 保留訪問和修改時間,所有權(quán)和權(quán)限。
localsrc 本地文件系統(tǒng)(客戶端所在機器)
dst 目標文件系統(tǒng)(HDFS)
hadoop fs -put file:///home/hadoop/test.txt hdfs://node1:8020/
hadoop fs -put ./test2.txt /
協(xié)議頭可寫可不寫,會自動識別。
查看HDFS文件內(nèi)容
用法:
hadoop fs -cat <src> ...
hdfs dfs -cat <src> ...
讀取指定文件全部內(nèi)容,顯示在標準輸出控制臺。
hadoop fs -cat /test.txt
讀取大文件可以使用管道符配合more
hadoop fs -cat <src> | more
hdfs dfs -cat <src> | more
把test2.txt的內(nèi)容追加到test.txt,多執(zhí)行幾次,test.txt文件變得很大。
cat test2.txt >> test.txt
覆蓋原文件上傳
hadoop fs -put -f ./test.txt /
翻頁查看,按空格鍵查看下一頁
hadoop fs -cat /test.txt | more
下載HDFS文件
hadoop fs -get [-f] [-p] <src> ... <localdst>
hdfs dfs -get [-f] [-p] <src> ... <localdst>
下載文件到本地文件系統(tǒng)指定目錄,localdst必須是目錄
-f 覆蓋目標文件(已存在下)
-p 保留訪問和修改時間,所有權(quán)和權(quán)限。
hadoop fs -get /test2.txt .
拷貝HDFS文件
hadoop fs -cp [-f] <src> ... <dst>
hdfs dfs -cp [-f] <src> ... <dst>
-f 覆蓋目標文件(已存在下)
兩個路徑都是HDFS文件系統(tǒng)的
hadoop fs -cp /test2.txt /hello/
復(fù)制過去,同時改名
hadoop fs -cp /test2.txt /hello/a.txt
追加數(shù)據(jù)到HDFS文件
hadoop fs -appendToFile <localsrc> ... <dst>
hdfs dfs -appendToFile <localsrc> ... <dst>
將所有給定本地文件的內(nèi)容追加到給定dst文件。
dst如果文件不存在,將創(chuàng)建該文件。
如果為-,則輸入為從標準輸入中讀取。
hadoop fs -appendToFile append.txt /test2.txt
報錯了,修改配置文件。
cd /export/server/hadoop/etc/hadoop
vim hdfs-site.xml
添加以下內(nèi)容
<property>
<name>dfs.support.append</name>
<value>true</value>
</property>
<property>
<name>dfs.client.block.write.replace-datanode-on-failure.policy</name>
<value>NEVER</value>
</property>
<property>
<name>dfs.client.block.write.replace-datanode-on-failure.enable</name>
<value>true</value>
</property>
再次執(zhí)行命令
hadoop fs -appendToFile append.txt /test2.txt
hadoop fs -cat /test2.txt
HDFS數(shù)據(jù)移動
hadoop fs -mv <src> ... <dst>
hdfs dfs -mv <src> ... <dst>
移動文件到指定文件夾下
可以使用該命令移動數(shù)據(jù),重命名文件的名稱
hadoop fs -mv /test.txt /test/
移動文件同時改名
hadoop fs -mv /test2.txt /test/a.txt
HDFS數(shù)據(jù)刪除
hadoop fs -rm -r [-skipTrash] URI [URI ...]
hdfs dfs -rm -r [-skipTrash] URI [URI ...]
刪除指定路徑的文件或文件夾
-skipTrash 跳過回收站,直接刪除
hadoop fs -rm -r /hello
回收站功能默認關(guān)閉,如果要開啟需要在core-site.xml內(nèi)配置:
vim /export/server/hadoop/etc/hadoop/core-site.xml
添加內(nèi)容
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>120</value>
</property>
無需重啟集群,在哪個機器配置的,在哪個機器執(zhí)行命令就生效。
回收站默認位置在:/user/用戶名(hadoop)/.Trash
其他命令
命令官方指導(dǎo)文檔
https://hadoop.apache.org/docs/r3.3.4/hadoop-project-dist/hadoop-common/FileSystemShell.html
HDFS WEB瀏覽
http://node1:9870/
除了使用命令操作HDFS文件系統(tǒng)外,在HDFS的WEB UI上也可以查看HDFS文件系統(tǒng)的內(nèi)容。
使用WEB瀏覽操作文件系統(tǒng),一般會遇到權(quán)限問題
這是因為WEB瀏覽器中是以匿名用戶(dr.who)登陸的,其只有只讀權(quán)限,多數(shù)操作是做不了的。
如果需要以特權(quán)用戶在瀏覽器中進行操作,需要配置如下內(nèi)容到core-site.xml并重啟集群。
但是,不推薦這樣做
HDFS WEBUI,只讀權(quán)限挺好的,簡單瀏覽即可。
如果給與高權(quán)限,會有很大的安全問題,造成數(shù)據(jù)泄露或丟失。
HDFS權(quán)限
修改權(quán)限
在HDFS中,可以使用和Linux一樣的授權(quán)語句,即:chown和chmod
修改所屬用戶和組:
hadoop fs -chown [-R] root:root /xxx.txt
hdfs dfs -chown [-R] root:root /xxx.txt
修改權(quán)限
hadoop fs -chmod [-R] 777 /xxx.txt
hdfs dfs -chmod [-R] 777 /xxx.txt文章來源:http://www.zghlxwxcb.cn/news/detail-578943.html
hadoop fs -chown root:supergroup /test.txt
hadoop fs -chmod 777 /test.txt
文章來源地址http://www.zghlxwxcb.cn/news/detail-578943.html
到了這里,關(guān)于黑馬大數(shù)據(jù)學(xué)習(xí)筆記2-HDFS基本操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!