HDFS Shell 命令实操

2021-06-11 19:10:32 浏览数 (1)

文章目录

  • 1. 微博案例--HDFS Shell实操
    • 1.1 案例:微博用户数据HDFS操作
    • 1.2 创建目录
    • 1.3 查看指定目录下内容
    • 1.4 上传文件到指定目录下(1)
    • 1.5 上传文件到指定目录下(2)
    • 1.6 查看HDFS文件内容(1)
    • 1.7 查看HDFS文件内容(2)
    • 1.8 查看HDFS文件内容(3)
    • 1.9 下载HDFS文件(1)
    • 1.10 合并下载HDFS文件(2)
    • 1.11 拷贝HDFS文件
    • 1.12 追加数据到HDFS文件中
    • 1.13 查看HDFS磁盘空间
    • 1.14 查看HDFS文件使用的空间量
    • 1.15 HDFS数据移动操作或重命名文件的名称
    • 1.16 修改HDFS文件副本个数
    • 1.17 删除HDFS文件
    • 1.18 批量删除文件
    • 1.19 递归删除文件夹
  • 2. HDFS其他Shell命令操作

1. 微博案例–HDFS Shell实操

1.1 案例:微博用户数据HDFS操作

  • 需求:微博作为社交平台,拥有大量的用户评论数据。为了更好的分析微博用户的行为和习惯,进行精准的营销和推荐。可以将微博的用户评论数据上传到HDFS,供后续其他大规模文本、情感分析程序来处理。因为HDFS作为分布式文件存储系统,是整个大数据平台的最底层的核心。
  • 目录规划

1.2 创建目录

  • 命令:hadoop fs -mkdir [-p] <path> ... path 为待创建的目录 -p选项的行为与Unix mkdir -p非常相似,它会沿着路径创建父目录。
  • 可以选择一个一个创建,也可以一起创建
代码语言:javascript复制
hadoop fs -mkdir /common
hadoop fs -mkdir /workspace /warehouse /source

1.3 查看指定目录下内容

  • 命令:hadoop fs -ls [-h] [-R] [<path> ...] path 指定目录路径 -h 人性化显示文件size -R 递归查看指定目录及其子目录
  • 两个参数也可以同时使用
代码语言:javascript复制
hadoop fs -ls -h -R /
  • 使用 -h 参数会人性化一点

1.4 上传文件到指定目录下(1)

  • 命令:hadoop fs -put [-f] [-p] <localsrc> ... <dst> -f 覆盖目标文件(已存在下) -p 保留访问和修改时间,所有权和权限。 localsrc 本地文件系统(客户端所在机器) dst 目标文件系统(HDFS)
  • 上传 test1.csv 测试文件到 root 目录下
  • 创建好 HDFS 下的文件目录
代码语言:javascript复制
hadoop fs -mkdir -p /source/weibo/star/comment_log/20210404_hadoop1/
  • 把刚刚root下的 test1.cvs 文件上传到 HDFS 对应的路径下,下面两种方式都是可行的
代码语言:javascript复制
hadoop fs -put test1.csv /source/weibo/star/comment_log/20210404_hadoop1/

代码语言:javascript复制
hadoop fs -put file:///root/test1.csv

1.5 上传文件到指定目录下(2)

  • 命令:hadoop fs -moveFromLocal <localsrc> ... <dst>
  • 和-put功能意义,只不过上传结束,源数据会被删除
代码语言:javascript复制
hadoop fs -moveFromLocal test1.csv /tmp/

1.6 查看HDFS文件内容(1)

  • 命令:hadoop fs -cat <src> ... 读取指定文件全部内容,显示在标准输出控制台。 注意:对于大文件内容读取,慎重。 适合查看小文件
  • 如:
代码语言:javascript复制
hadoop fs -cat /source/weibo/star/comment_log/20210404_hadoop1/test1.csv

1.7 查看HDFS文件内容(2)

  • 命令:hadoop fs -head <file>
  • 查看文件前1KB的内容。
  • 如:
代码语言:javascript复制
hadoop fs -head /source/weibo/star/comment_log/20210404_hadoop1/test1.csv

1.8 查看HDFS文件内容(3)

  • 命令:hadoop fs -tail [-f] <file>
  • 查看文件最后1KB的内容 -f选择可以动态显示文件中追加的内容。

1.9 下载HDFS文件(1)

  • 命令:hadoop fs -get [-f] [-p] <src> ... <localdst>
  • src 表示的的是 HDFS 路径
  • 下载文件到本地文件系统指定目录,localdst必须是目录,表示当前客户端的机器路径 -f 覆盖目标文件(已存在下) -p 保留访问和修改时间,所有权和权限。
  • 如:把 HDFS 下的 /tmp/test1.csv 下载到第三台 hadoop3root
代码语言:javascript复制
hadoop fs -get /tmp/test1.csv /root

代码语言:javascript复制
hadoop fs -get /tmp/test1.csv ./

./ 表示的就是当前路径

1.10 合并下载HDFS文件(2)

  • 命令:hadoop fs -getmerge [-nl] [-skip-empty-file] <src> <localdst>
  • 下载多个文件合并到本地文件系统的一个文件中。并且跳过空文件 -nl选项表示在每个文件末尾添加换行符
  • 案例:分别在本地文件路径下创建 三个txt文件,分别写入1,2,3数字
  • 创建HDFS下 /tmp/small 文件夹,把三个 txt 文件上传到此路径下
  • /tmp/small/下的 三个文件下载到本地合并,重命名为 123.txt 文件

1.11 拷贝HDFS文件

  • 命令:hadoop fs -cp [-f] <src> ... <dst> -f 覆盖目标文件(已存在下)
  • 案例:把 /tmp/test1.csv 文件拷贝到 /tmp/small 路径下
代码语言:javascript复制
hadoop fs -cp /tmp/test1.csv /tmp/small/

1.12 追加数据到HDFS文件中

  • 命令:hadoop fs -appendToFile <localsrc> ... <dst>
  • 将所有给定本地文件的内容追加到给定dst文件。 dst如果文件不存在,将创建该文件。 如果<localSrc>为-,则输入为从标准输入中读取。
  • 案例:在本地创建 xdr630.txt 文件,写入:this is xdr630 file. ,追加到 HDFS 上的 /tmp/small/1.txt
代码语言:javascript复制
hadoop fs -appendToFile xdr630.txt /tmp/small/1.txt

1.13 查看HDFS磁盘空间

  • 命令:hadoop fs -df [-h] [<path> ...]
  • 显示文件系统的容量,可用空间和已用空间
代码语言:javascript复制
hadoop fs -df -h /

1.14 查看HDFS文件使用的空间量

  • 命令:hadoop fs -du [-s] [-h] <path> ... -s:表示显示指定路径文件长度的汇总摘要,而不是单个文件的摘要。 -h:选项将以“人类可读”的方式格式化文件大小
代码语言:javascript复制
hadoop fs -du -s -h /source/weibo

1.15 HDFS数据移动操作或重命名文件的名称

  • 命令:hadoop fs -mv <src> ... <dst>
  • 移动文件到指定文件夹下
  • 可以使用该命令移动数据,重命名文件的名称
  • 案例:把/tmp/small/test1.csv 文件移动到 HDFS 的根目录下
代码语言:javascript复制
hadoop fs -mv /tmp/small/test1.csv /

1.16 修改HDFS文件副本个数

  • 命令:hadoop fs -setrep [-R] [-w] <rep> <path> ...
  • 修改指定文件的副本个数。 -R表示递归 修改文件夹下及其所有 -w 客户端是否等待副本修改完毕。

1.17 删除HDFS文件

  • 命令: hadoop fs -rm [-f] [-r |-R] [-skipTrash] [-safely] URI [URI ...]
  • 删除文件 -R选项以递归方式删除目录及其下的任何内容。 -r选项等效于-R。 -skipTrash选项将绕过垃圾桶(如果启用),并立即删除指定的文件。当需要从超配额目录中删除文件时,这很有用。
  • 案例:删除 HDFS 根目录下的 test1.csv
代码语言:javascript复制
hadoop fs -rm /test1.csv
  • 成功返回0,错误返回-1。
  • 递归删除:

1.18 批量删除文件

  • 其实就是一个命令连续删除多个文件,如:
  • 案例:删除 HDFS 上的 /tmp/small 下的三个 txt 文件。
代码语言:javascript复制
hadoop fs -rm /tmp/small/1.txt /tmp/small/2.txt /tmp/small/3.txt
  • 这里要注意的是:多个文件中的间隔一定要写完整的文件路径,不然就删除不了

1.19 递归删除文件夹

  • 命令:hadoop fs -rmr URI [URI …] 或:hadoop fs -rm -r URI [URI …]
  • 递归版本的删除。
  • 官方推荐使用 hadoop fs -rm -r
  • 如:
代码语言:javascript复制
hadoop fs -rmr /user/hadoop/dir
代码语言:javascript复制
hadoop fs -rmr hdfs://host:port/user/hadoop/dir

2. HDFS其他Shell命令操作

  • 目前最新版本hadoop 3.2.2 命令官方指导文档 https://hadoop.apache.org/docs/r3.2.2/hadoop-project-dist/hadoop-common/FileSystemShell.html
  • 老版本HDFS中文版命令:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html
  • 友情提示 常见的操作自己最好能够记住,其他操作可以根据需要查询文档使用。 命令属于多用多会,孰能生巧,不用就忘。

0 人点赞