前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数据-HDFS基本介绍

大数据-HDFS基本介绍

作者头像
cwl_java
发布2019-12-25 11:30:38
3930
发布2019-12-25 11:30:38
举报
文章被收录于专栏:cwl_Javacwl_Java

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 的架构

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

NameNode

DataNode

存储元数据

存储文件内容

元数据保存在内存中

文件内容保存在磁盘

保存文件, block, DataNode 之间的关系

维护了 block id 到 DataNode 文件之间的关系

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. HDFS
    • 1.1. 设计目标
      • 1.2. HDFS 的历史
        • 1.3. HDFS 的架构
        相关产品与服务
        大数据
        全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档