1.背景

分布式计算的发迹应该是google在2003年发表的三篇paper。各自是GFS、MapReduce、BigTable。

当中MapReduce大家都非常熟悉了。不懂的同学也能够看看我之前写的文章【分布式计算】MapReduce的替代者-Parameter Server

为什么google会搞分布式计算这件事儿呢,由于在那个年代每天会产生几个T的日志,可是当时的磁盘仅仅同意存储几百G的文件,07年之前淘宝的全部数据都是用完就删除的,由于没地方存。后来,人们认识到数据是值钱的,所以须要一种存储策略来存储大数据。于是google就用了分布式存储系统。
这里主要介绍下GFS和BigTable。

2.DFS(相应hadoop的HDFS)

DFS是一种分布式文件存储系统。常规的文件系统是树状结构存储的,每一个文件有一个指针指到磁盘上的某个区域。
早期的DFS是单点结构的。有一个master节点负责管理每一个文件的namespace(文件存储在哪个机器的哪个磁盘上。如s3/dick2)。要存储一个非常大的数据。例如说一个10P的数据,首先是切片,例如说依照64M切片。每一个block存在某一个机器的某个磁盘上。总体的结构例如以下:
这里面就会衍生出三个问题,
       第一个是master节点假设挂了,整个文件系统就不能work了,这个是单点的一个缺陷。

       第二个问题是,一但slave中的某个磁盘破损了,磁盘破损率在2%左右,也就是每天都有破损的。这里有一个冗余机制,就是每一个block会分配到多个磁盘上备份~
       第三个问题是,磁盘是不停的被读写的,master是怎样获得每一个磁盘的信息的,这个功能依赖于一种叫做heart-beat的机制,每隔几秒钟,master就要遍历每一个slave得到它们的最新状况。

3.BigTable(相应Hadoop的HBase)

假设说DFS是磁盘级别的分布式存储。那么BigTable就是内存级别的分布式存储。

BigTable的存储结构是HashTable,以key-value的形式存储。

应用场景是一些在线的service。

例如说GoogleEarth,每一个地名(key)会相应一系列的meta(value),世界上有无数个地名,这是一个非常大的文件。假设从磁盘中拿,例如说输入一个巷子的名字,过10分钟用户才干拿到结果。这是不能接受的。我们须要将这些key-value做成cache缓存在内存中。显然单机内存的极限。例如说300G也是无法缓存这么大的文件的。这就须要多个机器一起缓存,这个策略就是BigTable。

可是,一但一个机器出现failover的情况。整个缓存就出现了gap,BigTable有一个机制就是,不断地将文件underfile到DFS中。防止文件丢失。

/********************************

* 本文来自博客  “李博Garvin“

* 转载请标明出处:http://blog.csdn.net/buptgshengod

******************************************/

【分布式计算】DFS && BigTable的更多相关文章

  1. [MapReduce] Google三驾马车:GFS、MapReduce和Bigtable

    声明:此文转载自博客开发团队的博客,尊重原创工作.该文适合学分布式系统之前,作为背景介绍来读. 谈到分布式系统,就不得不提Google的三驾马车:Google FS[1],MapReduce[2],B ...

  2. Dynamo和Bigtable对比

    数据结构化问题        首先要提到的是两者存储数据属性上的区别,虽然两者都是以key/value形式进行存储,但Dynamo偏向存储原数据,因为其所存储的数据是非结构化数据,对value的解析完 ...

  3. Google MapReduce/GFS/BigTable三大技术的论文中译版

    今天查找分布式计算的有关资料,发现Google的三大核心技术MapReduce.GFS和BigTable的论文都已经被翻译成高质量的中文,更巧的是,这三篇中译版的原发地都是CSDN的Blog.其中最新 ...

  4. 大数据基础知识:分布式计算、服务器集群[zz]

    大数据中的数据量非常巨大,达到了PB级别.而且这庞大的数据之中,不仅仅包括结构化数据(如数字.符号等数据),还包括非结构化数据(如文本.图像.声音.视频等数据).这使得大数据的存储,管理和处理很难利用 ...

  5. 大数据时代之hadoop(五):hadoop 分布式计算框架(MapReduce)

    大数据时代之hadoop(一):hadoop安装 大数据时代之hadoop(二):hadoop脚本解析 大数据时代之hadoop(三):hadoop数据流(生命周期) 大数据时代之hadoop(四): ...

  6. [IR] Bigtable: A Distributed Storage System for Semi-Structured Data

    良心博文: http://blog.csdn.net/opennaive/article/details/7532589 这里只是基础简述 众人说: 链接:http://blog.csdn.net/o ...

  7. 分布式计算(一)Ubuntu搭建Hadoop分布式集群

    最近准备接触分布式计算,学习分布式计算的技术栈和架构知识.目前的分布式计算方式大致分为两种:离线计算和实时计算.在大数据全家桶中,离线计算的优秀工具当属Hadoop和Spark,而实时计算的杰出代表非 ...

  8. 分布式计算开源框架Hadoop入门实践

    目录(?)[+] Author :岑文初 Email: wenchu.cenwc@alibaba-inc.com msn: cenwenchu_79@hotmail.com blog: http:// ...

  9. 分布式系统漫谈一 —— Google三驾马车: GFS,mapreduce,Bigtable

    分布式系统学习必读文章!!!! 原文:http://blog.sina.com.cn/s/blog_4ed630e801000bi3.html 分布式系统漫谈一 —— Google三驾马车: GFS, ...

随机推荐

  1. 精通CSS高级Web标准解决方案(1-3 规划、组织与维护样式表)

    对文档应用样式 对代码进行注释/*......*/ 结构性注释 自我提示 删除注释.优化样式表 样式指南:解释代码与站点的视觉设计是如何组织在一起的 站点结构.文件结构.命名规则 编码标准:(X)ht ...

  2. Linux Shell系列教程之(五)Shell字符串

    本文是Linux Shell系列教程的第(五)篇,更多shell教程请看:Linux Shell系列教程 字符串是Shell编程中最常用最有用的数据类型,今天,Linux大学网就为大家介绍一下在She ...

  3. 【Luogu】P2607骑士(基环树DP)

    题目链接 这题……好吧我比着题解打的 题解连接 #include<cstring> #include<cstdio> #include<cstdlib> #incl ...

  4. eval()函数的巧用

    eval的功能 将字符串str当成有效的表达式来执行.. 写函数,专门计算图形的面积 其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积 调用函数area(‘圆形’,圆半径)  返回圆的面积 调用 ...

  5. from __future__ import unicode_literals, absolute_import

    Q:python模块中的相对导入,绝对导入,有些地方会写 from __future__ import absolute_import 希望有个更详细的讲解. A: 相对导入:在不指明 package ...

  6. 关于postman使用上发现的一点问题

    之前后台用的java,一直用的postman测试接口数据,之前不管是get.post.delete.put请求都是在param传递的数据,java下面是没问题可以测试的.但是今天自己写Node发现po ...

  7. Mysql常用语句记录

    建表语句,带自增字段 create table test ( id int auto_increment primary key, name ) not null, password ) not nu ...

  8. 【POJ3352】Road Construction(边双联通分量)

    题意:给一个无向图,问最少添加多少条边后能使整个图变成双连通分量. 思路:双连通分量缩点,缩点后给度为1的分量两两之间连边,要连(ans+1) div 2条 low[u]即为u所在的分量编号,flag ...

  9. Android 4.4 不休眠+不锁屏+默认中文+去除导航栏

    1.不休眠 frameworks/base/packages/SettingsProvider/res/values/defaults.xml 里面60000改成-1,就是不进入休眠. 这个文件还保存 ...

  10. yii 数据save后得到插入id

    $model->save();//得到上次插入的Insert id$id = $model->attributes['id'];如此很简单