任务描述

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

相关知识

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

HDFS的设计

分布式文件系统

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

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

客户:1T

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

一个月后...

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

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

客户:1024T

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

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

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

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

NameNode与DataNode

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

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

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

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

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

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

客户:听不懂,说人话!

程序猿:额,我们现在将咱们的大数据机房设想成一个大仓库,仓库很大,有一本账单记录着仓库所有货架的商品,每一个货架上都放了很多货物,不过这些货物有一个特点,即大小都一致,并且货架也有一个本货架的清单,记录着本货架的商品,每当货架中的货物有变动,这个清单也会一起变,并且还会记录在主清单中。
在这里,namenode就类似仓库的主账单(保存了所有货物的记录),datanode就像是货架的清单(保存了本货架的物品记录),每个货架上的每一个货物就是数据块,数据块的大小是固定的(默认是128M)。

HDFS的常用命令

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

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

新建目录:

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

本地创建目录:

hadoop创建目录:

上传文件至dfs:

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

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

查看上传到HDFS的文件:

移动与删除

列出HDFS中的目录和文件:

helloworld.txt移动到根目录;

删除helloworld.txt

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

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

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

选项名称 使用格式 含义
-ls -ls <路径> 查看指定路径的当前目录结构
  1. |-lsr |-lsr <路径> | 递归查看指定路径的目录结构|
  2. |-du |-du <路径> | 统计目录下个文件大小|
  3. |-dus |-dus <路径> | 汇总统计目录下文件(夹)大小|
  4. |-count| -count [-q] <路径> | 统计文件(夹)数量|
  5. |-mv |-mv <源路径> <目的路径> | 移动|
  6. |-cp |-cp <源路径> <目的路径> | 复制|
  7. |-rm |-rm [-skipTrash] <路径> | 删除文件/空白文件夹|
  8. |-rmr |-rmr [-skipTrash] <路径> | 递归删除|
  9. |-put |-put <多个 linux 上的文件> <hdfs 路径> | 上传文件
  10. |-copyFromLocal| -copyFromLocal <多个 linux 上的文件><hdfs 路径> | 从本地复制|
  11. |-moveFromLocal |-moveFromLocal <多个 linux 上的文件><hdfs 路径> | 从本地移动|
  12. |-getmerge |-getmerge <源路径> <linux 路径> | 合并到本地|
  13. |-cat |-cat <hdfs 路径> | 查看文件内容|
  14. |-text |-text <hdfs 路径> | 查看文件内容|
  15. |-copyToLocal |-copyToLocal [-ignoreCrc] [-crc] [hdfs 源路径] [linux 目的路径] | 从HDFS复制到本地|
  16. |-moveToLocal |-moveToLocal [-crc] <hdfs 源路径> <linux目的路径> | 从HDFS移动到本地|
  17. |-mkdir |-mkdir <hdfs 路径> | 创建空白文件夹|
  18. |-setrep | -setrep [-R] [-w] <副本数> <路径> | 修改副本数量|
  19. |-touchz | -touchz <文件路径> | 创建空白文件|

编程要求

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

  • HDFS中创建/usr/output/文件夹;
  • 在本地创建hello.txt文件并添加内容:“HDFS的块比磁盘的块大,其目的是为了最小化寻址开销。”;
  • hello.txt上传至HDFS/usr/output/目录下;
  • 删除HDFS/user/hadoop目录;
  • Hadoop上的文件hello.txtHDFS复制到本地/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的块比磁盘的块大,其目的是为了最小化寻址开销。


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

第1关:HDFS的基本操作相关推荐

  1. 头歌实验 HDFS的基本操作和Java API 操作

    第1关:HDFS的基本操作 命令行 //一行一步 start-dfs.sh hadoop fs -mkdir -p /usr/output mkdir -p /develop/input cd /de ...

  2. HDFS Shell基本操作总结

    本文转自http://www.mc2lab.com/?p=444,所有权利归原作者所有. 1.HDFS Shell基本操作总结 1.1 浏览你的HDFS目录 [root@slave1 bin]# ha ...

  3. 第5关 字符串的基本操作

    需求=过去困惑+当下渴望+未来希望 --实干<实干日记> 第5关 字符串的基本操作 5-1 为什么len函数获取中文字符串长度有问题? 5-2 什么是转义符? 5-3 子串查询.子串统计. ...

  4. python/educoder 第1关:字符串基本操作

    本关任务的目的是了解字符类型的特点,熟悉字符串的一些基本操作,包括赋值.拼接.重复.长度.索引.查找.替换.反转等常用操作.字符串最常见的一种基本数据类型.字符串是许多单个子串组成的序列,其主要是用来 ...

  5. python educoder 第3关:列表基本操作

    本关任务的目的是了解列表类型的基本特点,它的可变性使得它具有一些和字符串与元组不同的操作,如列表元素的添加删除,排序等.列表可以把大量的数据放在一起,可以对其进行集中处理.列表是以方括号"[ ...

  6. shell 进入hadoop_Hadoop关于HDFS的基本操作(Shell命令)

    在这里我给大家继续分享一些关于hdfs分布式文件的经验哈,其中包括一些hdfs的基本的shell命令的操作,再加上hdfs java程序设计.在前面我已经写了关于如何去搭建hadoop这样一个大数据平 ...

  7. 头歌大数据技术第二关 大数据从入门到实战 - 第2章 分布式文件系统HDFS

    第1关 HDFS的基本操作 pwd 回车 cd / 回车 mkdir /develop 回车 mkdir /develop/input 回车 mkdir /develop/output 回车 star ...

  8. Educoder 分布式文件系统HDFS 实验总结 答案

    目录 一.HDFS的基本操作 1.HDFS的设计 2.HDFS的常用命令 二.HDFS-JAVA接口之读取文件 1.FileSystem对象 三.HDFS-JAVA接口之上传文件 四.HDFS-JAV ...

  9. 头歌 分布式文件系统HDFS 答案

    第1关:HDFS的基本操作 在右侧命令行中启动Hadoop,进行如下操作. 在HDFS中创建/usr/output/文件夹: 在本地创建hello.txt文件并添加内容:"HDFS的块比磁盘 ...

最新文章

  1. Asp.net Mvc问题索引
  2. 【MySql】8.多对多关系表
  3. DICKSON隆重推荐的博客 --- SAP
  4. 移动机器人传感器---IMU
  5. TCP、UDP以及HTTP的简单讲解
  6. 提供openssl -aes-256-cbc兼容加密/解密的简单python函数
  7. swiper轮播图插件
  8. 【数据结构与算法】之深入解析“删除链表的倒数第N个结点”的求解思路与算法示例
  9. git学习(8):windows系统下VI编辑器的基本使用
  10. Seesaw Loss:一种面向长尾目标检测的平衡损失函数
  11. 云图说|OLAP开源引擎的一匹黑马,MRS集群组件之ClickHouse
  12. 相邀直播app最新入驻58位海外阿姨
  13. codesys编程_CODESYS楼宇自动化应用案例:化学系教学楼智能排气系统
  14. 安卓使用MediaPlayer播放RTSP无画面的解决办法
  15. PMcaff-干货| 哪些 iOS 应用让你很满意并能提高生活质量?
  16. 飞桨领航团西安回顾|技术干货大厂offer独家经验分享
  17. HBO解密:他们为什么要开发VR版《西部世界》
  18. 调整DOSBox的窗口大小:跨过三连坑
  19. 云服务器上安装 R语言 以及 RStudio Server 详细图文操作(全)
  20. bt5使用教程----渗透方面

热门文章

  1. 大于2T硬盘通过UEFI启动+GPT分区表安装Server 2008 R2
  2. Bootstrap Table列宽拖动的方法
  3. CentOS 7 安装MongoDB 4.0
  4. Django 之 modelForm (edit.html页面的编写)
  5. MySQL修改,表结构大幅修改
  6. BNU44583——Star Trek: First Contact——————【01背包】
  7. 分布式缓存Memcached---开篇的话
  8. CentOS 6下安装nodejs 0.9.0
  9. POJ 2847 Widget Factory
  10. 测试方案和测试计划的区别