Hadoop和HDFS都是Apache Software Foundation的开源项目,用于分布式存储和处理大数据。在命令行中,Hadoop提供了两种与文件系统相关的命令:hadoop fs和hadoop dfs。而HDFS也有其自己的命令:hdfs dfs。
- hadoop fs: 这是一个通用的文件系统命令,不仅限于HDFS。它可以针对任何系统,如本地文件、HDFS文件、HFTP文件、S3文件系统等进行操作。此外,hadoop fs命令的使用范围更广泛,不仅可以用于HDFS,还可以用于其他文件系统,如Local FS。
- hadoop dfs: 这是特定于HDFS的文件系统的相关操作命令。但是,它已经逐渐不被推荐使用。当使用hadoop dfs时,其内部会被转换为hdfs dfs命令。这意味着,尽管hadoop dfs是专门为HDFS设计的,但它的功能在某种程度上被hdfs dfs所覆盖。
- hdfs dfs: 这是专门针对HDFS分布式文件系统的命令。与hadoop dfs类似,当使用hdfs dfs时,其内部也会被转换为相应的HDFS操作。但hdfs dfs是专为HDFS设计的命令,因此只适用于HDFS文件系统。
总结来说,hadoop fs和hdfs dfs都是与文件系统相关的命令,但它们的使用范围和功能有所不同。在实际使用中,用户应根据需求选择合适的命令。
HDFS文件系统命令
以下是一些常用的HDFS(Hadoop分布式文件系统)命令:
- 查看目录文件信息:
hdfs dfs -ls /path/to/directory
- 创建文件夹:
hdfs dfs -mkdir /path/to/new/directory
- 删除文件夹:
hdfs dfs -rmr /path/to/directory
- 递归查看文件目录信息:
hdfs dfs -lsr /path/to/directory
- 返回指定路径的信息:
hdfs dfs -stat /path/to/file
- 查看文件大小:
hdfs dfs -du -h /path/to/file
- 显示hdfs上目标文件的大小:
hdfs dfs -du /xxx/xxx
请注意,上述命令中的/path/to/directory
和/path/to/file
应替换为实际的目录或文件路径。
赋权
hdfs dfs -chgrp group path 更改文件所属组
赋权(递归更改目录的所属组)
hdfs dfs -chgrp -R /dir 递归更改dir目录的所属组
改变文件权限
hdfs dfs -chmod [-R] 权限 -path 更改文件的权限
改变文件的所有者
hdfs dfs -chown owner[-group] /dir 更改文件的所有者
递归更改目录的所属用户
hdfs dfs -chown -R owner[-group] /dir 递归更改dir目录的所属用户
创建文件以及与本地文件系统交互
hdfs dfs -touchz a.txt 创建空文件a.txt
删除文件
hdfs dfs -rm file 删除文件file
向指定路径上传文件
hdfs dfs -put file dir 向dir路径文件上传file文件
向指定目录上传文件并且改名
hdfs dfs -put filea dir/fileb 向dir上传文件filea并且把filea改名为fileb
判断文件是否存在,使用命令:hdfs fs -test -e /dir/a.txt
返回结果为正0或负1。
判断目录是否为目录,使用命令:hdfs fs -test -d /dir
返回结果为正0或负1。
判断文件是否为空,使用命令:hdfs fs -test -z /dir/a.txt
返回结果为正0或负1。
第六类:系统功能管理类:
与 hdfs dfsadmin
相关的命令:
hdfs dfsadmin -safemode enter
:进入安全模式。hdfs dfsadmin -sfaemode leave
:离开安全模式。hdfs dfsadmin -decommission datanodename
:关闭指定的datanode节点。hdfs dfsadmin -finalizeUpgrade
:终结升级操作。hdfs dfsadmin -upgradeProcess status
:查看升级操作状态。hdfs version
:查看hdfs版本。hdfs daemonlog -getlevel host:port <name>
:打印运行在指定host和port的守护进程的日志级别。hdfs daemonlog -setlevel host:port <name> <level>
:设置运行在指定host和port的守护进程的日志级别。hdfs dfs -setrep -w 副本数 -R path
:设置指定文件的副本数。
启动和停止命令如下所示:
- 启动文件系统:start-all.sh
- 关闭文件系统:stop-all.sh
- 启动resourcemanager和nodemanager:start-yarn.sh
- 关闭resourcemanager和nodemanager:stop-yarn.sh
- 单独启动datanode:start-datanode.sh
- 启动负载均衡(尽量不要在namenode节点使用):start-balancer.sh -t 10%(10%代表负载最高和最低相差值)
- 格式化文件系统:
hdfs namenode -format
- 分发新的hdfs版本之后,以upgrade选项启动namenode:
hdfs namenode -upgrade
- 将namenode回滚到前一版本(执行前需要停止集群并分发老的hdfs版本):
hdfs namenode -rollback
- finalize会删除文件系统的前一状态,升级终结操作之后停掉namenode��分发老的hdfs版本后使用:
hdfs namenode -finalize
- 从检查点目录装载镜像并保存到当前检查点目录(由fs.checkpoint.dir指定):
hdfs namenode importCheckpoint
job系列
hdfs jar file.jar 执行jar包程序
hdfs job -kill job_201005310937_0053 杀死正在执行的jar包程序
hdfs job -submit 提交作业
hdfs job -status 打印map和reduce完成百分比和所有计数器。
hdfs job -counter 打印计数器的值。
hdfs job -kill 杀死指定作业。
hdfs job -events <from-event-#> <#-of-events> 打印给定范围内jobtracker接收到的事件细节。
hdfs job -history [all]
hdfs job -history 打印作业的细节、失败及被杀死原因的细节。更多的关于一个作业的细节比如成功的任务,做过的任务尝试等信息可以通过指定[all]选项查看。
hdfs job -list [all] 显示所有作业。-list只显示将要完成的作业。
hdfs job -kill -task 杀死任务。被杀死的任务不会不利于失败尝试。
hdfs job -fail -task 使任务失败。被失败的任务会对失败尝试不利。
以下是对文本的改进:
块检查系列
使用hdfs fsck <path> -move
命令可以将受损文件移动到/lost+found
目录。
使用hdfs fsck <path> -delete
命令可以删除受损文件。
使用hdfs fsck <path> -openforwrite
命令可以打印出正在被写入的文件。
使用hdfs fsck <path> -files
命令可以打印出正在被检查的文件。
使用hdfs fsck <path> -blocks
命令可以打印出块信息报告。
使用hdfs fsck <path> -locations
命令可以打印出每个块的位置信息。
使用hdfs fsck <path> -racks
命令可以打印出data-node的网络拓扑结构。
pipies作业系列
hdfs pipes -conf
hdfs pipes -jobconf <key=value>, <key=value>, … 增加/覆盖作业的配置项
hdfs pipes -input
hdfs pipes -output
hdfs pipes -jar Jar文件名
hdfs pipes -inputformat InputFormat类
hdfs pipes -map Java Map类
hdfs pipes -partitioner Java Partitioner
hdfs pipes -reduce Java Reduce类
hdfs pipes -writer Java RecordWriter
hdfs pipes -program 可执行程序的URI
hdfs pipes -reduces reduce个数