一文带你了解HDFS的shell命令
1 准备知识
HDFS:hadoop集群分布式文件系统,用来存储海量数据。HDFS采用分而治之的设计思想,将文件切分为文件块进行存储,存储数据的节点为datanode,存储这些数据具体存放位置的节点为namenode。HDFS的架构为一主多从,即namenode为主,datanade为从。本文主要介绍HDFS的shell命令,即如何通过命令行对HDFS进行操作。
首先附上官网链接,HDFS Commands Guide。
介绍HDFS之前,需要了解一下命令行的格式,找个例子讲一下。
hadoop fs [generic options]
[-appendToFile <localsrc> ... <dst>]
[-cat [-ignoreCrc] <src> ...]
[-getfattr [-R] {-n name | -d} [-e en] <path>]
命令行中符号的含义如下表:
[] | 可选内容 |
---|---|
<> | 必选内容 |
{} | 分组 |
| | 二选一 |
… | 同一个内容可多次出现 |
- | 后面连接单个字符,可多个组合使用 |
-- | 后面跟完整的单词 |
Localsrc | 本地源文件 |
dst | 目标路径 |
参考上述,可写如下命令:
hadoop fs -appendToFile <localsrc> ...<dst>
或者
hadoop fs -getfattr -d <path>
2 shell命令
查看hdfs命令的方式,直接在hadoop集群上输入hdfs,会输出usage(用法)。
hdfs的命令分为三种,分别是admin command(管理员)、client commands(客户端)和 Daemon Command(进程)
管理员命令 | 客户端命令 | 进程命令 |
---|---|---|
cacheadmin | classpath | balancer |
crypto | dfs | datanode |
debug | envvars | dfsrouter |
dfsadmin | fetchdt | diskbalancer |
dfsrouteradmin | getconf | httpfs |
ec | groups | journalnode |
fsck | lsSnapshottableDir | mover |
haadmin | snapshotDiff | namenode |
jmxget | version | nfs3 |
oev | portmap | |
oiv | secondarynamenode | |
oiv_legacy | spser | |
storagepolicies | zkfc |
2.1 admin command
管理员命令主要介绍 dfsadmin和fsck
输入 hdfs dfsadmin 查看usage
hdfs dfsadmin -report #报告集群状态
hdfs dfsadmin -safemode #设置集群的安全模式,当集群出现问题时,可设置安全模式。enter :进入安全模式,安全模式状态下,不可以向hdfs上传输文件;leave:离开;get:获取当前状态;wait:等待。
hdfs dfsadmin -allowSnapShot #启用快照功能,快照功能开启,就可以对文件进行备份了。
输入hdfs fsck 查看fsck的usage:
hdfs fsck / #查看hdfs文件系统信息
2.2 client commands
客户端命令介绍dfs、getconf和version
输入 hdfs dfs 查看dfs的usage
每个具体子命令的含义如下表
appendToFile | 追加一个或者多个文件到hdfs指定文件中 |
---|---|
cat | 显示文件内容到标准输出上 |
checksum | 校验和 |
chgrp | 修改所属组 |
chmod | hdfs上文件用户名和用户组 |
chown | hdfs上文件权限修改 |
copyFromLocal | 从本地复制文件到hdfs文件系统 |
copyToLocal | 复制hdfs文件系统中的文件到本地 |
count | 统计与指定文件模式匹配的路径下的目录,文件和字节数 |
cp | 将文件或目录复制到目标路径下 |
createSnapshot | 创建快照 |
deleteSnapshot | 删除快照 |
df | 查看可用空间 |
du | 显示给定目录中包含的文件和目录的大小或文件的长度,用字节大小表示。 |
expunge | 清空回收站 |
find | 查找 |
get | 将本地文件从HDFS下载到本地 |
getfacl | 显示权限信息 |
getfattr | 显示其他信息 |
getmerge | 将源目录和目标文件作为输入,并将src中的文件连接到目标本地文件 |
head | 输出文件开头10行 |
help | 帮助信息 |
ls | 查看目录下内容 |
mkdir | 创建目录 |
moveFromLocal | 从本地移动到hdfs |
moveToLocal | 移动到本地 |
mv | 将文件或目录从HDFS的源路径移动到目标路径 |
put | 将本地文件上传到HDFS |
renameSnapshot | 重命名快照 |
rm | 删除一个文件或目录 |
rmdir | 删除空目录 |
setfacl | 设置权限 |
setfattr | 其他信息 |
setrep | 修改副本数 |
stat | 显示文件所占块数(%b) |
tail | 显示文件的最后1kb内容到标准输出 |
test | 某个文件或者目录是否存在 |
text | 获取源文件并以文本格式输出文件 |
touch | 创建一个零长度的文件 |
touchz | 目录创建一个新文件 |
truncate | 截断 |
usage | 返回命令的help信息。 |
输入 hdfs getconf 查看getconf的usage
hdfs getconf -namenodes #查看namenode的节点名称
输入hdfs version查看hsdf的版本信息
2.3 Daemon Command
hdfs balancer # 启动datanode的均衡分布
hdfs datanode #查看datanode进程
hdfs namenode #查看namenode进程
namenode后也可跟参数,具体如下
hdfs nameNode
[-format] //格式化NameNode
[-upgrade] //在Hadoop升级后,应该使用这个命令启动NameNode
[-rollback] //使用NameNode回滚前一个版本
[-finalize] //删除文件系统的前一个状态,这会导致系统不能回滚到前一个zhua
[-importCheckpoint] // 复制备份checkpoint的状态到当前checkpoint
至此,hdfs的shell命令算是简单的过了一遍,有兴趣的可以每个命令具体去实操一下。
往期推荐
不求点赞,只求有用
扫码关注
点个在看 你最好看