HDFS-Shell 文件操作


一、操作 HDFS 上的文件有兩個命令可以用

hdfs dfs:只能操作 HDFS 上的文件

Usage: hdfs [--config confdir] [--loglevel loglevel] COMMAND
       where COMMAND is one of:
  dfs                  run a filesystem command on the file systems supported in Hadoop.
  classpath            prints the classpath
  namenode -format     format the DFS filesystem
  secondarynamenode    run the DFS secondary namenode
  namenode             run the DFS namenode
  journalnode          run the DFS journalnode
  zkfc                 run the ZK Failover Controller daemon
  datanode             run a DFS datanode
  debug                run a Debug Admin to execute HDFS debug commands
  dfsadmin             run a DFS admin client
  dfsrouter            run the DFS router
  dfsrouteradmin       manage Router-based federation
  haadmin              run a DFS HA admin client
  fsck                 run a DFS filesystem checking utility
  balancer             run a cluster balancing utility
  jmxget               get JMX exported values from NameNode or DataNode.
  mover                run a utility to move block replicas across
                       storage types
  oiv                  apply the offline fsimage viewer to an fsimage
  oiv_legacy           apply the offline fsimage viewer to an legacy fsimage
  oev                  apply the offline edits viewer to an edits file
  fetchdt              fetch a delegation token from the NameNode
  getconf              get config values from configuration
  groups               get the groups which users belong to
  snapshotDiff         diff two snapshots of a directory or diff the
                       current directory contents with a snapshot
  lsSnapshottableDir   list all snapshottable dirs owned by the current user
                                                Use -help to see options
  portmap              run a portmap service
  nfs3                 run an NFS version 3 gateway
  cacheadmin           configure the HDFS cache
  crypto               configure HDFS encryption zones
  storagepolicies      list/get/set block storage policies
  version              print the version

Most commands print help when invoked w/o parameters.
View Code

hadoop fs:除了 HDFS 上的文件,還可以操作本地文件

Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
  CLASSNAME            run the class named CLASSNAME
 or
  where COMMAND is one of:
  fs                   run a generic filesystem user client
  version              print the version
  jar <jar>            run a jar file
                       note: please use "yarn jar" to launch
                             YARN applications, not this command.
  checknative [-a|-h]  check native hadoop and compression libraries availability
  distcp <srcurl> <desturl> copy file or directories recursively
  archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
  classpath            prints the class path needed to get the
                       Hadoop jar and the required libraries
  credential           interact with credential providers
  daemonlog            get/set the log level for each daemon
  trace                view and modify Hadoop tracing settings

Most commands print help when invoked w/o parameters.
View Code

 

二、使用

help:查看命令幫助

hadoop fs -help ls

 

ls:顯示目錄信息

# 查看根目錄
hadoop fs -ls /

# 遞歸查看所有目錄
hadoop fs -ls -R /
hadoop fs -lsr /

 

mkdir:創建目錄

# 創建多級目錄
hadoop fs -mkdir -p /china/hubei/

 

moveFromLocal:移動本地文件到 HDFS 上

# 移動本地 /opt/java-linux-x64.tar.gz 至 HDFS 的 /china/hubei/ 路徑下
hadoop fs -moveFromLocal /opt/java-linux-x64.tar.gz /china/hubei/

 

appendToFile:把本地文件的內容追加到 HDFS 上的文件末尾

# 創建兩個文件
echo "AAA" > /tmp/AAA.txt
echo "BBB" > /tmp/BBB.txt

# 把本地 /tmp/AAA.txt 移動至 HDFS 上的 /china/ 目錄下
hadoop fs -moveFromLocal /tmp/AAA.txt /china/

# 把本地 /tmp/BBB.txt 追加到 HDFS 上的 /china/AAA.txt 文件末尾
hadoop fs -appendToFile /tmp/BBB.txt /china/AAA.txt

 

cat:查看文件內容

hadoop fs -cat /china/AAA.txt

 

chgrp 、chmod、chown:修改文件屬性和權限

# 修改 /china/ 目錄及其所有子目錄的用戶組為 root
hadoop fs -chgrp -R root /china/

# 修改 /china/ 目錄及其所有子目錄的權限為 777
hadoop fs -chmod -R 777 /china/

# 修改 /china/ 目錄及其所有子目錄的所有者為 root
hadoop fs -chown -R root /china/

 

put、copyFromLocal:拷貝本地文件到 HDFS 上(上傳)

# 復制本地 /tmp/ 目錄到 HDFS 的 /china/ 目錄下
hadoop fs -copyFromLocal /tmp/ /china/
hadoop fs -put /tmp/ /china/

 

get、copyToLocal:拷貝 HDFS 上的文件到本地(下載)

# 復制 HDFS 上 /china/BBB.txt 文件到本地的當前目錄
hadoop fs -copyToLocal /china/BBB.txt ./
hadoop fs -get /china/BBB.txt ./

 

moveToLocal:移動 HDFS 上的文件到本地 

# Hadoop 目前版本(2.9.2)尚未實現該功能

 

cp:在 HDFS 上復制文件

# 將 HDFS 上的 /china/AAA.txt 復制到 HDFS 的 / 目錄下
hadoop fs -cp /china/AAA.txt /

 

mv:在 HDFS 上移動文件

# 將 HDFS 上的 /china/BBB.txt 移動到 HDFS 的 / 目錄下
hadoop fs -mv /china/BBB.txt /

 

getmerge:合並下載

# 清空本地 /tmp/ 目錄
rm -rf /tmp/*

# 在本地 /tmp/ 中創建兩個文件
echo "AAA" > /tmp/AAA.txt
echo "BBB" > /tmp/BBB.txt

# 把本地 /tmp/*.txt 上傳至 HDFS 上的 /china/ 目錄下
hadoop fs -mkdir -p /china/txt/
hadoop fs -put /tmp/*.txt /china/txt/

# 下載 HDFS 上 /china/txt/ 路徑下所有文件的內容到本地
hadoop fs -getmerge /china/txt/* /tmp/CCC.txt

 

tail:顯示 HDFS 上的文件最后 1KB 的內容

# 直接顯示
hadoop fs -tail /AAA.txt

# 監控顯示,有新數據追加進來時會實時顯示
hadoop fs -tail -f /AAA.txt

 

rmdir:刪除空文件夾

# 需要確保 HDFS 上的 /temp/ 目錄為空
hadoop fs -rmdir /temp/

 

rm:刪除文件或文件夾

# 刪除 HDFS 上的 /china/ 目錄
# f 目標目錄不存在不提示
# r|R 遞歸刪除
hadoop fs -rm -f -r /china/
hadoop fs -rmr -f /china/

如果啟用了垃圾箱,則文件系統會將已刪除的文件移動到垃圾箱目錄,默認禁用垃圾箱功能

<!-- core-site.xml -->
<!-- value 的值單位為分鍾,設置大於零的值來啟用垃圾箱功能 -->
<!-- 如果在服務器端禁用垃圾,則檢查客戶端配置。 如果在服務器端啟用了垃圾箱,則使用服務器上配置的值,並忽略客戶端配置值 -->
<property>
    <name>fs.trash.interval</name>
    <value>60*24*2</value>
</property>
<!-- value 的值單位為分鍾,檢查回收站的間隔時間,應小於或等於 fs.trash.interval。 如果為零,則值為fs.trash.interval的值 -->
<!-- 每次 checkpointer 運行時,都會創建一個新的檢查點,並刪除超過 fs.trash.interval 分鍾前創建的檢查點 -->
<property>
    <name>fs.trash.checkpoint.interval</name>
    <value>60*24*2</value>
</property>

 

count,du:統計文件大小

hadoop fs -du -s -h /
hadoop fs -count /

 

find:查找文件

# name 不區分大小寫
# iname 區分大小寫
# print 打印(默認)
# print0 打印在一行
hadoop fs -find / -name *.txt -print

 


https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html

http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html

https://www.codercto.com/a/42708.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM