HDFS操作

文章目录

  • 主要内容
      • 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操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K要努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值