【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

相关推荐
大叔_爱编程42 分钟前
基于Python的交通数据分析应用-hadoop+django
hadoop·python·django·毕业设计·源码·课程设计·交通数据分析
九河云1 小时前
在云计算环境中实施有效的数据安全策略
大数据·网络·数据库·云计算
Brianna Home2 小时前
从“码农”到“导演”:AI结对编程如何重塑软件工程范式
大数据·人工智能·深度学习·自然语言处理·chatgpt
云飞云共享云桌面2 小时前
SolidWorks服务器多人使用方案
大数据·运维·服务器·前端·网络·电脑·制造
码上地球2 小时前
大数据成矿预测系列(四) | 成矿预测的“主力军”:随机森林与支持向量机深度解析
大数据·随机森林·支持向量机
D明明就是我2 小时前
Hive 知识点梳理
数据仓库·hive·hadoop
电商软件开发 小银3 小时前
八年磨一剑:中品维度如何用“分布式电商”为商家打开增长新通路?
大数据·软件开发·私域运营·实体店转型·中品维度·数字化经济·商业模式设计
武汉唯众智创4 小时前
产教融合背景下,高职大数据技术专业“课证融通”课程解决方案
大数据·课证赛创·课证融通·大数据专业·大数据技术专业·高职大数据技术专业
小小王app小程序开发6 小时前
任务悬赏小程序深度细分分析:非技术视角下的运营逻辑拆解
大数据·小程序
非极限码农10 小时前
Neo4j图数据库上手指南
大数据·数据库·数据分析·neo4j