【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

相关推荐
薇晶晶1 小时前
hadoop中了解yarm
hadoop
StarRocks_labs5 小时前
从InfluxDB到StarRocks:Grab实现Spark监控平台10倍性能提升
大数据·数据库·starrocks·分布式·spark·iris·物化视图
若兰幽竹6 小时前
【Spark分析HBase数据】Spark读取并分析HBase数据
大数据·spark·hbase
R²AIN SUITE6 小时前
金融合规革命:R²AIN SUITE 如何重塑银行业务智能
大数据·人工智能
绿算技术7 小时前
“强强联手,智启未来”凯创未来与绿算技术共筑高端智能家居及智能照明领域新生态
大数据·人工智能·智能家居
只因只因爆8 小时前
spark的缓存
大数据·缓存·spark
Leo.yuan9 小时前
3D 数据可视化系统是什么?具体应用在哪方面?
大数据·数据库·3d·信息可视化·数据分析
只因只因爆9 小时前
spark小任务
大数据·分布式·spark
cainiao08060510 小时前
Java 大视界——Java 大数据在智慧交通智能停车诱导系统中的数据融合与实时更新
java·大数据·开发语言
End92812 小时前
Spark之搭建Yarn模式
大数据·分布式·spark