命令中参数name:压缩文件名,自己任意取;< hdfs parent dir > :压缩文件所在的父目录;< src >*:要压缩的文件名;< hdfs dst >:压缩文件存放路径
示例:hadoop archive -archiveName hadoop.har -p /user 1.txt 2.txt /des
示例中将hdfs中/user目录下的文件1.txt,2.txt压缩成一个名叫hadoop.har的文件存放在hdfs中/des目录下,如果1.txt,2.txt不写就是将/user目录下所有的目录和文件压缩成一个名叫hadoop.har的文件存放在hdfs中/des目录下
显示har的内容可以用如下命令:
hadoop fs -ls /des/hadoop.jar
显示har压缩的是那些文件可以用如下命令
hadoop fs -ls -R har:///des/hadoop.har
**注意:**har文件不能进行二次压缩。如果想给.har加文件,只能找到原来的文件,重新创建一个。har文件中原来文件的数据并没有变化,har文件真正的作用是减少NameNode和DataNode过多的空间浪费。
16.balancer
hdfs balancer
如果管理员发现某些DataNode保存数据过多,某些DataNode保存数据相对较少,可以使用上述命令手动启动内部的均衡过程
17.dfsadmin
hdfs dfsadmin -help
管理员可以通过dfsadmin管理HDFS,用法可以通过上述命令查看
hdfs dfsadmin -report
显示文件系统的基本数据
hdfs dfsadmin -safemode < enter | leave | get | wait >
enter:进入安全模式;leave:离开安全模式;get:获知是否开启安全模式;
wait:等待离开安全模式
18.distcp
用来在两个HDFS之间拷贝数据
注意事项
部分命令(如mkdir 等)需要文件\ 目录名作为参数,参数一般都是URI 格式,args 参数的基本格式是:scheme:// authority/path
scheme 指具体的文件系统,如果是本地文件,那么scheme 就是file ;如果是HDFS 上的文件,那么scheme 就是hdfs。authority 就是机器的地址和对应的端口。当然,正如Linux文件有绝对路径和相对路径一样,这里的URI 参数也可以做一定程度省略。当对应的设置为hdfs://namenode:namenodeport 时,如果路径参数为/parent/child,那么它对应的实际文件为:hdfs://namenode:namenodeport/parent/child
但是有一点要注意,HDFS 没有所谓当前工作目录的概念。前面说过,HDFS 所有文件元数据都是存在NameNode 节点上的,具体文件的存放由NameNode 掌控,某一个文件可能被分拆放到不同的机器上,也可能为了提高效率将路径不同的文件也放到同一台机器上。所以,为HDFS 提供cd、pwd 操作,都是不现实的。