求问:为什么 hbase 对大数据的支持比 mongo 好这么多? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
forPandaria

求问:为什么 hbase 对大数据的支持比 mongo 好这么多?

  •  1
     
  •   forPandaria 2021 年 2 月 15 日 3433 次点击
    这是一个创建于 1892 天前的主题,其中的信息可能已经有所发展或是发生改变。

    若 mongo 只创建一个索引,那么 mongo 索引锁占用的空间只是多了一点吧?

    我大致看了 hbase 和 mongo 的分片原理,但也没发现可能的原因。 数据量过大时,读 /写请求都是会路由到某一个机器上去处理。 而在目标机器的单个分片中,hbase 采用 lsm 树,mongo 采用 b 树。

    这些差别虽然有,但在对数据量的支持上,也不至于 hbase 比 mongo 高出一个数量级吧?

    恳请大佬解惑!

    18 条回复    2021-02-20 00:12:55 +08:00
    vjnjc
        1
    vjnjc  
       2021 年 2 月 15 日
    个人看法:
    “感觉对大数据的支持”这个意思是对分析型大数据的支持,对于分析型需求的话不需要查所有 column,hbase 是列存储天然支持这个场景。mongo 更多用在在线业务的后端上面,和分析型数据 query (大数据)需求场景不一样。
    F281M6Dh8DXpD1g2
        2
    F281M6Dh8DXpD1g2  
       2021 年 2 月 15 日
    mongodb 是单机的
    forPandaria
        3
    forPandaria  
    OP
       2021 年 2 月 15 日
    @vjnjc 我表述有误,“大数据”只是单存地指数百 TB 以及 PB 级别的数据。
    forPandaria
        4
    forPandaria  
    OP
       2021 年 2 月 15 日
    @liprais mongodb 可以部署集群
    YouLMAO
        5
    YouLMAO  
       2021 年 2 月 15 日 via Android
    HBASE 我们家峰值几千万 QPS
    vjnjc
        6
    vjnjc  
       2021 年 2 月 15 日
    @forPandaria 请问你们用上 tb/pb 级的数据了吗?这个量级的数据是无法做在线功能的
    forPandaria
        7
    forPandaria  
    OP
       2021 年 2 月 15 日
    @vjnjc 我只是好奇,但从原理上看 mongodb 也可以构建上百台机器的集群,存储数百 tb 的数据。
    做好数据负载均衡,请求打到不同节点。这不应该是 hbase 能做到的,mongodb 一样做吗?

    我只接触过 hbase 集群,没有接触过 mongodb 集群,在网上查看相关信息都是说 mongo 要做到这样很难,所以就很好奇 [阿里云上 mongo 好像也是比 hbase 要贵很多吧?]
    SingeeKing
        8
    SingeeKing  
    PRO
       2021 年 2 月 15 日
    这俩比较的话感觉就是因为列式存储
    Jim2Chen
        9
    Jim2Chen  
       2021 年 2 月 15 日 via Android
    @YouLMAO 你们 hbase 集群有多大?单台机器配置如何?
    RedrumSherlock
        10
    RedrumSherlock  
       2021 年 2 月 15 日 via Android
    等等这俩就不是一类吧,一个是 column 一个是 document,根本设计和应用场景就不一样怎么比? hbase 是针对单列查询才快,你拿复杂多列查询到 hbase 上跑它也一样慢
    YouLMAO
        11
    YouLMAO  
       2021 年 2 月 15 日 via Android
    @RedrumSherlock 嗯啥? HBASE 就是多列,几万列,稀疏的,即一行通常只有其中数列有值
    RedrumSherlock
        12
    RedrumSherlock  
       2021 年 2 月 15 日 via Android
    @YouLMAO 当然可以多列,但是只有按主列查询的时候才最快,如果想在别的列上加 filter 查询也会慢下来
    forPandaria
        13
    forPandaria  
    OP
       2021 年 2 月 16 日
    @RedrumSherlock 您说的主列,是指其作为 key 吧。
    我前面有说“若 mongodb 只创建一个索引”。

    我疑惑的是,这样来看 mongo 应该也能很好地支持 hbase 那样大的数据量,但网上都是说 hbase 支持的量级要大的多。
    forPandaria
        14
    forPandaria  
    OP
       2021 年 2 月 16 日
    @RedrumSherlock
    我的理解是,hbase 能做到的,mongo 应该也一样可以做到。
    但为什么数据量超大的情况下,却只能选 hbase ?
    难道是在这种情况下 mongodb 性能退化严重吗?


    除了 “hbase 可以更好地支持 mapreduce” 这个理由之外, 还有其他理由吗?
    RedrumSherlock
        15
    RedrumSherlock  
       2021 年 2 月 16 日
    @forPandaria 对 HBase 不敢大放厥词,但是我觉得 Hbase 和 mangodb 底层的设计是大相径庭的,不像 postgres 和 mysql, oracle 那样都是一个框架下能够比较,就像你说的分片,hbase 是以列为最小粒度来分片的,mangodb 按我理解还是比较粗的来分片,这咋比?而且 mangodb 的索引和 hbase 的 row key 也不是一回事,所以这两者应用支持层面上比较一下还行,要来比较性能只能说 Hbase 天生就是给特定的大数据场景而设计的
    sampeng
        16
    sampeng  
       2021 年 2 月 16 日 via iPhone
    不用想你什么复杂的理由,一条就够了
    在你需要扩容的时候,加一台机器即可。啥都不需要做。
    vjnjc
        17
    vjnjc  
       2021 年 2 月 17 日
    @forPandaria 撇开 hbase 不计。光是 mongodb 就能满足很大规模的请求,用分库分表。
    forPandaria
        18
    forPandaria  
    OP
       2021 年 2 月 20 日
    @RedrumSherlock
    现在我能找到的就是:
    LSM 树相比 B 树在磁盘中的碎片更少,尤其是对于‘稀疏表’而言。
    这个应该算一个小点吧。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     954 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 111ms UTC 20:40 PVG 04:40 LAX 13:40 JFK 16:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86