zoukankan      html  css  js  c++  java
  • Bigtable 具体是怎样一个东西?和 MapReduce, GFS 之间的关系是什么?

     

    前不久 Twitter 推出了 Storm 系统,号称改善了 Hadoop 得一些缺点,请问下是改进了哪些地方?

    关注者
    694
    被浏览
    41,888
     

    4 个回答

    收录于 编辑推荐 · 

    Hadoop是很多组件的集合,主要包括但不限于MapReduce,HDFS,HBase,ZooKeeper。MapReduce模仿了Google MapReduce,HDFS模仿了Google File System,HBase模仿了Google BigTable,ZooKeeper或多或少模仿了Google Chubby(没有前3个出名),所以下文就只提MapReduce、HDFS、HBase、ZooKeeper吧。


    简单来讲,
    • HDFS和HBase是依靠外存(即硬盘)的分布式文件存储实现和分布式表存储实现。HDFS是一个分布式的“云存储”文件系统,它会把一个文件分块并分别保存,取用时分别再取出、合并。重要的是,这些分块通常会在3个节点(即集群内的服务器)上各有1个备份,因此即使出现少数节点的失效(如硬盘损坏、掉电等),文件也不会失效。如果说HDFS是文件级别的存储,那HBase则是表级别的存储。HBase是表模型,但比SQL数据库的表要简单的多,没有连接、聚集等功能。HBase的表是物理存储到HDFS的,比如把一个表分成4个HDFS文件并存储。由于HDFS级会做备份,所以HBase级不再备份。
    • MapReduce则是一个计算模型,而不是存储模型;MapReduce通常与HDFS紧密配合。举个例子:假设你的手机通话信息保存在一个HDFS的文件callList.txt中,你想找到你与同事A的所有通话记录并排序。因为HDFS会把callLst.txt分成几块分别存,比如说5块,那么对应的Map过程就是找到这5块所在的5个节点,让它们分别找自己存的那块中关于同事A的通话记录,对应的Reduce过程就是把5个节点过滤后的通话记录合并在一块并按时间排序。MapReduce的计算模型通常把HDFS作为数据来源,很少会用到其它数据来源比如HBase。
    • ZooKeeper本身是一个非常牢靠的记事本,用于记录一些概要信息。Hadoop依靠这个记事本来记录当前哪些节点正在用,哪些已掉线,哪些是备用等,以此来管理机群。


    相比较而言,
    • Storm本身主要是一个分布式环境下的实时数据计算模型,没有外存存储部分。Storm的应用场景是,数据来的特别快、并且要求随来随处理。比如Twitter服务器自身每秒收到来自全世界的推能达几千条,并且要求收到后还需立即索引,以供查询。这用传统的方法乃至Hadoop都是比较难的,因为外存的使用会带来较大的延迟,这时可以用Storm。Storm节点对内存中的数据进行操作,然后流出数据到下一个节点,以此来维系节点间的协作、达到高速协同处理。
    • Storm有一个总的控制节点Nimbus来与ZooKeeper交流、进行集群管理。
    • Storm还没有做到数据备份,这是它的不足(2013年Update: 较新的Storm已引入了类事务的概念,会有重做的操作来保证数据的处理)。


    所以,Hadoop和Storm都是分布式环境下的计算平台,不过前者依赖外存,适应批处理情形,后者依赖内存,适应实时处理、超低延迟、无需大量存储数据情形。前类出现的时间较早(03年GFS的论文),后类出现的时间较晚(10年Yahoo! S4的论文)。我不大赞同“Storm改进了Hadoop的缺点”的说法——这种说法有点像“轮船改进了汽车的哪些缺点”——因为它们本身即不太同类。Storm和Hadoop有很多相似也有很多区别,适用的场景是不一样的,主要取决于使用者自己的需求。

    *上面很多叙述方法是为了读者的更好理解,不尽完全准确,比如HBase是有内存缓冲机制的,并非只依赖外存,再比如Nimbus实质上是某个节点上的守护进程,而非节点本身。

    最终,关于这几者各自具体是什么,我的建议是读下列论文:
    • 2003 The Google file system
    • 2005 MapReduce: Simplified data processing on large clusters
    • 2008 TheBigtable: A distributed storage system for structured data Google file system
    • 2010 S4: distributed stream computing platform
    • 2011 Fast Crash Recovery in RAMCloud
    和Storm的主页:nathanmarz/storm · GitHub中wiki的Rational页。
    1、针对标题问题。BigTable是有部分关系模型支持的,更像是表,底层存储是GFS。与Mapreduce的关系就跟GFS与MapReduce的关系没啥区别吧。
    2、针对内容问题,没有仔细看storm,但是从大致个人了解来说,storm是一个为支持实时计算的框架。而Hadoop是更适用于批量计算。不太同类,没啥好比较的吧。

    请看


    Essential Google(Google文件系统本质论)的PPT

    至于 MapReduce,则是 Google 提出的一种分布式开发模型,可以简单理解为算法
    bigtable的c++开源实现是百度的tera系统, 。 可以通过tera非常容易了解bigtable的实现细节。
  • 相关阅读:
    VSCode的终端修改
    vim总结
    分布式的CAP理论
    MongoDB常用命令总结
    nginx负载均衡总结
    【重要】nginx location配置和rewrite写法
    Linux四剑客find/grep/awk/sed
    IDEA插件开发总结
    支付宝在线支付接口开发流程
    Centos7 网卡Device does not seem to be present解决办法
  • 原文地址:https://www.cnblogs.com/johnsonliu3/p/8205440.html
Copyright © 2011-2022 走看看