读《Google三篇重要论文》有感

读《Google三篇重要论文》有感

最早提出“大数据时代”到来的是全球知名咨询公司麦肯锡,虽然在此之前没有提出类似的定义,但是仿佛Big data的来临是人类发展的趋势,是一种历史的必然。

Google三篇重要论文代表的谷歌技术“三宝”仿佛就顺应这一种时代浪潮而生。它们分别是:Google File System、Google Bigtable 、Google MapReduce

Google File System(简称GFS)是一个面向大规模数据密集型应用的、可扩展的分布式文件系统,它是为适应Google不断增长的数据处理需求而开发的。GFS为大型网络和连接节点提供容错性、可靠性、可扩展性、可用性和性能。在笔者看来GFS不仅在设计思路上和早期文件系统的假设都有明显的不同,更高明的在于它能运行在廉价的普遍硬件设备的同时仍能够高速率的、大批量的处理数据。因为系统由许多廉价的普通组件组成,组件失效是一种常态。但它经过优化可以适应谷歌不同的数据使用和存储需求,如一个GFS集群采用单一Master节点,同时采取了64MB的Chunk尺寸,显著降低了系统的工作负载,使元数据全部放在内存中,大大加快了Master服务器的操作速度;采取了把数据流和控制流分开的措施,提高了网络效率等。Google文件系统充分利用了现成服务器的优势最大限度地减少了硬件缺陷。新的设计思路在带来好处的同时当然也会带来一些问题,最大挑战之一是如何处理频繁发生的组件失效。然而Google的工程师们通过操作日志完成了快速恢复和复制,有效地用GFS的自带工具诊断了系统的故障。操作日志的存在对于GFS来说无疑是非常重要的。Google 文件系统展示了一个使用普通硬件支持大规模数据处理的系统的特质。它的设计无疑是非常成功的。

Google Bigtable是一个分布式的结构化数据存储系统,它被设计用来处理海量数据,一般可以扩展到分布在数千台普通服务器上的PB级的数据。在很多方面,Bigtable 和数据库很类似,它使用了很多数据库的实现策略,但它不支持完整的关系数据模型,而是为客户提供简单的数据模型,使客户可以动态控制数据的分布和格式或者自己推测底层存储数据的位置相关性。最后,可以通过Bigtable的模式参数来控制数据是存放在内存中、还是硬盘上。Bigtable的三个重要组件为:链接到客户程序中的库、一个Master服务器和多个Tablet服务器。在经历局部性群组、压缩、通过缓存提高读操作的性能、Commit日志的实现、Tablet 恢复提速、利用不变性等一系列优化工作后使Bigtable的性能、可用性、可靠性都得到了大大的提高。Bigtable依赖了google的几项技术:用GFS来存储日志和数据文件;按SSTable文件格式存储数据;用Chubby管理元数据,甚至Bigtable的数据和日志都是写入GFS的。Google在设计、实现、维护和支持 Bigtable 的过程中,得到了很多有用的经验和教训,这对于我们的发展来说也是受益匪浅的。

Google MapReduce是一个编程模型,也是一个处理和生成超大数据集的算法模型的相关实现。开发的初衷是在可接受的时间内处理海量的原始数据,设计一个新的抽象模型,使使用者仅表述自己想要执行的简单运算就能处理大量的数据。而使用MapReduce模型,再结合用户实现的Map和Reduce函数,我们就可以非常容易的实现大规模并行化计算。MapReduce的伟大之处就在于让不熟悉并行编程的程序员也能充分发挥分布式系统的威力,它体现了一种最原始的数学思想——拆分,它的存在是非常有意义的。

Google技术“三宝”已经为Google提供了极大的便利,也为其它项目的发展和实现提供了思路,如Hadoop等。从它的身上,我们可以看出“大数据”产生的一种趋势以及IT行业发展的一种走势,读《Google三篇重要论文》,使计算机行业从事者以及学习者受益匪浅。

发布了2 篇原创文章 · 获赞 1 · 访问量 30

猜你喜欢

转载自blog.csdn.net/Firelearn/article/details/102633248