【Hadoop】【hdfs】【大数据技术基础】实验二 熟悉常用的HDFS操作

实验二: 熟悉常用的HDFS操作

一、实验题目

熟悉常用的HDFS操作。

二、实验目的

(1) 理解HDFS在Hadoop体系结构中的角色;

(2) 熟练使用HDFS操作常用的Shell命令;

(3) 熟悉HDFS操作常用的Java API。

三、平台

操作系统:Linux

Hadoop版本:1.2.1或以上版本

JDK版本:1.6或以上版本

四、内容和要求

利用Hadoop提供的Shell命令完成下列任务:

首先,启动hadoop:

cd /usr/local/hadoop

./sbin/start-dfs.sh

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

假如指定了local.txt文件。而你的本地文件里不存在,则可以使用创建本地文件命令:

touch local.txt

然后将本地文件 local.txt 的内容追加到 HDFS 中的文件 text.txt:

./bin/hdfs dfs -appendToFile local.txt text.txt

  • ./bin/hdfs: 这是执行 HDFS 命令的路径。
  • dfs: 表示操作 HDFS。
  • -appendToFile: 这个选项表示要将一个文件的内容追加到另一个文件中。
  • local.txt: 是本地文件,包含你想要追加的内容。
  • text.txt: 是目标文件,即你希望将 local.txt 的内容追加到这个文件中。

如果 text.txt 不存在,该命令将会报错,因为 -appendToFile 只能用于已经存在的文件。

本文使用myLocalFile.txt文件。

把本地文件系统的"/home/hadoop/myLocalFile.txt"上传到HDFS中的当前用户目录的input目录下,也就是上传到HDFS的"/user/local/hadoop/input/"目录下。

向HDFS中上传任意文本文件:

hdfs dfs -put /home/hadoop/myLocalFile.txt input/

命令使用示例:

hdfs dfs -appendToFile local.txt text.txt:追加到原文件末尾,追加本地文件 local.txt 的内容到HDFS上已存在的文件 text.txt。

覆盖原来文件,第一种命令形式: hdfs dfs -copyFromLocal -f local.txt text.txt。本地文件 local.txt的内容覆盖到HDFS上已存在的文件text.txt

覆盖原来文件,第二种命令形式: hdfs dfs -cp -f file:///home/hadoop/local.txt text.txt。

1.追加到原文件末尾:

hdfs dfs -appendToFile /home/hadoop/myLocalFile.txt input/myLocalFile.txt

2.覆盖原来文件:

hdfs dfs -copyFromLocal -f /home/hadoop/myLocalFile.txt input/myLocalFile.txt

1和2你可以根据实际情况选择追加还是覆盖。

【说明】:这里是将本地的 myLocalFile.txt 文件复制到 HDFS 的 input 目录下,并且如果 input 目录中已经存在同名的 myLocalFile.txt 文件,将会被覆盖。

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

if hdfs dfs -test -e file:///home/hadoop/myLocalFile.txt; then

hdfs dfs -copyToLocal input/myLocalFile.txt ./text2.txt

else

hdfs dfs -copyToLocal input/myLocalFile.txt ./myLocalFile.txt

fi

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

hdfs dfs -cat input/myLocalFile.txt

(4)显示HDFS中指定的文件的读写权限、大小、创建时间、路径等信息;

hdfs dfs -ls -h input/myLocalFile.txt

(5)给定HDFS中某一个目录,输出该目录下的所有文件的读写权限、大小、创建时间、路径等信息,如果该文件是目录,则递归输出该目录下所有文件相关信息;

hdfs dfs -ls -R -h /user/hadoop

(6)提供一个HDFS内的文件的路径,对该文件进行创建和删除操作。如果文件所在目录不存在,则自动创建目录;

if $(hdfs dfs -test -d dir1/dir2);

then $(hdfs dfs -touchz dir1/dir2/filename);

else $(hdfs dfs -mkdir -p dir1/dir2 && hdfs dfs -touchz dir1/dir2/filename);

fi

hdfs dfs -rm dir1/dir2/filename #删除文件

(7)提供一个HDFS的目录的路径,对该目录进行创建和删除操作。创建目录时,如果目录文件所在目录不存在则自动创建相应目录;删除目录时,由用户指定当该目录不为空时是否还删除该目录;

创建目录的命令如下:

hdfs dfs -mkdir -p dir1/dir2

删除目录的命令如下:

hdfs dfs -rmdir dir1/dir2

上述删除命令执行以后,如果目录非空,则会提示 not empty,删除操作不会执行。如果要

强制删除目录,可以使用如下命令:

hdfs dfs -rm -R dir1/dir2

(8)向HDFS中指定的文件追加内容,由用户指定内容追加到原有文件的开头或结尾;

追加到原文件末尾:

hdfs dfs -appendToFile /home/hadoop/myLocalFile.txt input/myLocalFile.txt

追加到原文件的开头:

hdfs dfs -get input/myLocalFile.txt

cat myLocalFile.txt >> /home/hadoop/myLocalFile.txt

hdfs dfs -copyFromLocal -f /home/hadoop/myLocalFile.txt inpu/myLocalFile.txt

【说明】:在 HDFS 中不存在与这种操作对应的命令,因此,无法使用一条

命令来完成。可以先移动到本地进行操作,再进行上传覆盖。

【说明】:其中cat myLocalFile.txt >> /home/hadoop/myLocalFile.txt 这个命令尝试将myLocalFile.txt文件的内容追加到/home/hadoop/myLocalFile.txt文件的末尾。hdfs dfs -copyFromLocal -f命令将本地文件系统中的/home/hadoop/myLocalFile.txt文件强制复制到HDFS的input/myLocalFile.txt路径

(9)删除HDFS中指定的文件;

hdfs dfs -rm input/myLocalFile.txt

(10)删除HDFS中指定的目录,由用户指定目录中如果存在文件时是否删除目录;

删除目录(如果目录非空则会提示not empty,不执行删除):

hdfs dfs -rmdir dir1/dir2

强制删除目录:

hdfs dfs -rm -R dir1/dir2

(11)在HDFS中,将文件从源路径移动到目的路径。

hdfs dfs -mv text.txt text2.txt

相关推荐
DianSan_ERP11 小时前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库11 小时前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
AI周红伟11 小时前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体
B站计算机毕业设计超人12 小时前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法
计算机程序猿学长12 小时前
大数据毕业设计-基于django的音乐网站数据分析管理系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
大数据·django·课程设计
B站计算机毕业设计超人12 小时前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计
十月南城12 小时前
数据湖技术对比——Iceberg、Hudi、Delta的表格格式与维护策略
大数据·数据库·数据仓库·hive·hadoop·spark
中烟创新12 小时前
灯塔AI智能体获评“2025-2026中国数智科技年度十大创新力产品”
大数据·人工智能·科技
璞华Purvar13 小时前
2026智造升级|从配方到生产,从协同到合规——璞华易研PLM赋能制造企业全链路升级
大数据·人工智能
Gofarlic_oms113 小时前
避免Kisssoft高级分析模块过度采购的科学评估方法
大数据·linux·运维·人工智能·matlab