【Hadoop】HDFS —— 大数据入门必须要了解的知识点


资料来源:拉勾大数据训练营【第二期】

什么是 HDFS ?

全称 Hadoop Distributed File System,中文翻译过来就是 分布式文件系统。那么,何为分布式文件系统呢?可以参考下图。
在这里插入图片描述
这是依靠我自己的理解画出的 HDFS 的架构。从图中可以看到 HDFS 本身的一些特性
首先分布式文件系统不是由一台服务器实现的,而是多台服务器。比如 node 01/ node 02/ node 03/ 三台服务器的空间都是 1T,那么 HDFS 的容量就有 3T。这一特性最大的意义就是扩容方便且成本低。
其次可以看出 HDFS 架构的主要角色副本机制分块存储机制
 

主要角色

角色作用
NameNode存储管理 HDFS 文件的元数据信息(比如文件名称、大小、位置等)
DataNode就是真正存储数据的地方
SecondaryNameNode帮助 NameNode 管理元数据信息

SecondaryNameNode 是如何帮助 NameNode 管理元数据信息的
在这里插入图片描述
首先,我们知道 NameNode 是用来存储 HDFS 的元数据信息,而元数据信息就存储在 fsimage文件 中,也即 NameNode 启动时对整个文件的快照。而除了 fsimage 文件外,每次 HDFS 进行的写操作都会由 NameNode 记录到 edit logs 文件中,但由于不断写入,edit logs 文件也会越来越来,NameNode 只有重新启动时才会将 edit logs 文件和 fsimage 文件合并到一起,而实际工作环境中 NameNode 一般是不会轻易重新启动的

所以 SecondaryNameNode 就是来解决上述问题的,它的主要目的就是为 NameNode 提供一个 checkpoint ,每当 edit logs 文件大小达到一个临界值(默认64MB)或者间隔达到一定时间(默认1小时)时,SecondaryNameNode 就会触发 checkpoint 操作,这时 NameNode 会产生一个新的 edit logs 文件(在 NameNode 元数据出现改动前,这是一个空文件),而 SecondaryNameNode 会将达到阈值的 edit logs 文件和原本的 fsimage 文件复制到本地,并将 fsimage 文件加载到内存中,与达到阈值的 edit logs 文件进行合并,形成一个新的 fsimage 文件,SecondaryNameNode 再将新生成的 fsimage 文件发送到 NameNode,等待下一次触发 Checkpoint 操作。

 

分块存储机制

真正要实现分布式系统,分块存储是关键之一。因为可以假想一种业务场景,我们拥有 100 台硬盘空间为 1T 的服务器,虽然HDFS 大小为 100T,但现在如果我要存储一个 2T 的文件,如果不进行分块,没有一台服务器是能单独存的下这个文件的,所以分块存储是必要的。
现在 HDFS 默认的每一个 block 块大小为 128M
 

副本机制

主要用来应对 block 块丢失时的情况,可以通过修改配置文件 hdfs-site.xml 配置副本数量

<property>
	<name>dfs.replication</name>
	<value>3</value>
</property>

读写文件流程

读取文件流程图

在这里插入图片描述

写入文件流程图

在这里插入图片描述


常用命令

基础命令使用

前缀命令说明
hadoop fs 或者 hdfs dfs-ls /dirName查看目录内容
-ls -R /dirName递归查看目录内容(将目录中的所有的内容都呈现出来)
-mkdir /dirName创建目录
-mkdir -p /dirName1/dirName2创建多级目录
-mv /FileName1 /FileName2重命名(目录也适用)
-mv /FilePath dst移动文件或目录
-put localSrc dst将本地内容复制到HDFS上
-cat URI查看HDFS文件内容
-cp URI dst将HDFS上的某个文件复制到HDFS指定文件
-rm URI删除HDFS上的指定文件
-rm -rf URI强制删除HDFS上的指定文件
-chmod mode URI修改HDFS上指定文件的权限
-chmod -R mode URI递归地修改HDFS上指定文件的权限
-chown owner:grouper URI修改HDFS上指定文件的所属用户和所属组
-chown owner:grouper URI递归地修改HDFS上指定文件的所属用户和所属组
-expunge清空回收站

 

高级命令使用

前缀命令说明
hdfs dfsadmin-setQuota [quota] [dirname]给该文件夹设置上传文件数量限制
(文件限额数包括用户文件夹本身,也就是限额两个只能上传一个文件)
-clrQuota [dirname]]清除文件数量限制
-setSpaceQuota [quota] [dirname]给该文件夹设置上传文件空间大小限制
-clrSpaceQuota [dirname]清除空间限额
-safemode手动启动安全模式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值