Distribution File System DFS

以HDFS为例,介绍分布式文件系统。

文件系统

文件系统的功能

  • 文件的按名存取(基本功能)
  • 文件目录的建立和维护(用于实现上述基本功能)
  • 实现逻辑文件到物理文件的转换(核心内容)
  • 文件存储空间的分配和管理
  • 数据保密、保护和共享
  • 提供一组用户使用的操作

文件

  • 文件是由文件名字标识的一组信息的集合
  • 各操作系统的文件命名规则略有不同
  • 实现按名存取的文件系统的优点
    • 将用户从复杂的物理存储地址管理中解放出来
    • 可方便地对文件提供各种安全、保密和保护措施
    • 实现文件的共享(同名共享、异名共享)
  • 如何实现“按名存取”?
    • 当用户要求存取某个文件时,系统查找目录文件,获得对应的文件目录
    • 在文件目录中,根据用户给定的文件名寻找到对应该文件的文件控制块(文件目录项
    • 通过文件控制块所记录的该文件的相关信息(如文件信息存放的相对位置或文件信息首块的物理位置)依次存取该文件的内容。

文件目录

  • 概念
    • 文件目录:建立和维护的关于系统的所有文件的清单
    • 文件控制块:每个目录项对应一个文件的信息描述
    • 目录文件:目录信息也以文件的形式存放
  • 文件控制块的基本内容
    • 文件存取控制信息:如文件名、用户名、文件主存取权限等
    • 文件结构信息:文件逻辑结构、文件的物理结构等
    • 文件使用信息:已打开该文件的进程数、文件的修改
      情况等
    • 文件管理信息:文件建立日期、文件访问日期等

文件的物理结构

  • 顺序文件,连续存储
  • 链接文件
  • 索引文件

分布式文件系统

体系架构

  • 主节点进行管理,从节点存储数据
    • 53840246636
  • 文件切分成块,分散存储在从节点上

文件访问

  • 单机多进程访问同一文件

    • 读写锁
  • 不同机器上进程访问同一文件

    • 加锁效率太低,Hadoop使用一种immutable file

备份与一致性

  1. 客服端备份 Client -server DFS
    • 在客户端进行备份,将更改过的文件传到server,改变时client和server不一致
  2. 服务器端备份 Cluster-based DFS

HDFS

设计目标

  • 假设硬件的异常比软件的异常更加常见
  • 应用程序关注的是吞吐量,而不是响应时间。
  • 文件仅支持追加,而不允许修改。
  • 计算和存储采用就近原则,把代码放在远程计算,不搬运数据

数据块

  • 对于Hadoop来说,都是处理的大文件
  • 文件由数据块集合组成
    • 通常每块的大小为64MB
    • 每个数据块在本地文件系统已单独的文件进行存储(Linux文件系统)
  • 与操作系统中文件block的区别
    • 操作系统的block是读取的物理单元
      • 目的是节省I/O
      • block总是一样大
    • 而在HDFS中是为了切大文件
      • 若最后一块小于64M,则保持原有大小

体系结构

53840366916
  • NameNode
    • 每个集群只有一个
    • 负责文件系统元数据操作、数据块的复制和定位
  • SecondaryNameNode
    • 用于NameNode的备份节点
  • DataNode
    • 集群中每个节点一个数据节点
    • 负责数据块的存储
    • 为客户端提供实际文件数据

NameNode

  • 作用
    • 管理节点、接收用户的操作请求
  • 核心数据文件包括
    • 元数据
      • 保存在内存中
    • 镜像文件fsimage: 维护文件系统树以及文件树中所有的文件/目录的元数据(包括文件中块所在的数据节点的位置信息)
    • 操作日志文件EditLog:记录所有针对文件的创建、删除、重命名等操作

SecondaryNameNode

  • 执行过程:
    • 定期从NameNode上下载fsimage,edits。二者合并,生成新的fsimage在本地保存,并写回NameNode
    • 是“检查点”,不是“热备份”
      • 并不能保证实时都一样
  • 若直接操作image,代价很高,总是先更改日志(记录操作)

DataNode

  • 作用
    • 提供文件的存储
  • 文件块(block):最基本的存储单位,一个Linux文件
    • HDFS默认Block大小是64MB,
    • 以一个256MB文件,共有256/64=4个Block
  • 不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间
  • 数据备份:默认是三个
  • 因此,NamNode处理控制流,告诉客户存在哪里;而DataNode处理数据流,客户端直接与其进行传输。

文件访问

文件写入HDFS

可以并行写入不同节点

数据存放策略

目标:负载均衡,快速访问,支持容错

  • 第一个副本:放置在上传文件的数据节点;如果是集群外提交,则随机挑选一台磁盘不太满、CPU不太忙的节点(快速写入)
  • 第二个副本:放置在与第一个副本不同的机架rack的节点上(减少跨rack的网络流量)
  • 第三个副本:与第一个副本相同机架的其他节点上(应对交换机故障)
  • 更多副本:随机节点

从HDFS读取文件

从各个数据节点上传数据块,可以并行

数据读取策略

  • 当客户端读取数据时,从NameNode获得数据块不同副本的存放位置列表,列表中包含了副本所在的数据节点
  • 可以调用API来确定客户端和这些数据节点所属的机架ID
  • 最近者优先原则:当发现某个数据块副本对应的机架ID和客户端对应的机架ID相同时,就优先选择该副本读取数据,如果没有发现,就随机选择一个副本读取数据

文件访问模型

  • 一次写入多次读取
    • 一个文件经过创建、写入和关闭后就不得改变文件中的内容
    • 仅容许追加append()
      • 直接对文件增加一个block
    • 对于单文件,不支持并发写,只支持并发读
      • append同一个文件只允许同时执行一个操作
    • 修改内容需删除,重新写入
  • 好处:避免读写冲突、无需文件锁

备份与一致性

  • 一个文件有若干备份
  • 备份之间是否可能存在不一致?
    • 写入成功的备份之间是强一致的
  • 一次写入多次读取

容错机制

DataNode故障

  • “宕机”,节点上面的所有数据都会被标记为“不可读”
    • 数据块自动复制到剩余的节点上以保证满足备份因子
    • NameNode监控
  • 定期检查备份因子

NameNode故障

  • 根据SecondaryNameNode中的FsImageEditlog数据进行恢复

HDFS功能

  • HDFS适合做什么
    • 大文件存储
    • 流式数据访问
  • HDFS不适合做什么
    • 大量小文件
    • 随机读取
    • 延迟读取
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,894评论 2 89
  • HDFS是Hadoop Distribute File System 的简称,也就是Hadoop的一个分布式文件系...
    大佛爱读书阅读 855评论 0 0
  • 翻译: http://hadoop.apache.org/docs/stable/hadoop-project-d...
    金刚_30bf阅读 488评论 0 0
  • 我快乐,我感恩昨天没有去公司打卡。同事纱纱帮我打卡成功!有那么个实在人跟我做朋友开心! 感恩宇宙麻麻昨天让我非工资...
    闪亮Miss宋阅读 169评论 0 0
  • 去年大学毕业,心想着终于可以不再依靠父母、能够自己赚钱了。一年过去了,不仅没有赚到多少钱,还产生了一些负债.......
    小小Mark阅读 828评论 9 4