Hadoop--hdfs/dfs常用命令的使用

本文详细介绍了Hadoop HDFS中的常见命令,包括mkdir创建目录,ls查看内容,put和get进行文件上传下载,du显示大小,mv和cp移动复制文件,rm删除文件,cat和text查看内容,touchz创建空文件,stat查看文件信息,tail查看文件尾部,count统计文件数量,getmerge合并文件,grep过滤内容,以及chown修改权限。还提到了distcp用于集群间的拷贝操作。

-mkdir  创建目录

hdfs dfs -mkdir [-p] < paths>

-ls  查看目录下内容,包括文件名,权限,所有者,大小和修改时间

hdfs dfs -ls [-R] < args>

-put  将本地文件或目录上传到HDFS中的路径

hdfs dfs -put < localsrc> … < dst>

-get  将文件或目录从HDFS中的路径拷贝到本地文件路径

hdfs dfs -get [-ignoreCrc] [-crc] < src> < localdst>

选项:-ignorecrc选项复制CRC校验失败的文件。-crc选项复制文件和CRC。

-du  显示给定目录中包含的文件和目录的大小或文件的长度,用字节大小表示。

hdfs dfs -du [-s] [-h] URI [URI …]

选项:-s选项将显示文件长度的汇总摘要,而不是单个文件。-h选项将以“人可读”的方式格式化文件大小(例如64.0m而不是67108864);第一列标示该目录下总文件大小,第二列标示该目录下所有文件在集群上的总存储大小和你的副本数相关(第二列内容=文件大小*副本数),第三列标示你查询的目录

-dus  显示文件长度的摘要。

hdfs dfs -dus < args>

注意:不推荐使用此命令。而是使用hdfs dfs -du -s。

-mv  在HDFS文件系统中,将文件或目录从HDFS的源路径移动到目标路径。不允许跨文件系统移动文件。

-cp  在HDFS文件系统中,将文件或目录复制到目标路径下

hdfs dfs -cp [-f] [-p | -p [topax] ] URI [ URI …] < dest>

选项:-f选项覆盖已经存在的目标。-p选项将保留文件属性[topx](时间戳,所有权,权限,ACL,XAttr)。如果指定了-p且没有arg,则保留时间戳,所有权和权限。如果指定了-pa,则还保留权限,因为ACL是一组超级权限。确定是否保留原始命名空间扩展属性与-p标志无关。

-copyFromLocal  从本地复制文件到hdfs文件系统(与-put命令相似)

hdfs dfs -copyFromLocal < localsrc> URI

选项:如果目标已存在,则-f选项将覆盖目标。

-copyToLocal  复制hdfs文件系统中的文件到本地 (与-get命令相似)

hdfs dfs -copyToLocal [-ignorecrc] [-crc] URI < localdst>

-rm  删除一个文件或目录

hdfs dfs -rm [-f] [-r|-R] [-skipTrash] URI [URI …]

选项:如果文件不存在,-f选项将不显示诊断消息或修改退出状态以反映错误。-R选项以递归方式删除目录及其下的任何内容。-r选项等效于-R。-skipTrash选项将绕过垃圾桶(如果已启用),并立即删除指定的文件。当需要从超配额目录中删除文件时,这非常有用。

-cat  显示文件内容到标准输出上。

hdfs dfs -cat URI [URI …]

-text  获取源文件并以文本格式输出文件。允许的格式为zip和TextRecordInputStream。

hdfs dfs -text

-touchz  创建一个零长度的文件。

hdfs dfs -touchz URI [URI …]

-stat  显示文件所占块数(%b),文件名(%n),块大小(%n),复制数(%r),修改时间(%y%Y)

hdfs dfs -stat URI [URI …]

-tail  显示文件的最后1kb内容到标准输出

hdfs dfs -tail [-f] URI

选项:  -f选项将在文件增长时输出附加数据,如在Unix中一样。

-count  统计与指定文件模式匹配的路径下的目录,文件和字节数

hdfs dfs -count [-q] [-h] < paths>

-getmerge  将源目录和目标文件作为输入,并将src中的文件连接到目标本地文件(把两个文件的内容合并起来)

hdfs dfs -getmerge < src> < localdst> [addnl]

注:合并后的文件位于当前目录,不在hdfs中,是本地文件

-grep  从hdfs上过滤包含某个字符的行内容

hdfs dfs -cat < srcpath> | grep 过滤字段

-chown  hdfs上文件权限修改

 hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]#修改文件的所有者 

例如:hdfs dfs -chown -R Administrator:Administrator /user/

-distcp  最常用在集群之间的拷贝:hadoop distcp hdfs://master1:8020/foo/bar hdfs://master2:8020/bar/foo

从参考信息可知,当出现 `Invalid dfs.datanode.data.dir` 错误时,往往和目录权限有关,DFS_DATANODE_DATA_DIR_PERMISSION_DEFAULT 为 700,也就是需要把目录权限改成 700 [^1]。针对因硬盘无法识别致使 HDFS 无法正常使用,出现 `org.apache.hadoop.hdfs.server.datanode.DataNode: Invalid dfs.datanode.data.dir /data0/data - 2/hdfs/dfs.data` 错误,可尝试以下解决办法: ### 检查硬盘连接 要保证硬盘物理连接正常,查看数据线、电源线是否连接稳固,有无松动、损坏状况。 ### 检查硬盘挂载 查看硬盘是否正确挂载到 `/data0/data - 2/hdfs/dfs.data` 目录。可使用如下命令查看挂载信息: ```bash df -h ``` 若硬盘未挂载,需进行挂载操作。先创建挂载点: ```bash mkdir -p /data0/data - 2/hdfs/dfs.data ``` 然后挂载硬盘,假设硬盘设备名为 `/dev/sdb1`: ```bash mount /dev/sdb1 /data0/data - 2/hdfs/dfs.data ``` 为了让系统在重启后自动挂载,还需修改 `/etc/fstab` 文件,添加如下内容: ```plaintext /dev/sdb1 /data0/data - 2/hdfs/dfs.data ext4 defaults 0 0 ``` ### 检查目录权限 按照要求,把 `/data0/data - 2/hdfs/dfs.data` 目录权限修改为 700: ```bash chmod 700 /data0/data - 2/hdfs/dfs.data ``` ### 检查配置文件 确认 `hdfs-site.xml` 配置文件里 `dfs.datanode.data.dir` 的配置是否正确: ```xml <property> <name>dfs.datanode.data.dir</name> <value>/data0/data - 2/hdfs/dfs.data</value> </property> ``` ### 重启 HDFS 完成上述操作后,重启 HDFS 服务,让配置生效: ```bash stop-dfs.sh start-dfs.sh ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值