The Google File System 论文阅读

2003年USENIX,出自谷歌,开启分布式大数据时代的三篇论文之一

总体设计

假设

  1. 硬件损坏是常态,而非意外。例如磁盘损坏,断电,断网。所以持续的监控,错误诊断,错误恢复要纳入系统设计之中
  2. 文件很大,GB级别的文件很常见。如果又要兼顾大文件,又要兼顾小文件,就不太做得到了。因此设计假设和参数设置需要好好考虑
  3. 大部分文件是追加写的方式更新,覆盖写的情况不多。写了的文件通常也是大量顺序读,少量随机读。同一个客户端通常读连续区域
  4. 联合设计应用和文件系统的API能增加系统的灵活性
  5. 为了应对并发请求,例如同时追加一个文件,或者多路合并,原子性和最小的同步开销是必不可少的
  6. 高持续带宽比低延迟更重要

接口

目录结构树的设计,支持 create、delete、open、close、read、write

支持 snapshot 和 record append 操作。snapshot 复制一个文件或者目录。record append 允许多个客户端同时将数据追加到同一文件,同时保证每个客户端追加的原子性

2.3架构

在这里插入图片描述
整个 GFS 系统由一个 master、多个chunkserver 组成,可以供多个客户端链接。运行在 Linux 机器上,普通用户权限。

文件被分为固定大小的 chunk,每个 chunk 创建的时候,master会分配一个全局唯一的64bit标识,成为 chunk handle。每一个 chunk 都是 Linux 机器上的普通文件,存放在 chunkServer 上,并且默认有3个副本,保存在不同的 chunkServer 上。

master 节点保存所有的原信息,包括命名空间,访问权限控制,文件到 chunk 的映射表、chunk当前位置。控制系统级别的活动、例如 chunk租约管理、chunk跨节点迁移、垃圾chunk回收等。master节点周期性的和 chunkServer 进行心跳通信,既下达指令、又能收集chunkServer的状态。

客户端和 master 沟通元信息,存数据块的读写会直接和 chunkServer 通信。不管是客户端还是 chunkServer,都不进行任何缓存。

2.4 单master结构

单master使得设计简单、并且在 chunkServer 操作时候,知道全局信息。但也因此必须将 master 从读写任务中剥离出来,不然会成为瓶颈。客户端和 master 通讯,知道要和哪个 chunkServer 交换数据之后,直接和 chunkServer 交互后面的步骤。

客户端还有个工作,把文件名和应用程序指定的字节偏移量转换为一个文件内的块索引。然后,它向master发送一个包含有文件名和块索引的请求。之后客户端从最近的一个副本中读取。之后对相同块的读取就不再需要客户端和master的交互了,直到缓存信息过期或者文件被重新打开。

2.5 Chunk Size

64M的 chunk 大小,Linux 机器上的普通文件,惰性申请空间,避免内部碎片。

大chunk的几个好处:减少客户端和master的交互次数。客户端可以在一个大chunk上执行多种操作,客户端和chunkServer保持长连接节省网络开销。减少元数据的数据量。

大 chunk 的劣势是,小文件浪费存储空间,并且一个文件一个 chunk。如果访问同一个,可能造成热点。热点的一个潜在的长期解决方案是允许客户端在这种情况下从其他客户端读取数据。

2.6 Metadata

master存储了三种主要类型的元数据: 文件和块命名空间,文件到块的映射,以及每个块的副本的位置,但只是到 chunkServer,具体位置由 chunkServer 保存。

数据读取流程:
在这里插入图片描述
写入数据时,优先最近传输一份完整数据到 chunkServer,然后内网里面 chunkServer 之间传递,提高带宽利用率,提升整体吞吐。

对磁盘的不信任还体现在每一个大 chunk内区分为很多小区块,每个区块也有一个校验和。读取之前,chunkServer 会校验,确保不把错误的数据传播出去。如果发现自己错误了,也及时报告 master,好从别的地方拉取正确的数据过来。并且还会配合闲时扫描校验,把非活动块的情况也摸排清楚。

数据流和控制流分开
重视快速恢复,默认在非正常关闭的时候也要保存好当前状态,周期性保存

[1]: (https://zhuanlan.zhihu.com/p/522459187)[https://zhuanlan.zhihu.com/p/522459187] 翻译

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/27653.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【文档智能 RAG】RAG增强之路-智能文档解析关键技术难点及PDF解析工具PDFlux

前言 在私域知识问答和企业知识工程领域,结合Retrieval-Augmented Generation(RAG)模型和大型语言模型(LLM)已成为主流方法。然而,企业中存在着大量的PDF文件,PDF解析的低准确性显著影响了基于…

计算机视觉全系列实战教程:(十)图像的几何变换:平移 旋转 翻转 缩放 仿射等变换

1.概述 (1)Why(为什么要进行图像的几何变换) 校正图像形变:纠正由于拍摄角度或硬件原因导致的图像几何变形图像增强:在深度学习的模型训练时,通过几何变换获得更多的训练集图像配准和拼接:先进行几何变换…

open-amv开发环境搭建

open-amv是基于rv1103主控芯片的视觉开发板子 1.板子使用 板子使用type c作为调试口,同时供电,请在电脑上下载adb,当板子通过tpye c与电脑连接后,执行命令adb shell就会进入到板子的linux系统命令行。 2.编译环境 2.1 搭建doc…

ipad协议已更新

mmtls 24算法,by golang 其他/v1/other POST/v1/other/GetPeopleNearby 查看附近的人 POST/v1/other/GetQrCode 获取二维码 同步消息/v1/ws GET/v1/ws/GetSyncMsg 同步消息,ws协议 消息/v1/message POST/v1/message/AddMessageMgr 添加要发送…

什么是无杂散动态范围 (SFDR)?为什么 SFDR 很重要?

有多种不同的规格可用于表征电路线性度。SFDR 指标是一种常用的规范。该指标定义为所需信号幅度与感兴趣带宽内杂散的比率(图 1)。 图 1. 显示 SFDR 指标的图表。 对于 ADC,SFDR 展示了 ADC 如何在存在大信号的情况下同时处理小信号。作为一个…

如何阅读?从阅读中学阅读—《海绵阅读法》

大家好,我是老三,最近读了《海绵阅读法:如何吸收一本书的精华》,第一次阅读教如何阅读的书,整理一番读书笔记,分享给大家。 读书动机 我前一阵子写了篇文章,2024Q1,盘点我看过的54本…

[Java基本语法] 逻辑控制与方法

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀线程与…

使用多进程和 Scrapy 实现高效的 Amazon 爬虫系统

在这篇博客中,将展示如何使用多进程和 Scrapy 来构建一个高效的 Amazon 爬虫系统。通过多进程处理,提高爬虫的效率和稳定性,同时利用 Redis 进行请求调度和去重。 项目结构 Scrapy 爬虫:负责从 Amazon 抓取数据。MongoDB&#x…

Unity中获取数据的方法

Input和GetComponent 一、Input 1、Input类: 用于处理用户输入(如键盘、鼠标、触摸等)的静态类 2、作用: 允许你检查用户的输入状态。如某个键是否被按下,鼠标的位置,触摸的坐标等 3、实例 (1) 键盘…

一键解锁创意无界:高效AI生成古典肖像图片,轻松打造艺术化身

在数字化时代,创意与艺术的结合正逐渐改变我们的生活。你是否曾梦想过拥有一幅专属于自己的古典肖像画,却又苦于找不到合适的画师或高昂的费用而望而却步?现在,这一切都将成为现实! 进入首助编辑高手的AI魔法智绘图板块…

你能不能手敲出Spring框架?

Spring最成功的地方在于创始人Rod Johnson提出的IOC、AOP核心理念,反而不是其本身的技术。技术上今天可以有Spring春天,明天就可以有Autumn秋天。 核心理念有多重要?就如1871年巴黎公社的失败。公社在对抗法国zf和普鲁士占领军的背景下成立&…

抉择与未来:计算机专业的选择与发展展望

2024年,计算机相关专业还值得选择吗? 随着2024年高考落幕,数百万高三学生又将面临人生中的重要抉择:选择大学专业。在这个关键节点,计算机相关专业是否仍是“万金油”的选择?在过去很长一段时间里&#xff…

英伟达开源 3400 亿巨兽:98% 合成数据训出最强开源通用模型,性能对标 GPT-4o

NVIDIA 最近开源了其大型语言模型 Nemotron-4 340B,这是一个具有划时代意义的模型,它使用了高达 98% 的合成数据进行训练,并且在性能上与 GPT-4 相当。Nemotron-4 340B 包括基础模型、指令模型和奖励模型,支持 4K 上下文窗口、50 …

回答网友的一个Delphi问题

网友想在grid 中 加一个水印,俺就给他写了个例子。先靠效果: 这个例子 包含下面几步: 1、创建背景 dg_bmp:Tbitmap.Create; w: Image1.Picture.Bitmap.width; h: Image1.Picture.Bitmap.height; dg_bmp.width: w*2; dg_bmp.height: …

从入门到高手的99个python案例(2)

51. 列表和数组比较 - 列表通用,NumPy数组高效。 import numpy as np normal_list [1, 2, 3] np_array np.array([1, 2, 3]) print(np_array.shape) # 输出 (3,), 数组有形状信息 52. Python的内置模块datetime - 处理日期和时间。 from datetime import…

数据库MySQL——从0到1入门教程

Q:为什么需要MySQL? A:网络服务中,我们需要存储、管理大量的数据,并确保数据的安全、实现增删改查操作的高效,因此需要一个系统用来专门管理数据,以实现上述的高性能要求,数据库管理系统应需而生 八股如下…

Notepad++ 使用正则表达式删除空行空格方法

删除所有空格 查找框输入:^\s,替换框留空,什么也不输入,一键全部替换即可。 删除所有空行 查找框输入:\r\n\r\n,替换框输入:\r\n,一键全部替换即可。 段落之间空一行 思路&#…

MySQL(7)

创建和管理表 1. 创建和管理数据库 1.1 如何创建数据库 #方式1:CREATE DATABASE mytest1; # 创建的此数据库使用的是默认的字符集#查看创建数据库的结构SHOW CREATE DATABASE mytest1;#方式2:显式了指名了要创建的数据库的字符集CREATE DATABASE myt…

nginx配置后访问出现白屏怎么办?

问题 服务器上有两个web服务ab分别指向3000、3001两个端口,使用nginx进行反向代理,配置文件如下: server {listen 80;server_name www.example.com;location /a/ {proxy_pass http://localhost:3000;proxy_set_header Host $host;proxy_set…

自动化数据驱动?最全接口自动化测试yaml数据驱动实战

前言 我们在做自动化测试的时候,通常会把配置信息和测试数据存储到特定的文件中,以实现数据和脚本的分离,从而提高代码的易读性和可维护性,便于后期优化。 而配置文件的形式更是多种多样,比如:ini、yaml、…