1.5 HDFS分布式文件系统

1.5.1 HDFS 简介

HDFS(全称:Hadoop Distribute File System,Hadoop 分布式文件系统)是 Hadoop 核心组成,是分布式存储服务

分布式文件系统横跨多台计算机,在大数据时代有着广泛的应用前景,它们为存储和处理超大规模数据提供所需的扩展能力。

HDFS是分布式文件系统中的一种。

1.5.2 HDFS的重要概念

HDFS 通过统一的命名空间目录树来定位文件;另外,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色(分布式本质是拆分,各司其职)

  • 典型的 Master/Slave 架构

    HDFS 的架构是典型的 Master/Slave 结构。

    HDFS集群往往是一个NameNode(HA架构会有两个NameNode,联邦机制)+ 多个DataNode组成。

    NameNode是集群的主节点,DataNode是集群的从节点。

  • 分块存储(block机制)

    HDFS中的文件在物理上是分块存储(block)的,块的大小可以通过配置参数来规定。

    Hadoop2.x版本中默认的block大小是128M。

  • 命名空间(NameSpace)

    HDFS支持传统的层次型文件组织结构。用户或者应用程序可以创建目录,然后将文件保存在这些目录里。文件系统名字空间的层次结构和大多数现有的文件系统类似:用户可以创建、删除、移动 或重命名文件。

    Namenode 负责维护文件系统的名字空间,任何对文件系统名字空间或属性的修改都将被 Namenode 记录下来。

    HDFS提供给客户单一个抽象目录树,访问形式:hdfs://namenode的hostname:port/test/input

    hdfs://linux121:9000/test/input

  • NameNode元数据管理

    我们把目录结构及文件分块位置信息叫做元数据。

    NameNode的元数据记录每一个文件所对应的block信息(block的id,以及所在的DataNode节点的信息)

  • DataNode数据存储

    文件的各个 block 的具体存储管理由 DataNode 节点承担。一个block会有多个DataNode来存储,DataNode会定时向NameNode来汇报自己持有的block信息。

  • 副本机制

    为了容错,文件的所有 block 都会有副本。每个文件的 block 大小和副本系数都是可配置的。应用程序可以指定某个文件的副本数目。副本系数可以在文件创建的时候指定,也可以在之后改变。 副本数量默认是3个。

  • 一次写入,多次读出

    HDFS是设计成适应一次写入,多次读出的场景,且不支持文件的随机修改。(支持追加写入, 不只支持随机更新)

    正因为如此,HDFS适合用来做大数据分析的底层存储服务,并不适合用来做网盘等应用(修改不方便,延迟大,网络开销大,成本太高)

1.5.3 HDFS架构

  • NameNode(nn):hdfs集群的管理者,Master

    • 维护管理hdfs的名称空间(NameSpace)

    • 维护副本策略

    • 记录文件块(Block)的映射信息

    • 负责处理客户端读写请求

  • DataNode:NameNode下达命令,DataNode执行实际操作,Slave节点。

    • 保存实际的数据块
    • 负责数据块的读写
  • Client:客户端

    • 上传文件到HDFS的时候,Client负责将文件切分成Block,然后进行上传
    • 请求NameNode交互,获取文件的位置信息
    • 读取或写入文件,与DataNode交互
    • Client可以使用一些命令来管理HDFS或者访问HDFS

最新文章

  1. Multivariance Linear Regression练习
  2. 如果重新设计网络,有没有可能合并IP地址跟MAC地址?
  3. debian8(jessie)安装小记
  4. eclipse:File->New没有Android Application Project的解决办法
  5. mac平台下面ruby环境搭建
  6. HDOJ 1863
  7. 仿照淘宝首页做的一个高度伪对齐demo
  8. BetWeen和模糊查询
  9. RequireJS入门(一)
  10. SSRS 请求并显示SharePoint人员和组字段
  11. gps数据转百度地图坐标
  12. SpringMVC——数据校验
  13. JavaScript实现隔行换颜色
  14. oracle 常用select sql语句
  15. nginx 将请求全部指向到一个页面
  16. C# 使用DES对字符串进行加密
  17. 模拟ios应用加载页面
  18. 2016年Godaddy最新域名转出教程
  19. Spark:java api读取hdfs目录下多个文件
  20. Liferay7 BPM门户开发之1:Liferay7开发环境准备

热门文章

  1. 论Elasticsearch数据建模的重要性
  2. 高光谱图像分类简述+《Deep Learning for Hyperspectral Image Classification: An Overview》综述论文笔记
  3. CSS基础-关于CSS注释的添加
  4. MySQL用户也可以是个角色
  5. 监控CPU状况并发送邮件shell脚本
  6. Resilience4J通过yml设置circuitBreaker
  7. 记一次 .NET 某医疗器械 程序崩溃分析
  8. 【React】学习笔记(二)——组件的生命周期、React脚手架使用
  9. Linux系统命令基础
  10. linux重置密码