HDFS 原理与应用 | 青训营笔记

75 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第7天

分布式文件系统典型代表HDFS

在Hadoop中,HDFS是存储层,YARN是调度层,MapReduce是应用层

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

分布式文件系统有大容量、高可靠和低成本的特点。其中Client端通过协议访问层与Server端通讯 HDFS的开源框架Hadoop的一个组件,负责分布式文件的存储管理,全称是Hadoop Distributed File System. 其具有如下特点:

  • 分布式:受GFS启发,可以统一管理分布在不同机器上的数据
  • 高吞吐:Client直接从DataNode读取数据,服务端支持海量Client并发读写
  • 容错:能自动处理各种错误情况,如网络错误,服务器宕机
  • 高可用:一主多备实现元数据高可用,数据多副本实现用户数据高可用
  • 可扩展:DataNode节点可扩展,且支持联邦集群模式,DataNode数量可达10万级别
  • 廉价:服务器存储数据只需要廉价的集群即可,对服务器性能没有过高要求

HDFS架构原理详解

组件:Client/SDK <-> NameNode(Active/Standby) <-> DataNode

  • Client:主要用于接收用户请求,并与NameNode,DataNode交互完成用户请求
  • NameNode:用于存储元数据(描述数据的数据),对外提供元数据和数据服务;细分功能为:维护目录树、维护文件和数据块的关系、维护文件快存储节点信息、分配新文件存放节点
  • DataNode:用于实际存储数据。细分功能为:数据块存取,心跳汇报,副本复制

HDFS关键设计

  • 容错能力:能够处理绝大部分异常场景,例如服务器宕机、网络异常、磁盘故障、网络超时等
  • 一致性模型:为了实现容错,数据必须多副本存放,一致性要解决的问题时如何保障这不同机器多个副本的内容都是一致的
  • 可扩展性:分布式存储系统需要具备横向扩张scale-out的能力,容量不够,可以通过加节点做一些扩展等
  • 节点体系:常见的有主从模式、对等模式等,不管哪种模式,高可用是必须的功能
  • 数据防止:系统是由多个节点组成,数据是多个副本存放时,需要考虑数据存放的策略
  • 单机存储引擎:在绝大部分存储系统中,数据都是需要落盘持久化,单机引擎需要解决的时根据兄特点,如何高效的存取硬盘数据

应用场景

ETL(数据清洗):Extract,Transform,Load
机器学习:TensorFlow支持HDFS,Pytorch通过Alluxio访问DHFS或修改源码
可以使用HDFS通用存储有:对象存储、消息队列、冷数据层、海量日志、备份数据
YHX`HQRH0TMBYL)~1KQ2MA8.png