前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HDFS架构和基本操作学习

HDFS架构和基本操作学习

作者头像
超哥的杂货铺
发布2019-12-18 11:00:04
5330
发布2019-12-18 11:00:04
举报

本节我们对HDFS进行深入的学习,包括理解其架构特点,学习一些基本的操作命令

HDFS是hadoop实现的一个分布式文件系统。(Hadoop Distributed File System)来源于Google的GFS论文。它的设计目标有:

  • 非常巨大的分布式文件系统。
  • 运行在普通廉价的硬件上,及一般的 PC机(相比于小型机,单片机而言的)。
  • 易扩展,为用户提供性能不错的文件存储服务。
HDFS的架构

HDFS架构示意图

1.HDFS采用了1个 Msater(NameNode) 和N个slaves(DataNode)的架构

一个HDFS集群包含一个NameNode,主要职责是管理文件系统的元数据信息,控制客户端对文件的访问。

一个HDFS集群包含多个DataNode,通常一个节点就是一个DataNode,负责相应节点上文件的存储。

NameNode的作用

  • 负责客户端请求的响应
  • 维护整个文件系统的目录树(例如记录文件的增删改查操作)和负责元数据(文件名称、副本系数,文件和block的映射,DataNode和block的映射等)的管理

DataNode的作用

  • 存储文件对应的数据块,存储数据是核心作用
  • 定期向NameNode发送心跳信息,汇报本身及其所有block信息和健康状况
  • 执行来自NameNode的指示,如block的创建,删除,复制,文件读写请求的支持等

典型的部署架构是1个NameNode + N个DataNode。

2.HDFS文件系统的命名空间和多副本机制

HDFS文件系统和现有的Linux文件系统类似,也具有目录的层级结构。同样可以进行文件和目录的创建删除移动重命名的操作。

一个文件会被拆分成多个Block,(默认的blocksize:128M)。这些Block会复制多份,存储在多个DataNode上。除了最后一个block,其他的块都是一样大小的,应用程序可以指定文件的副本系数。副本系数可以在文件创建之初指定,也可以之后再进行修改。下图是一个多副本存储的示例说明。

HDFS多副本存储机制

以part-1为例,它被分成三个block,block_id分别是2,4,5,且副本系数为3。可以看到在DataNode上,2,4,5都各存储在了三个节点上,这样当其中一个节点故障时,仍然能够保证文件的可用。block_id存在的必要性在于,在用户需要对文件进行操作时,相应的block能够按顺序进行“组合”起来。

HDFS Shell的操作

我们来使用命令操作HDFS,常用命令的含义和Linux shell差不多,格式是hadoop fs -[linux shell]。linux常见的命令可以点击蓝字看之前的文章:Linux/MacOs 下常用命令学习

1.ls

用法:

hadoop fs -ls directory,表示查看HDFS上directory目录下的文件信息

实战:

hadoop fs -ls / #表示查看HDFS上根目录下的文件信息,如果没有上传过文件到HDFS,则不会输出任何文件信息

HDFS的ls命令

2.put

用法:

hadoop fs -put file directory ,表示将本地的file文件上传到HDFS的directory目录中

实战:

#将本次的hello.txt上传到hdfs中根目录下并查看是否上传成功
hadoop fs -put hello.txt /#hello.txt是在当前本地目录下的一个已经创建好的文件
hadoop fs -ls / 

HDFS的put命令

3.cat

用法:

hadoop fs -cat filepath/file,表示查看hdfs上filepath下的file文件的内容。hadoop fs -text filepath/file也可以达到相同的效果。

实战:

hadoop fs -cat /hello.txt#查看HDFS上根目录下hello.txt的文件内容

HDFS的cat命令

4.mkdir

用法:

hadoop fs -mkdir directory,表示在hdfs上创建directory目录。

hadoop fs -mkdir -p directory1/directory2,表示在hdfs上递归创建directory1/directory2目录。

实战:

hadoop fs -mkdir /test #表示在hdfs上根目录下创建test目录
hadoop fs -ls /

HDFS的mkdir命令

hadoop fs -ls /test
hadoop fs -mkdir -p /test/a/b #在hdfs上test目录下递归创建a目录/b目录。-p表示递归创建
hadoop fs -ls /test
hadoop fs -ls /test/a

HDFS的mkdir -p 命令

hadoop fs -ls -R /#递归展示hdfs根目录下的内容

HDFS的ls -R命令

5.copyFromLocal

用法:

hadoop fs -copyFromLocal file1 filepath/file2 表示将本地的file文件copy到HDFS的filepath中并命名为file2

实战:

hadoop fs -copyFromLocal hello.txt /test/a/b/h.txt#将本地hello.txt copy为HDFS上目录/test/a/b/下的h.txt文件
hadoop fs -ls -R

HDFS的copyFromLocal命令

hadoop fs -text /test/a/b/h.txt#也可以用-cat代替

HDFS的text命令

6.get

用法:

hadoop fs -get filepath/file1表示将HDFS上filepath下的file1复制到本地并命名为file2

实战:

hadoop fs -get /test/a/b/h.txt

HDFS的get命令

7.rm

用法:

hadoop fs -rm filepath/file表示将HDFS上filepath下的file文件删除

hadoop fs -rm -R directory表示将HDFS上directory目录删除

实战:

hadoop fs -rm /hello.txt#删除hdfs根目录下的hello.txt
hadoop fs -ls -R /
hadoop fs -rm -R /test#删除hdfs根目录下的test目录
hadoop fs -ls -R /

HDFS的rm命令

tips:使用hadoop fs 回车可以查看命令的帮助信息,遇到不会的可以随时查询。

通过浏览器直观查看HDFS文件

在环境搭建那一节中,我们通过浏览器验证了HDFS搭建成功。其实在浏览器中我们也可以看到HDFS中有哪些具体的文件。上一部分我们把HDFS上的内容删光了,因此我们先在HDFS上创建几个目录和文件。

hadoop fs -put hello.txt /
hadoop fs -mkdir /dir1
hadoop fs -put ../software/hadoop-2.6.0-cdh5.7.0.tar.gz /
hadoop fs -ls /

使用命令查看HDFS的文件

通过浏览器查看HDFS的文件

访问http://localhost:50070可以验证HDFS是否启动成功,点击Browse the file system可以看到我们上传的两个文件和一个文件夹。点击文件名称可以看到Block信息。可以看到,block size是128M,因此一个297M的文件被分割成了3个block。

总结

本文我们学习了HDFS的架构和HDFS的命令操作。

架构方面,HDFS采用的是1个NameNode+N个DataNode的方式,各司其职,共同实现了分布式的文件系统,具有容易扩展的优点。通过对文件拆分成多Block并进行多副本存储的形式,保证了负载均衡和可靠性,同时便于进行并行处理,提高了计算效率。

HDFS操作方面,hadoop fs 后面跟常用的linux命令即可实现对HDFS的操作,很容易理解。如果遇到困难,可以直接敲hadoop fs 回车查看帮助信息。

本文完。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 超哥的杂货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HDFS的架构
  • HDFS Shell的操作
  • 通过浏览器直观查看HDFS文件
  • 总结
相关产品与服务
云 HDFS
云 HDFS(Cloud HDFS,CHDFS)为您提供标准 HDFS 访问协议,您无需更改现有代码,即可使用高可用、高可靠、多维度安全、分层命名空间的分布式文件系统。 只需几分钟,您就可以在云端创建和挂载 CHDFS,来实现您大数据存储需求。随着业务需求的变化,您可以实时扩展或缩减存储资源,CHDFS 存储空间无上限,满足您海量大数据存储与分析业务需求。此外,通过 CHDFS,您可以实现计算与存储分离,极大发挥计算资源灵活性,同时实现存储数据永久保存,降低您大数据分析资源成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档