HDFS作为分布式存储的文件系统,有其对数据的路径表达方式
HDFS同linux系统一样,均是以/作为根目录的组织形式
linux:/usr/local/hello.txt
HDFS:/usr/local/hello.txt
如何区分呢?
Linux:file:///
HDFS:hdfs://namenode:port/
协议头file:///或hdfs://root1:8020/可以省略
需要提供Linux路径的参数,会自动识别为file://
需要提供HDFS路径的参数,会自动识别hdfs://
除非明确需要写或不写会有BUG,否则一般不用写协议头
介绍
关于HDFS文件系统的操作命令,Hadoop提供了2套命令体系
hadoop命令(老版本),用法:hadoop fs [generic options]
hdfs命令(新版本用法),用法:hdfs dfs [generic options]
两者在文件系统操作上,用法完全一致
用哪个都可以
某些特殊操作需要选择hadoop命令或hdfs命令
1.创建文件夹
hadoop fs -mkdir [-p] <path> ….
hdfs dfs -mkdir [-p] <path> ….
path为待创建的目录
-p选择的行为与linux mkdir -p一致,它会沿着路径创建父目录
2.查看指定目录下内容
hadoop fs -ls [-h] [-R] [<path>…]
hdfs dfs -ls [-h] [-R] [<path>…]
path指定目录路径
-h人性化显示文件size(大小)
-R递归查看指定目录以及子目录
3.上传文件到HDFS指定目录下
hadoop fs -put [-f] [-p] <localsrc>…<dst>
hdfs dfs -put [-f] [-p] <localsrc>…<dst>
-f 覆盖目标文件(以存在下)
-p 保留访问和修改时间,所有权和权限
localsrc本地文件系统(客户端所在机器)
dst 目标文件系统(HDFS)
例子:
hadoop fs -put word.txt /root
hdfs dfs -put file:///etc/profile hdfs://root1:8020/root
4.查看HDFS文件内容
hadoop fs -cat <src>…
hdfs dfs -cat <src>…
读取指定文件全部内容,显示在标准输出控制台
hadoop fs -cat /root/1.txt
hdfs dfs -cat /root/2.txt
读取大文件可以使用管道符配合more(配合grep过滤非常好用)
hadoop fs -cat <src> | more
hdfs dfs -cat <src> | more
5.下载HDFS文件
hadoop fs -get [-f] [-p] <src> … <localdst>
hdfs dfs -get [-f] [-p] <src> … <localdst>
下载文件到本地文件系统指定目录,localdst必须是目录
-f 覆盖目标文件(已存在下)
-p 保留访问和修改时间,所有权和权限
6.拷贝HDFS文件
hadoop fs -cp [-f] <src>…<dst>
hdfs dfs -cp [-f] <src>…<dst>
-f 覆盖目标文件(已存在下)
7.追加数据到HDFS文件中
hadoop fs -appenToFile <localsrc>…<dst>
hdfs dfs -appendToFile <localsrc>…<dst>
将所有给定本地文件的内容追加到给定dst文件
dst如果文件不存在,将创建该文件
如果<localsrc>为-,则输入为从标准输入中读取
8.HDFS数据移动操作
hadoop fs -mv <src>…<dst>
hdfs dfs -mv <src>…<dst>
移动文件到指定文件夹下
可以使用命令移动数据
9.HDFS数据删除操作
hadoop fs -rm -r [-skipTrash] URl [URl …]
hdfs dfs -rm -r [-skipTrash] URl [URl …]
删除指定路径的文件或文件夹
-skipTrash跳过回收站,直接删除
HDFS shell其他命令
命令官方指导文档
https://hadoop.apache.org/docs/r3.3.4/hadoop-project-dist/hadoop-common/FileSystemShell.html
HDFS web浏览
除了使用命令操作HDFS文件系统外,在HDFS的web UI上也可以查看HDFS文件系统的内容