分布式文件系统HDFS

本文深入介绍了Hadoop分布式文件系统(HDFS)的架构,包括NameNode和DataNode的角色,以及客户端如何与它们交互进行文件读写。HDFS采用主从结构,提供数据冗余备份和跨机架副本策略确保高可靠性。此外,还列举了常用HDFS命令,便于日常操作。
摘要由CSDN通过智能技术生成

1.HDFS是什么?

HDFS(Hadoop Distributed File System )Hadoop 分布式文件系统

2.HDFS 组件角色

2.1 NameNode(简称 NN)
  HDFS 元数据管理者,管理 NameSpace(文件系统命名空间),记录文件是如何分割成数据块以
及他们分别存储在集群中的哪些数据节点上。
NameSpace 或其本身属性的任何更改都由 NameNode 记录,维护整个文件系统的文件和目录。
2.2 DataNode(简称 DN)
  DataNode 是文件系统的工作节点。根据客户端或者 NameNode 发送的管理指令,负责 HDFS
的数据块的读写和检索操作。
  通过心跳机制定期向 NameNode 发送他们的存储块的列表。
2.3 Client
  客户端 Client 代表用户与 NameNode 或者 DataNode 交互来访问整个文件系统的对象。
  开发人员面向 Client API 来编程实现,对 NameNode、DataNode 来说透明无感。

3.HDFS 架构设计

HDFS 是一个主从式(Master/Slave)的体系结构。HDFS 集群中有一个 NameNode 和一些 DataNodes,
NameNode 管理文件的元数据,DataNode 存储实际的数据。从用户的角度看,就像操作传统的文件系
统一样,可以通过目录路径对文件执行创建、读取、删除操作。客户端联系 NameNode 来获取元数据
信息,而真正的文件 I/O 是直接和 DataNode 进行交互的。
读文件流程详细步骤:
第一步:Client 向 NameNode 发送数据请求后,寻找数据对应的数据块的位置信息。
第二步:NameNode 返回文件对应的数据块元数据信息,如所属机器、数据块的 block_id、数据
块的先后顺序等。
第三步:由 Client 与 DataNode 直接通信,读取各个 block 数据块的信息。过程为并行读取,
由客户端合并数据。
写文件流程详细步骤:
第一步:
Client 向 NameNode 发送写数据请求后,寻找可以写入的数据块 block 信息的机器位置。
若文件过大,写入可能会分成很多 block 数据块,实际上是通过一个 block 一个 block
的申请。
若副本为 3,则每次请求后返回一个 block 的对应的 3 个副本的 block 的存放位置。
  第二步:
Client 获取到对应的 block 数据块所处的 DataNode 节点位置后,Client 开始写操作。
Client 先写入第一个 DataNode,以数据包 package 的方式逐个发送和接收。如 64K 大小
的 package 包大小来发送和接收。
存在多个副本时,package 包的写入是依次进行的。写入到第一个 DataNode 后,第一个
向第二个 DataNode 传输。第二个写完后,由第二个向第三个 DataNode 传输 package。
以此类推。
写完一个 block 数据块后,如果还有则反复进行第一步和第二步。
第三步:
待所有的数据块 block 均写完后,Client 接收到全部写完的 ack 答复,告诉 NameNode
数据已写完,Client 关闭 socket 流。
DataNode 也会向 NameNode 报告新增 block 数据块的信息。

4.HDFS 高可靠性措施

1 、冗余备份
数据存储在这些 HDFS 中的节点上,为了防止因为某个节点宕机而导致数据丢失,HDFS 对数据进
行冗余备份,至于具体冗余多少个副本,在 dfs.replication 中配置。
2 、跨机架副本存放
仅仅对数据进行冗余备份还不够,假设所有的备份都在一个节点上,那么该节点宕机后,数据一
样会丢失,因此 HDFS 要有一个好的副本存放策略,该策略还在开发中。目前使用的是,以
dfs.replication=3 为例,在同一机架的两个节点上各备份一个副本,然后在另一个机架的某个节点
上再放一个副本。前者防止该机架的某个节点宕机,后者防止某个机架宕机。
3 、心跳检测
DataNode 节点定时向 NameNode 节点发送心跳包,以确保 DataNode 没有宕机。如果宕机,会采
取相应措施,比如数据副本的备份。
4 、数据完整性检测
NameNode 在创建 HDFS 文件时,会计算每个数据的校验和并储存起来。当客户端从 DataNode 获
取数据时,他会将获取的数据的校验和与之前储存的校验和进行对比。
5 、安全模式
HDFS 启动时,会进入安全模式,此时不允许写操作。这时,NameNode 会收到所有 DataNode 节点
的数据块报告,在确认安全之后,系统自动退出安全模式。
6 、核心文件备份
HDFS 的核心文件是映像文件和事务日志,如果这些文件损坏,将会导致 HDFS 不可用。系统支持
对这两个文件的备份,以确保 NameNode 宕机后的恢复。
7 、空间回收
从 HDFS 中删除的文件会首先被放入到/trash 中,/trash 文件夹中的内容是被删除文件最后的副本,该文件夹会被定时清空。该文件夹中不存在的文件就彻底不存在了。

5hdfs dfs 常用命令

查看 hdfs 根目录下的文件列表:
hdfs dfs -ls /
查看 hdfs 的某个文本文件:
hdfs dfs -cat /tmp/index.html
在 hdfs 中创建/tmp/tianliangedu 目录:
hdfs dfs – mkdir /tmp/tianliangedu
删除/tmp/tianliangedu 目录:
hdfs dfs -rmr /tmp/tianliangedu
将 hdfs 中的/tmp/index.html 文件下载到本地文件的当前路径下:
hdfs dfs -copyToLocal /tmp/index.html .
从本地当前目录下,上传之前的 index.html 文件到 hdfs 的/tmp/tianliangedu 目录中:
hdfs dfs -copyFromLocal index.html /tmp/tianliangedu
查看压缩文本文件的格式:
hdfs dfs -text /tmp/tianliangedu/index.html.gz | more
查看 hdfs 中目录/tmp/tianliangedu 中文件占用磁盘大小:
hdfs dfs -du -h /tmp/tianliangedu
在/tmp/tianliangedu 目录中创建空文件 HelloWorld.txt:
hdfs dfs -touchz /tmp/tianliangedu/HelloWorld.txt
查看 hdfs dfs 中某个命令的用法,比如:cp:
hdfs dfs -usage cp

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值