【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

相关推荐
xushichang123_7 小时前
如何观看 2026 亚马逊云科技中国峰会全场主题演讲与技术分论坛内容?
大数据·人工智能
招财小梗8 小时前
AI矩阵获客,品牌连锁落地有啥方案?
大数据·人工智能·矩阵
黎子越8 小时前
大模型基础名词概念
大数据
zandy10118 小时前
主流 AI Agent搜索Skill推荐及高阶选型指南
大数据·人工智能
跨境卫士苏苏8 小时前
2026年做跨境电商,TikTok美区半托管这3个品类正在严查,第2个很多新手还在铺货
大数据·人工智能·跨境电商·营销策略
GIS数据转换器8 小时前
村镇无人机物流配送与跨域监测一体化平台
大数据·运维·人工智能·科技·无人机
知识燃料9 小时前
企业技术决策者落地 AI Agent 体系,AWS 中国峰会有哪些战略与工程内容可看?
大数据·人工智能
TDengine (老段)9 小时前
TDengine 第三方工具 — Telegraf、Kafka Connect、Flink、Spark
大数据·数据库·物联网·flink·kafka·时序数据库·tdengine
guwentian17 小时前
Git Worktree 实战:用并行多 Agent 把开发提速 N 倍
大数据·git·elasticsearch·wroktree
赤土 炙焱20 小时前
hiveserver2启动失败,磁盘满了
hive·hadoop