第1关:HDFS的基本操作

简介: 第1关:HDFS的基本操作

任务描述


本关任务:使用Hadoop命令来操作分布式文件系统。


相关知识


为了完成本关任务你需要了解的知识有:1.HDFS的设计,2.HDFS常用命令。


HDFS的设计


分布式文件系统


客户:帮我保存一下这几天的数据。


程序猿:好嘞,有多大呢?


客户:1T。


程序猿:好没问题,买个硬盘就搞定了。


一个月后...


客户:帮我保存下这几个月的数据。


程序猿:好嘞,这次有多大呢?


客户:1024T。


程序猿:哇,这么大吗?没有这么大的硬盘买呀,而且好像也没听过一台计算机可以存放1024T的数据。


程序猿:哦,对了我可以部署1024台机器,然后将他们连接起来,让他们的数据可以共享,这不就可以了吗?hh,机智如我。


当数据集的大小超过一台独立的物理计算机的存储能力时,就有必要对它进行分区并存储到若干台单独的计算机上,管理网络中跨多台计算机存储的文件系统称为分布式文件系统(Distributed FileSystem)。


Hadoop自带一个称为HDFS的分布式文件系统,即HDFS(Hadoop Distributed FileSystem)。有时也称之为DFS,他们是一回事儿。


NameNode与DataNode


HDFS的构建思路是这样的:一次写入,多次读取,不可修改,这也是最高效的访问模式。


客户:你把1024台机器都组成了分布式文件系统,我要查数据,下载数据该怎么做呢?


程序猿:我准备了一套专门管理这些数据的工具,叫做namenode,您要查数据直接访问它就可以啦。


HDFS有两类节点用来管理集群的数据,即一个namenode(管理节点)和多个datanode(工作节点)。namenode管理文件系统的命名空间,它维护着系统数及整棵树内所有的文件和目录,这些信息以两个形式永久保存在本地磁盘上:命名空间镜像文件和编辑日志文件,namenode也记录着每个文件中各个块所在的数据节点信息,但它并不永久保存块的位置信息,因为这些信息会在系统启动时根据节点信息重建。


客户端(client)代表用户通过与namenode和datanode交互来访问整个系统。客户端提供一个类似POSIX(可移植操作系统界面)的文件系统结构,因此用户编程时无需知道namenode和datanode也可以实现功能。


datanode是文件系统的工作节点,他们根据需要存储并检索数据块(blocks),并且定期向namenode发送他们所存储的数据块的列表。


d632ba7e7d4fe5675cff8777d4764221.jpg


客户:听不懂,说人话!


程序猿:额,我们现在将咱们的大数据机房设想成一个大仓库,仓库很大,有一本账单记录着仓库所有货架的商品,每一个货架上都放了很多货物,不过这些货物有一个特点,即大小都一致,并且货架也有一个本货架的清单,记录着本货架的商品,每当货架中的货物有变动,这个清单也会一起变,并且还会记录在主清单中。

在这里,namenode就类似仓库的主账单(保存了所有货物的记录),datanode就像是货架的清单(保存了本货架的物品记录),每个货架上的每一个货物就是数据块,数据块的大小是固定的(默认是128M)。


HDFS的常用命令


459a63b0a55dece870311b88f2b9d605.png


接下来我们来了解一下一些常用的文件系统操作,例如:读取文件,新建目录,移动文件,删除数据,列出目录,等等。你可以在命令行中输入hadoop fs -help 命令读取每个命令的详细帮助文件。


现在请跟着我一起,在Linux环境下对Hadoop进行文件系统操作,来体验一下Hadoop的使用。


新建目录:


在本地和hadoop中分别创建文件夹:


本地创建目录:


66f2d935df6a8cfa2133e35a0821937c.png


hadoop创建目录:


c230232621a6196134fdac1be00c2ee1.png


上传文件至dfs:


切换到本地input目录下,创建文件并添加数据:hello hadoop。


ba70787a7897a220276f047f2714c301.png


将该文件上传至hadoop:使用hadoop fs -put <要上传的文件>  命令。


ac723b42836ddc1660c36e243fafba26.png


查看上传到HDFS的文件:


dc305503c1e2159f6e9de10126446630.png


移动与删除


列出HDFS中的目录和文件:


fe67f49ed049275e444f8c7dcaec0cda.png


将helloworld.txt移动到根目录;


37d679d56e73ddb17bd8ac1f1d3d13f4.png


删除helloworld.txt;


8ba8c933367172105b7811d5737ff132.png


hadoop fs -rm 命令只能删除文件或者空文件夹,如果要用这个命令去删除非空文件夹就会非常麻烦。


和Linux中递归删除一致,我们在-rm之后加入一个-r即可,用-rmr也可。


下表列出了Hadoop常用的shell命令,在之后使用的时候可以作为参考。


选项名称 使用格式 含义
-ls -ls <路径> 查看指定路径的当前目录结构



|-lsr |-lsr <路径> | 递归查看指定路径的目录结构|
|-du |-du <路径> | 统计目录下个文件大小|
|-dus |-dus <路径> | 汇总统计目录下文件(夹)大小|
|-count| -count [-q] <路径> | 统计文件(夹)数量|
|-mv |-mv <源路径> <目的路径> | 移动|
|-cp |-cp <源路径> <目的路径> | 复制|
|-rm |-rm [-skipTrash] <路径> | 删除文件/空白文件夹|
|-rmr |-rmr [-skipTrash] <路径> | 递归删除|
|-put |-put <多个 linux 上的文件>  | 上传文件
|-copyFromLocal| -copyFromLocal <多个 linux 上的文件> | 从本地复制|
|-moveFromLocal |-moveFromLocal <多个 linux 上的文件> | 从本地移动|
|-getmerge |-getmerge <源路径>  | 合并到本地|
|-cat |-cat  | 查看文件内容|
|-text |-text  | 查看文件内容|
|-copyToLocal |-copyToLocal [-ignoreCrc] [-crc] [hdfs 源路径] [linux 目的路径] | 从HDFS复制到本地|
|-moveToLocal |-moveToLocal [-crc]   | 从HDFS移动到本地|
|-mkdir |-mkdir  | 创建空白文件夹|
|-setrep | -setrep [-R] [-w] <副本数> <路径> | 修改副本数量|
|-touchz | -touchz <文件路径> | 创建空白文件|


编程要求


在右侧命令行中启动Hadoop,进行如下操作。


在HDFS中创建/usr/output/文件夹;

在本地创建hello.txt文件并添加内容:“HDFS的块比磁盘的块大,其目的是为了最小化寻址开销。”;

将hello.txt上传至HDFS的/usr/output/目录下;

删除HDFS的/user/hadoop目录;

将Hadoop上的文件hello.txt从HDFS复制到本地/usr/local目录。


hadoop fs -mkdir /usr
hadoop fs -mkdir /usr/output
touch hello.txt
vim hello.txt
hadoop fs -put hello.txt /usr/output
hadoop fs -rmr /user/hadoop
hadoop fs -copyToLocal /usr/output/hello.txt /usr/local


测试说明


平台会查看你本地的文件和HDFS的文件是否存在,如果存在,则会将其内容输出到控制台。

预期输出:

HDFS的块比磁盘的块大,其目的是为了最小化寻址开销。

HDFS的块比磁盘的块大,其目的是为了最小化寻址开销。


开始你的任务吧,祝你成功!


目录
相关文章
|
9月前
|
存储 机器学习/深度学习 分布式计算
Hadoop HDFS特性和基本操作(hadoop离线-03)
Hadoop HDFS特性和基本操作(hadoop离线-03)
292 1
|
10月前
|
存储 分布式计算 Hadoop
云计算与大数据实验三 HDFS的基本操作(下)
云计算与大数据实验三 HDFS的基本操作(下)
167 0
|
10月前
|
分布式计算 Hadoop 大数据
云计算与大数据实验三 HDFS的基本操作(上)
云计算与大数据实验三 HDFS的基本操作
114 0
|
分布式计算 安全 Hadoop
Hadoop原理与技术——hdfs命令行基本操作
Hadoop原理与技术——hdfs命令行基本操作
174 0
Hadoop原理与技术——hdfs命令行基本操作
|
存储 分布式计算 Hadoop
hadoop安装使用的命令+linux基本操作命令+HDFS常用命令
一、Hadoop基本安装主要包括以下6个步骤: 1.创建Hadoop用户。 2.更新apt和安装Vim编辑器。 3.安装SSH和配置SSH无密码登录。 4.安装Java环境。 5.安装单机Hadoop。 6.HDFS:启动
395 0
|
存储 分布式计算 网络协议
【小白视角】大数据基础实践(三)HDFS的简单基本操作
HDFS的简单基本操作 1. 实验环境 2. HDFS 2.1 简介 2.2 体系结构 2.2.1 NameNode 2.2.2 SecondaryNameNode 2.2.3 DataNode 2.2.4 通讯协议 2.2.5 局限性 3. 利用Shell命令HDFS进行交互 3.1 概要 3.2 目录操作 3.3 文件操作 4. 利用web界面管理HDFS 5. 使用JavaApi进行管理HDFS 5.1 导包并测试 5.2 题目 第一题 第二题 第三题 6. 在集群上运行 7. 结语 最后
262 0
【小白视角】大数据基础实践(三)HDFS的简单基本操作
|
API Windows Linux
|
5月前
|
存储 分布式计算 Hadoop
Hadoop系列HDFS详解
Hadoop系列HDFS详解
42 0
|
5月前
|
分布式计算 Java 大数据
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
242 0