HDFS常用命令

hdfs 命令最常用的就是: hdfs dfs -[linux的命令]

通过查看Hadoop的命令 与 hdfs 的命令并不相同,且不存在包含关系。仅仅是 hadoop fs 与 hdfs dfs 可以等价。

hadoop 常用命令

查看hadoop 命令所有参数:

hadoop
hadoop checknative  // 检查当前版本hadoop内库支持哪些压缩。如果是false,则需要自己编译支持此压缩。如果使用CDH则都支持。

hadoop classpath  // 打印当前hadoop的环境

hadoop jar  // 等价于 yarn jar ,提交jar 包到yarn

hdfs 常用命令

查看hdfs 命令所有参数:

hdfs

hdfs dfsadmin


hdfs dfsadmin -report // 报告当前集群的情况

hdfs dfsadmin -safemode  // 安全模式。

hdfs dfsadmin -safemode leave  // leave代表关闭,安全模式关闭才是读写正常的。

hdfs dfsadmin -safemode enter  // 进入安全模式。如正在做集群维护时,就可以手动进入安全模式,维护完再离开
>Safemode is On     // 安全模式下,能读不能写

// hdfs dfsadmin 还有其他很多参数

hdfs fsck

hdfs fsck  // 对hdfs 做检查。如发现 Target Replicas is 3 but 1 live replica(s) 代表有副本丢失。文件权限后的数据就代表当前文件本来需有多少副本

平衡

// hdfs balancer  // 集群平衡。DN1 与 DN2 间节点平衡。封装到脚本,每天晚上定执行
hdfs balancer -policy datanode -threshold 10  // 让 每个节点磁盘使用率,减去平均磁盘使用率 < 10%

// hdfs diskbalancer // 磁盘平衡。DN1中 多块磁盘的平衡。需要确保参数dfs.disk.balancer.enabled=true

执行命令: 先生成计划  再执行 
hdfs diskbalancer -plan ruozedata001  // 生产后会创建一个同名.plan.json文件,执行它
hdfs diskbalancer -execute ruozedata001.plan.json

回收站

linux 没有回收站,可以自己搞
思路:准备脚本,rm 改mv,移动到指定的目录,很多参考。

hdfs 是有回收站的
有参数控制是否启用:fs.trash.interval // 回收站保留时间min,如果为0,代表不启用回收站功能

<property>
        <name>fs.trash.interval</name>
        <value>10080</value>
 </property>
 
开启后的删除操作就会移动
hdfs dfs -ls

hadoop fs -ls 是在 /user/liqiang ; hadoop fs -ls / 是在根目录

hdfs dfs -ls       # 列出工作主目录-用户名路径下的内容
hdfs dfs -ls /     # 列出hdfs 根目录下的内容
hdfs dfs -mkdir
# path可以是绝对路径,也可以是相对路径。
hdfs dfs -mkdir [-p] <path>

hdfs dfs -mkdir tmp   # 在hdfs文件系统中/user/liqiang 目录下创建tmp目录
hdfs dfs -mkdir ./tmp # 

hdfs dfs -mkdir /tmp  # 在hdfs文件系统的根目录下创建一个tmp目录
hdfs dfs -rm -r -f
hdfs dfs -rm [-r] [-f] <uri>  # 删除目录或文件,-r -f不能组合成-rf
hdfs dfs -rm -r -f /test      # 删除根目录下的test目录
hdfs dfs -rmdir /test         # 删除目录:只能删除空目录
hdfs dfs -appendToFile
# appendToFile命令既可以将一个或多个文件添加到HDFS中,也可以将流中的数据读取到HDFS中。最终都是在hdfs中生成一个文件。
hdfs dfs -appendToFile <localSrc> <dst>

# 将本地文件exp.log上传到hdfs中/user/liqiang/tmp目录,并重命名为:exception.log
hdfs dfs -appendToFile ./exp.log ./tmp/exception.log

# 将本地的test目录传到hdfs中,重命名为tst文件【注意这里并不是目录】。
hdfs dfs -appendToFile ./test ./tst
hdfs dfs -cat
hdfs dfs -cat <URI>

# 查看/user/liqiang/tmp/exception.log 文件内容
hdfs dfs -cat ./tmp/exception.log
hdfs dfs -text
hdfs dfs -text

# 查看文件内容,支持压缩文件的查看而不会乱码
hdfs dfs -text ./tmp/exception.log
hdfs dfs -find
# 从根目录下精确搜索exception.log文件
hdfs dfs -find / -name exception.log

# 从/user/liqiang目录下搜索名称中包含ex字符串的文件
hdfs dfs -find /user/liqiang -name '*ex*'
hdfs dfs -put

从本地文件系统拷贝文件到hdfs中。

hdfs dfs -put [-f] [-p] [-l] [-d] [-t <thread count>] [ - | <localsrc1> .. ]. <dst>
# -f 如果已存在就覆盖
# -p 递归拷贝

hdfs dfs -put head.png tmp/head.png # 拷贝文件
hdfs dfs -put txt/ tmp/txt          # 将目录txt拷贝到hdfs中的/user/liqiang/tmp/txt
hdfs dfs -get

从hdfs中下载文件到本地文件系统中。

hdfs dfs -get [-ignorecrc] [-crc] [-p] [-f] <src> <localdst>
# -p 保留访问权限 修改时间等信息
# -f 如果目标文件已存在,直接覆盖。

hdfs dfs -get ./tmp ./hdfs-temp-dic # 将hdfs中的tmp目录下载到本地并重命名
hdfs dfs -cp
hdfs dfs -cp [-f] [-p | -p[topax]] URI [URI ...] <dest>
# -f 如果存在,直接覆盖。

hdfs dfs -cp /user/hadoop/file1 /user/hadoop/file2
hdfs dfs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir

hdfs dfs -cp tmp ./temp # 将tmp拷贝并重命名为temp
hdfs dfs -count

统计目录下文件夹数量 文件数量 目录下文件总字节数。

hadoop fs -count [-q] [-h] [-v] [-x] [-t [<storage type>]] [-u] [-e] [-s] <paths>\
hdfs dfs -count  /user/test # 对/user/test 目录进行统计

结果每列含义:目录数 文件数 总大小(字节) 目录名称

hdfs dfs -mv
hdfs dfs -mv URI [URI ...] <dest>
# mv命令只能在hdfs文件系统中使用,不能跨系统。

hdfs dfs -mv tmp /tmp_home
hdfs dfs -chmod
hdfs dfs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI ...]
# -R 递归目录授权

hdfs dfs -chmod 700 temp # 给temp目录授权700~
hdfs dfs -chown
hdfs dfs -chown [-R] <MODE[,MODE]... | OCTALMODE> URI [URI ...]

hdfs dfs -chown liqiang:liqiang temp # 更文件改用户组
hdfs dfs -tail
hadoop fs -tail [-f] URI # 输出文件的末尾输出到控制台

# -f 动态输出
hdfs dfs -touch
hdfs dfs -touch [-a] [-m] [-t TIMESTAMP] [-c] URI [URI ...]
hdfs dfs -touchz
hdfs dfs -touchz URI [URI ...] # 创建一个长度为0的文件
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐