谷歌技术"三宝"之谷歌文件系统

江湖上流传的谷歌三宝是什么?GFS,MapReduce,还有一个很重要 江湖传说永流传:谷歌技术有"三宝",GFS、MapReduce和大表(BigTable)! 谷歌在03到06年间连续发表了三篇很有影响力的文章,分别是03年SOSP的GFS,04年OSDI的MapReduce,和06年OSDI的BigTable。SOSP和OSDI都是操作系统领域的顶级会议,在计算机学会推荐会议里属于A类。SOSP在单数年举办,而OSDI在双数年举办。 那么这篇博客就来介绍一下GFS,MapReduce,BigTable。 谷歌技术"三宝"之谷歌文件系统 题记:初学分布式文件系统,写 阅读详情

题记:初学分布式文件系统,写篇博客加深点印象。GFS的特点是使用一堆廉价的商用计算机支撑大规模数据处理。

虽然"The Google File System " 是03年发表的老文章了,但现在仍被广泛讨论,其对后来的分布式文件系统设计具有指导意义。然而,作者在设计GFS时,是基于过去很多实验观察的,并提出了很多假设作为前提,这等于给出了一个GFS的应用场景。所以我们自己在设计分布式系统时,一定要注意自己的应用场景是否和GFS相似,不能盲从GFS。

GFS的主要假设如下:

  1. GFS的服务器都是普通的商用计算机,并不那么可靠,集群出现结点故障是常态。因此必须时刻监控系统的结点状态,当结点失效时,必须能检测到,并恢复之。
  2. 系统存储适当数量的大文件。理想的负载是几百万个文件,文件一般都超过100MB,GB级别以上的文件是很常见的,必须进行有效管理。支持小文件,但不对其进行优化。
  3. 负载通常包含两种读:大型的流式读(顺序读),和小型的随机读。前者通常一次读数百KB以上,后者通常在随机位置读几个KB。
  4. 负载还包括很多连续的写操作,往文件追加数据(append)。文件很少会被修改,支持随机写操作,但不必进行优化。
  5. 系统必须实现良好定义的语义,用于多客户端并发写同一个文件。同步的开销必须保证最小。
  6. 高带宽比低延迟更重要,GFS的应用大多需要快速处理大量的数据,很少会严格要求单一操作的响应时间。
从这些假设基本可以看出GFS期望的应用场景应该是大文件,连续读,不修改,高并发。国内的淘宝文件系统(TFS)就不一样,专门为处理小文件进行了优化。

1 体系结构

GFS包括一个master结点(元数据服务器),多个chunkserver(数据服务器)和多个client(运行各种应用的客户端)。在可靠性要求不高的场景,client和chunkserver可以位于一个结点。图1是GFS的体系结构示意图,每一结点都是普通的Linux服务器,GFS的工作就是协调成百上千的服务器为各种应用提供服务。


  • chunkserver提供存储。GFS会将文件划分为定长数据块,每个数据块都有一个全局唯一不可变的id(chunk_handle),数据块以普通Linux文件的形式存储在chunkserver上,出于可靠性考虑,每个数据块会存储多个副本,分布在不同chunkserver。
  • GFS master就是GFS的元数据服务器,负责维护文件系统的元数据,包括命名空间、访问控制、文件-块映射、块地址等,以及控制系统级活动,如垃圾回收、负载均衡等。
  • 应用需要链接client的代码,然后client作为代理与master和chunkserver交互。master会定期与chunkserver交流(心跳),以获取chunkserver的状态并发送指令。
图1还描述了应用读取数据的流程。1.应用指定读取某个文件的某段数据,因为数据块是定长的,client可以计算出这段数据跨越了几个数据块,client将文件名和需要的数据块索引发送给master;2.master根据文件名查找命名空间和文件-块映射表,得到需要的数据块副本所在的地址,将数据块的id和其所有副本的地址反馈给client;3.client选择一个副本,联系chunkserver索取需要的数据;4.chunkserver返回数据给client。

2 数据的布局

GFS将文件条带化,按照类似RAID0的形式进行存储,可以提高聚合带宽。事实上,大多数分布式存储系统都会采取这种策略。GFS将文件按固定长度切分为数据块,master在创建一个新数据块时,会给每个数据块分配一个全局唯一且不可变的64位id。每个数据块以Linux文件的形式存储在chunkserver的本地文件系统里。

谷歌(Google)技术面试——全部面试流程 本篇介绍一下谷歌的全部面试流程,包括两次电话面试和五次现场面试。之后便是招聘委员会评定和录用审核。 阅读详情

相关推荐

谷歌Android增量文件系统incfs(Incremental File System )

Incremental FS(IncFS)是谷歌在2019年提出的一个计划用于Android应用下载更新的文件系统[2]。IncFS不允许直接写入文件,并且追加写后的内容也永不改变。它允许在大型Android应用程序的二进制文件和资源没有完全加载到Android设备上之前运行。如果应用读取的内容尚未加载,它需要等待数据块被提取,但是在大多数情况下是热块可以预先加载,并且应用程序几乎可以立即流畅运行。

古苏的博客 1447

谷歌全景拼接出错之我见

最近,一篇关于使用谷歌AI全景拼接技术对照片进行拼接出错的新闻引爆了社交网络。这和我前段时间所研究的Opencv全景拼接技术有关,因此这篇新闻也引起了我的兴趣。 事件的起因是Alex Harker和他的朋友在加拿大路易斯湖滑雪场滑雪时,拍了三张照片(如图1所示),一张有人物的,另两张为纯风景照,当用谷歌照片合成时,竟然出现了“山中巨人”般的效果(如图2所示)。 图1 原始三张照片 图

赵春江的专栏 6206

GDG谷歌开发者社区介绍

Google Developer Groups(GDG,谷歌开发者社区)是由谷歌支持的全球性开发者社区网络,旨在为开发者和技术爱好者提供一个学习、分享和协作的平台。自2009年成立以来,GDG已在全球130多个国家建立了1000多个分会,每年举办超过7000场活动,覆盖超过50万名开发者。

hemoparrot的专栏 1645

谷歌神经网络框架,谷歌深度神经网络

阿尔法围棋(AlphaGo)是一款围棋人工智能程序。这个程序利用“价值网络”去计算局面,用“策略网络”去选择下子。 阿尔法围棋(AlphaGo)是通过两个不同神经网络“大脑”合作来改进下棋。这些大脑是多层神经网络跟那些Google图片搜索引擎识别图片在结构上是相似的。它们从多层启发式二维过滤器开始,去处理围棋棋盘的定位,就像图片分类器网络处理图片一样。经过过滤,13 个完全连接的神经网络层产生对它们看到的局面判断。这些层能够做分类和逻辑推理。 这些网络通过反复训练来检查结果,再去校对调整参数,去让下次执行

wenangou的博客 1902

Pieter Levels 与谷歌就谷歌Gemini API展开激烈辩论

花生瓜子八宝粥,啤酒饮料矿泉水,腿收一下。空闲时间坐下来看看戏。Levels将谷歌的弊病归咎于过度的企业官僚主义,这与他对谷歌被律师接管的评论相符。

二进制的梦想 1279

【python爬虫可以获取到谷歌影像吗?】如何有效下载谷歌影像?

python爬虫可以获取到谷歌影像吗?学习笔记!

985小水博的摸鱼日常 2428

高德地图加载谷歌地图瓦片

安卓加载谷歌地图简介技术路线实现步骤

qq_42072638的博客 8305

14、利用谷歌进行网络映射的技术与方法

本文详细介绍了如何利用谷歌进行网络映射的技术与方法,涵盖域名确定、网站爬取、链接映射等多个方面。通过使用谷歌搜索、API工具以及自动化脚本(如dns-mine.pl和BiLE),可以高效地发现目标组织的网络结构和潜在漏洞。同时,文章还提到了相关的非谷歌网络工具和注意事项,帮助网络安全审计人员更好地进行网络发现和防御分析。

2y3u4i5o6p的博客 93

26、谷歌文件系统与分布式锁服务解析

本文详细解析了谷歌文件系统(GFS)和Chubby锁服务的设计与实现。GFS是一种为大规模数据存储而设计的分布式文件系统,强调可扩展性、可靠性和高效的数据管理。文章涵盖了GFS的文件特征、架构、一致性模型以及故障恢复机制。同时,还深入探讨了Chubby锁服务,一种为分布式系统提供协调和一致性保障的分布式锁实现,重点分析了其基于Paxos算法的共识机制和应用场景。通过对比GFS和Chubby的设计与用途,展示了它们在分布式系统中的关键作用。

rainy的博客 42

【项目实战】大数据时代的分布式存储和管理技术,分布式文件系统(如Hadoop的HDFS和谷歌的GFS)

分布式文件系统是一种通过网络实现文件在多台主机上进行分布式存储的文件系统分布式文件系统是大数据时代的数据存储和管理技术。

奶爸的编程之路,也就一周冷个三天 503

46、谷歌云编程与软件环境技术解析

本文深入解析了谷歌云编程与软件环境技术,涵盖并行计算类别、谷歌应用引擎(GAE)编程支持、谷歌文件系统(GFS)和BigTable等关键技术。重点分析了不同并行计算类别的特点与适用场景,GAE的开发环境与组件协同工作机制,GFS和BigTable的设计与实现,并探讨了谷歌云技术的未来发展趋势。为开发者和企业提供了在云计算和大规模数据处理方面的技术参考和实践指导。

5f4d3s2a1q的博客 72

1、谷歌搜索与安全技术全解析

本文详细解析了谷歌搜索与安全技术,涵盖谷歌搜索基础、高级搜索运算符、谷歌黑客技术、安全搜索技巧及自动化搜索与攻击库的实现。内容包括资源注册福利、版权与责任声明、作者与贡献者介绍,以及服务器安全设置和安全工具的使用,旨在帮助用户全面了解谷歌搜索技术及其安全应用。

c6d7e8f9g的博客 69

three.js 载入 3D 模型的方法

三维模型的加载器ColladaLoader模型加载器。GLTFLoader模型加载器。OBJLoader模型加载器。FBXLoader模型加载器。

w418856的博客 4362

C#利用S7netplus实现西门子S7_200_SMART PLC高效点位监控与操作

本文详细介绍了如何使用C#结合S7netplus开源库高效监控与操作西门子S7-200 SMART PLC的点位。内容涵盖从开发环境搭建、建立通信连接,到核心的点位读写、批量数据处理及字节与位数组转换等关键技术,并提供了构建稳定监控程序的架构与避坑指南,帮助开发者快速实现上位机与PLC的稳定数据交互。

rum55的博客 315

别再只看pLDDT了!AlphaFold预测结果解读保姆级指南:pLDDT、PAE、pTM、ipTM到底怎么看?

本文详细解析了AlphaFold预测结果中的关键指标pLDDT、PAE、pTM和ipTM,帮助用户从单一依赖pLDDT进阶到全面理解蛋白质结构预测。通过实际案例和技巧,指导如何正确解读这些指标,避免常见错误,并提供了从预测到发表的实用建议。

weixin_29100399的博客 355

AI赚钱新思路 利用RPA+KIMI实现小红书全自动制作发布(详细攻略)

我已经事先准备好了文案素材,现在就利用Kimi的智能,根据我们已有的文案来创作出新的文案吧。之前我写过一篇关于【:一个戴着用百元大钞制成的简约头饰的少女,她坐在小车里,手里拿着一叠港元,整个画面洋溢着现实主义动漫风格和治愈系的温暖气息。通过这篇文章,我们已经一步步地完成了小红书治愈系文案的创作、治愈系图片的生成,以及笔记的发布,实现了整个流程的自动化。不慌不忙,快乐常在 在繁忙的日常中,给自己的心灵留一片净土,感受内心深处的平静与安宁。接下来,我将展示如何使用影刀来编写自动化脚本,以生成治愈系的图文图片。

weixin_42172073的博客 3687

Steam崩溃:ntdll.dll报错0xc0000374...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1156

Pixhawk2.4.8接口及引脚定义

pixhawk2.4.8接口定义图解

加斯顿工程师的博客 8747

059、肤色还原专项调优:记忆色、颜色偏好建模与主观评价标准

文章摘要:肤色还原调优的技术挑战与实践经验 本文系统探讨了手机影像中肤色还原的技术难点与解决方案。通过实际案例揭示了肤色还原的本质是记忆色与颜色偏好的博弈,而非单纯的技术指标达标。文章详细分析了记忆色的三大特性(高饱和、地域差异、场景依赖)和颜色偏好的数学建模方法,提出了基于YCbCr/Lab空间的参数化模型和代价函数设计。在评价体系方面,强调主观评价的重要性,并分享了专家评审、用户调研、场景覆盖的三级验证方法。最后总结了实战中的关键经验,包括肤色检测优化、过渡处理、动态范围管理及视频/拍照差异策略。文章指

sundong_81的博客 250

14 | TensorFlow2对阿拉伯语手写字符数据集进行识别

该数据集由 60 名参与者书写的16,800 个字符组成,年龄范围在 19 至 40 岁之间,90% 的参与者是右手。每个参与者在两种形式上写下每个字符(从“alef”到“yeh”)十次,如图 7(a)和 7(b)所示。表格以 300 dpi 的分辨率扫描。使用 Matlab 2016a 自动分割每个块以确定每个块的坐标。该数据库分为两组:训练集(每类 13,440 个字符到 480 个图像)和测试集(每类 3,360 个字符到 120 个图像)。数据标签为1到28个类别。

微信号:RunsenLiu 2876

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: 使用math库遇到的错误
下一篇: 谷歌技术"三宝"之MapReduce
fumin
博客等级 码龄15年 343粉丝 21原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值