天天看点

大数据-HDFS基本介绍

1. HDFS

​HDFS(Hadoop Distributed File System)​ 是一个 Apache Software Foundation项目, 是 Apache Hadoop 项目的一个子项目. Hadoop 非常适于存储大型数据(比如 TB 和 PB), 其就是使用 HDFS 作为存储系统. HDFS使用多台计算机存储文件, 并且提供统一的访问接口,像是访问一个普通文件系统一样使用分布式文件系统. HDFS对数据文件的访问通过流的方式进行处理, 这意味着通过命令和 MapReduce程序的方式可以直接使用 HDFS. HDFS 是容错的,且提供对大数据集的高吞吐量访问.

HDFS 的一个非常重要的特点就是​一次写入、多次读取​,该模型降低了对并发控制的要求, 简化了数据聚合性, 支持高吞吐量访问.而吞吐量是大数据系统的一个非常重要的指标,吞吐量高意味着能处理的数据量就大.

1.1. 设计目标

  • 通过跨多个廉价计算机集群分布数据和处理来节约成本
  • 通过自动维护多个数据副本和在故障发生时来实现可靠性
  • 它们为存储和处理超大规模数据提供所需的扩展能力。

1.2. HDFS 的历史

  1. Doug Cutting 在做 Lucene 的时候, 需要编写一个爬虫服务,这个爬虫写的并不顺利, 遇到了一些问题, 诸如: 如何存储大规模的数据,如何保证集群的可伸缩性, 如何动态容错等
  2. 2013年的时候, Google 发布了三篇论文, 被称作为三驾马车,其中有一篇叫做 GFS, 是描述了 Google 内部的一个叫做 GFS的分布式大规模文件系统, 具有强大的可伸缩性和容错性
  3. Doug Cutting 后来根据 GFS 的论文, 创造了一个新的文件系统, 叫做 HDFS

1.3. HDFS 的架构

大数据-HDFS基本介绍
大数据-HDFS基本介绍
  1. NameNode 是一个中心服务器, 单一节点(简化系统的设计和实现),负责管理文件系统的名字空间(NameSpace)以及客户端对文件的访问
  2. 文件操作, NameNode 是负责文件元数据的操作, DataNode负责处理文件内容的读写请求, 跟文件内容相关的数据流不经过 NameNode,只询问它跟哪个 DataNode联系, 否则 NameNode 会成为系统的瓶颈
  3. 副本存放在哪些 DataNode 上由 NameNode 来控制,根据全局情况作出块放置决定, 读取文件时 NameNode尽量让用户先读取最近的副本, 降低读取网络开销和读取延时
  4. NameNode 全权管理数据库的复制, 它周期性的从集群中的每个 DataNode接收心跳信合和状态报告, 接收到心跳信号意味着 DataNode 节点工作正常,块状态报告包含了一个该 DataNode 上所有的数据列表
NameNode DataNode
存储元数据 存储文件内容
元数据保存在内存中 文件内容保存在磁盘

继续阅读