HDFS的Shell操作命令
HDFS 的 Shell命令Shell 命令说明Shell 命令选项Shell 命令概览Shell 命令说明HDFS 是存取数据的分布式文件系统,那么对 HDFS 的操作,就是文件系统的基本操作,比如文件的创建、修改、删除、修改权限等,文件夹的创建、删除、重命名等。对 HDFS 的操作命令类似于 Linux 的 shell 对文件的操作,如 ls 、mkdir 、rm 等文件系统 shell 包括
HDFS 的 Shell命令
Shell 命令说明
HDFS 是存取数据的分布式文件系统,那么对 HDFS 的操作,就是文件系统的基本操作,比如文件的创建、修改、删除、修改权限等,文件夹的创建、删除、重命名等。对 HDFS 的操作命令类似于 Linux 的 shell 对文件的操作,如 ls
、mkdir
、rm
等
文件系统 shell
包括与 Hadoop
分布式文件系统(HDFS)以及 Hadoop
支持的其他文件系统(如本地 FS
,HFTP FS
,S3 FS
等)直接交互的各种类似 shell
的命令
所有 FS shell
命令都将路径 URL
作为参数。URL
格式为 scheme://authority/path
。对于 HDFS
,该 scheme
是 hdfs
,对于本地 FS
,该 scheme
是 file
。scheme
和 authority
是可选的。如果未指定,则使用配置中指定的默认方案
注:使用的 Hadoop
版本为 2.7.5
,2.x
的命令可以兼容 1.x
的,但是 3.x
不兼容 1.x
的
# 远程文件系统
hdfs dfs -ls hdfs://namenode:host/parent/child
# 本地文件系统
hdfs dfs -ls file:///root/
# 未指定 schema 时,由于 core-site.xml 中的 fs.defaultFS 中有配置,所以我们可以不加 schema 就能远程访问 hdfs
hdfs dfs -ls /parent/child
Hadoop提供了文件系统的 shell
命令行客户端,使用方法如下
# 1.x 版本的命令格式
hadoop fs <arg>
# 2.x 版本的命令格式
hdfs dfs <arg>
Shell 命令选项
选项名称 | 使用格式 | 含义 |
---|---|---|
-ls | -ls <路径> | 查看指定路径的当前目录结构 |
-lsr | -lsr <路径> | 递归查看指定路径的目录结构(包含子集) |
-du | -du <路径> | 统计目录下个文件大小 |
-dus | -dus <路径> | 汇总统计目录下文件(夹)大小 |
-count | -count [-q] <路径> | 统计文件(夹)数量 |
-mv | -mv <源路径> <目的路径> | 移动 |
-cp | -cp <源路径> <目的路径> | 复制 |
-rm | -rm [-skipTrash] <路径> | 删除文件/空白文件夹 |
-rmr | -rmr [-skipTrash] <路径> | 递归删除 |
-put | -put <多个linux上的文件> <hdfs路径> | 上传文件 |
-copyFromLocal | -copyFromLocal <多个linux上的文件> <hdfs路径> | 从本地复制 |
-moveFromLocal | -moveFromLocal <多个linux上的文件> <hdfs路径> | 从本地移动 |
-get | -get <源路径> <linux路径> | 从hdfs中获取文件到本地 |
-getmerge | -getmerge <源路径> <linux路径> | 合并到本地 |
-cat | -cat <hdfs路径> | 查看文件内容 |
-text | -text <hdfs路径> | 查看文件内容 |
-copyToLocal | -copyToLocal [-ignoreCrc] [-crc] [hdfs源路径] [linux目的路径] | 从本地复制 |
-moveToLocal(未实现) | -moveToLocal [-crc] <hdfs源路径> <linux目的路径> | 从本地移动 |
-mkdir | -mkdir <hdfs路径> | 创建空白文件夹 |
-setrep | -setrep [-R] [-w] <副本数> <路径> | 修改副本数量 |
-touchz | -touchz <文件路径> | 创建空白文件 |
-appendToFile | hdfs dfs -appendToFile 2.txt /aaa/a.txt (2.txt 追加到a.txt 中) | 指定文件追加内容 |
-stat | -stat [format] <路径> | 显示文件统计信息 |
-tail | -tail [-f] <文件> | 查看文件尾部信息 |
-chmod | -chmod [-R] <权限模式> [路径] | 修改权限 |
-chown | -chown [-R] [属主][:[属组]] 路径 | 修改属主 |
-chgrp | -chgrp [-R] 属组名称 路径 | 修改属组 |
-help | -help [命令选项] | 帮助 |
Shell 命令概览
显示文件列表:-ls
# 格式:hdfs dfs -ls URI
# 作用:类似于Linux的ls命令,显示文件列表
# 显示根路径下的文件列表
hdfs dfs -ls /
显示文件列表:-lsr
# 格式 : hdfs dfs -lsr URI
# 作用 : 在整个目录下递归执行ls, 与UNIX中的ls-R类似
# 递归查看根路径下的文件列表
hdfs dfs -lsr /
创建文件夹:-mkdir
# 格式 :hdfs dfs [-p] -mkdir <paths>
# 作用 : 以<paths>中的URI作为参数,创建目录。使用-p参数可以递归创建目录
# 创建单级文件目录
hdfs dfs -mkdir /dir1
hdfs dfs -mkdir /dir2
# 创建多级文件目录
hdfs dfs -p -mkdir /dir3/dir4/dir5
文件上传:-put
# 格式 : hdfs dfs -put <localsrc > ... <dst>
# 作用 : 将单个的源文件src或者多个源文件srcs从本地文件系统拷贝到目标文件系统中(<dst>对应的路径)。也可以从标准输入中读取输入,写入目标文件系统中
# 创建文件
echo “Hello World” >> /root/1.txt
# 将本地文件上传到 hdfs
hdfs dfs -put /root/1.txt /dir1
文件移动:-moveFromLocal
# 格式: hdfs dfs -moveFromLocal <localsrc> <dst>
# 作用: 和put命令类似,但是源文件localsrc拷贝之后自身被删除
# 创建文件
echo “Hello World” >> /root/2.txt
# 将文件从本地移动至 hdfs
hdfs dfs -moveFromLocal /root/2.txt /
文件下载:-get
# 格式:hadoop fs -get [-ignorecrc ] [-crc] <src> <localdst>
# 作用:将文件拷贝到本地文件系统。 CRC 校验失败的文件通过-ignorecrc选项拷贝。 文件和CRC校验和可以通过-CRC选项拷贝
hdfs dfs -get /2.txt /export/data
文件合并:-getmerge
# 格式: hdfs dfs -getmerge -nl < hdfs dir > < local file >
# 功能:合并下载多个文件
# 参数: 加上nl后,合并到local file中的hdfs文件之间会空出一行
# 合并多个文件并将合并后的文件下载
hdfs dfs -getmerge /aaa/log.* ./log.sum
hdfs dfs -getmerge a.txt b.txt ./abc.txt
# 合并多个文件并指定文件间的分隔符为空行,最后下载合并后的文件
hdfs dfs -getmerge -nl a.txt b.txt ./abc.txt
文件移动:-mv
# 格式 : hdfs dfs -mv URI <dest>
# 作用: 将hdfs上的文件从原路径移动到目标路径(移动之后文件删除),该命令不能夸文件系统
# 将 a.txt 文件从 dir1 目录下移动到 dir2 目录下
hdfs dfs -mv /dir1/a.txt /dir2
文件删除:-rm
# 格式: hdfs dfs -rm [-r] 【-skipTrash】 URI 【URI 。。。】
# 作用: 删除参数指定的文件和目录,参数可以有多个,删除目录需要加-r参数
# 如果指定-skipTrash选项,那么在回收站可用的情况下,该选项将跳过回收站而直接删除文件;否则,在回收站可用时,在HDFS Shell 中执行此命令,会将文件暂时放到回收站中。
# 删除文件
hdfs dfs -rm /2.txt
# 删除整个目录
hdfs dfs -rm -r /dir1
文件复制:-cp
# 格式:hdfs dfs -cp URI [URI ...] <dest>
# 作用:将文件拷贝到目标路径中。如果<dest> 为目录的话,可以将多个文件拷贝到该目录下。
# -f 选项将覆盖目标,如果它已经存在。
# -p 选项将保留文件属性(时间戳、所有权、许可、ACL、XAttr)。
# 将1.txt 复制到 dir2 目录下,命名为2.txt
hdfs dfs -cp /dir1/1.txt /dir2/2.txt
追加文件内容
# 格式: hdfs fs -appendToFile <localsrc> ... <dst>
# 作用: 追加一个或者多个文件到hdfs指定文件中.也可以从命令行读取输入
cd /opt/software/hadoop2.7.5/etc/hadoop/
# 将所有的 xml 文件内容增加到 hdfs 的 a.xml 中
hdfs dfs -appendToFile *.xml /a.xml
文件内容查看:-cat
# hadoop fs -cat URI [uri ...]
# 作用:将参数所指示的文件内容输出到控制台
# 查看文件内容
hdfs dfs -cat /dir2/2.txt
查看文件大小:-du
# hadoop fs -du URI
# 功能:显示目录中所有文件大小,当只指定一个文件时,显示此文件的大小。
hdfs dfs -du /
改变文件权限:-chmod
# 格式: hadoop fs -chmod [-R] URI[URI ...]
# 作用:改变文件权限。如果使用 -R 选项,则对整个目录有效递归执行。使用这一命令的用户必须是文件的所属用户,或者超级用户。
# 改变文件的权限为 rwx
hadoop fs -chmod -R 777 /dir1
# 如果hdfs 的超级用户是 hdfs ,此时需要给 hue 用户赋予 /user/hue 的其它用户的 rwx 权限
sudo -u hdfs hadoop fs -chmod -R 777 /user/hue
改变文件的用户和组:chowm
# 格式: hdfs dfs -chmod [-R] URI[URI ...]
# 作用:改变文件的所属用户和用户组。如果使用 -R 选项,则对整个目录有效递归执行。使用这一命令的用户必须是文件的所属用户,或者超级用户
# 将/a.txt的所属用户和所属用户组修改为hadoop
hdfs dfs -chown -R hadoop:hadoop /a.txt
改变安全模式:-safemode
# 查看安全模式的状态
hdfs dfsadmin -safemode get
# 进入安全模式
hdfs dfsadmin -safemode enter
# 离开安全模式
hdfs dfsadmin -safemode leave
Java Api 操作 Shell
FileSystem fileSystem = FileSystem.get(new URI("hdfs://1.117.116.03:8020"), new Configuration());
// 读取本地文件 1.txt 到 hdfs 的 /aaa/1.txt
fileSystem.copyFromLocalFile(new Path("file:Users/kylewhite/Downloads/1.txt"), new Path("/aaa/1.txt"));
高级操作命令
跨集群之间的数据拷贝
DistCp(distributed copy)是一款被用于大型集群间/集群内的复制工具,该命令的内部原理是 MapReduce
# 在 hadoop 的 bin 目录下执行
hadoop distcp hdfs://node1:8020/jdk-8u241-linux-x64.tar.gz hdfs://cluster2:8020/
更多推荐
所有评论(0)