HDFS操作

发布时间:2024年01月24日

文章目录

  • 主要内容
      • 1.编程实现以下指定功能,并利用Hadoop提供的Shell命令完成相同任务:
  • 一.shell命令行实现
      • 1.向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,则由用户来指定是追加到原有文件末尾还是覆盖原有的文件;(put)
          • 打开命令端口,并且输/apps/hadoop/sbin/start-dfs.sh启动HDFS。NameNode、DataNode、Secondary NameNode分别被启动:
      • 2.检查文件是否存在,在命令行中输入如下命令
          • 代码如下(示例):
      • 3.如果结果显示文件已经存在,则用户可以选择追加到原来文件末尾或者覆盖原来文件,具体命令如下:
          • 代码如下(示例):
      • 4.从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名;(get)
          • 代码如下(示例):
      • 5.将HDFS中指定文件的内容输出到终端中;(cat)
      • 6.通过cat命令查看HDFS文件内容
      • 7.显示HDFS中指定的文件的读写权限、大小、路径等信息;(ls)
          • 代码如下(示例):
  • 二.编程实现
    • 1.因已上传test.txt文件到HDFS,所以代码运行结果为追加至文件末尾。
      • 2.因为HDFS根目录下已经存在test.txt文件,所以下载下来的文件会被重命名,重命名为test.txt_0。
      • 3.读取HDFS上的test.txt文件,可以看见刚刚(1)中追加内容后的文件
      • 4.读取HDFS根目录下的test.txt文件读写权限、大小、路径等信息
      • 5.给定的目录为HDFS的根目录‘/’,该目录下只有test.txt文件,所以输出test.txt信息
  • 总结

主要内容

1.编程实现以下指定功能,并利用Hadoop提供的Shell命令完成相同任务:

  1. 向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,则由用户来指定是追加到原有文件末尾还是覆盖原有的文件;(put)
  2. 从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名;(get)
  3. 将HDFS中指定文件的内容输出到终端中;(cat)
  4. 显示HDFS中指定的文件的读写权限、大小、路径等信息;(ls)
  5. 给定HDFS中某一个目录,输出该目录下的所有文件的读写权限、大小、创建时间、路径等信息;(ls)
  • copyFromLocalFile方法:文件上传
  • copyToLocalFile方法:文件下载
  • listStatus方法:获取指定目录或文件的基本信息,借助FsStatus类,可以实现ls命令的功能

一.shell命令行实现

1.向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,则由用户来指定是追加到原有文件末尾还是覆盖原有的文件;(put)

打开命令端口,并且输/apps/hadoop/sbin/start-dfs.sh启动HDFS。NameNode、DataNode、Secondary NameNode分别被启动:

在这里插入图片描述

2.检查文件是否存在,在命令行中输入如下命令

代码如下(示例):
$ cd /usr/local/hadoop
$ ./bin/hdfs dfs -test -e text.txt

然后输入$ echo $?检查,1表示文件不存在,0表示文件存在

在这里插入图片描述

3.如果结果显示文件已经存在,则用户可以选择追加到原来文件末尾或者覆盖原来文件,具体命令如下:

代码如下(示例):
$ if $(hdfs dfs -test -e text.txt);
$ then $(hdfs dfs -appendToFile local.txt text.txt);
$ else $(hdfs dfs -copyFromLocal -f local.txt text.txt);
$ fi

4.从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名;(get)

代码如下(示例):
1.输入hadoop fs -put ./test.txt /,使用put将test.txt文件上传

2.使用如下命令操作:
$ if $(hdfs dfs -test -e file:///home/hadoop/text.txt);
$ then $(hdfs dfs -copyToLocal text.txt ./text2.txt); 
$ else $(hdfs dfs -copyToLocal text.txt ./text.txt); 
$ fi

在这里插入图片描述

5.将HDFS中指定文件的内容输出到终端中;(cat)

1.通过上述实验将指定文件上传至HDFS,并且通过hadoop fs -ls /log1显示。

运行后显示如下,此时列出了HDFS上/log目录下所有文件,及其文件的各种信息
在这里插入图片描述

6.通过cat命令查看HDFS文件内容

在这里插入图片描述

7.显示HDFS中指定的文件的读写权限、大小、路径等信息;(ls)

代码如下(示例):
1.在命令行输入hadoop fs -ls -h /dir/test.txt查看文件读写权限、大小、路径等信息

在这里插入图片描述

二.编程实现

1.因已上传test.txt文件到HDFS,所以代码运行结果为追加至文件末尾。

在这里插入图片描述
在终端使用命令行查看test.txt文件,发现相同的内容已经追加至文件末尾
在这里插入图片描述

2.因为HDFS根目录下已经存在test.txt文件,所以下载下来的文件会被重命名,重命名为test.txt_0。

在这里插入图片描述
在这里插入图片描述

3.读取HDFS上的test.txt文件,可以看见刚刚(1)中追加内容后的文件

在这里插入图片描述

4.读取HDFS根目录下的test.txt文件读写权限、大小、路径等信息

5.给定的目录为HDFS的根目录‘/’,该目录下只有test.txt文件,所以输出test.txt信息

在这里插入图片描述


总结

以上是今天要讲的内容,学到了HDFS操作。

文章来源:https://blog.csdn.net/weixin_59994613/article/details/135745267
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。