HDFS BlockDoris Tablet 都是"把大数据切成小块",但切的逻辑完全不同。


一句话区别

HDFS Block 是"按斤切肉",不管肉是谁的,每块固定 128MB;

Doris Tablet 是"按户分粮",按家庭(分区)和人数(分桶)来分,一块就是一个完整的"小表"。


HDFS Block:按文件大小硬切

怎么切的?

你有一个 1GB 的文件,HDFS 说:"我不管这文件是什么内容,每 128MB 切一刀"。

1GB 文件 → 切成 8 块,每块 128MB Block-1: 文件的前 128MB(可能是 0~100万行) Block-2: 文件的 128MB~256MB(可能是 100万~200万行) ...

特点

  • 块大小固定(默认 128MB 或 256MB)

  • 块里没有业务含义,只是物理上的"一段字节"

  • 块里没有索引,查询时要扫描整个块

    形象比喻:印刷厂切纸

    出版社印了一本书,印刷厂不管章节内容,每 100 页切一刀

    • 第一刀:第 1~100 页

    • 第二刀:第 101~200 页

    • 第三刀:第 201~300 页

      问题:你要查"第三章在讲什么",可能第三章正好跨在第 100 页和第 101 页之间,你得把两块都拿来看。


    Doris Tablet:按业务逻辑分

    怎么切的?

    Doris 说:"我不按文件大小切,我按数据逻辑切"。

    比如你的订单表有 10 亿条数据,按时间分区(每天一个分区)+ 哈希分桶(按 user_id 取模分 16 桶):

    2024-01-01 的数据 → 分成 16 个 Tablet Tablet-1: user_id 模16=0 的订单 Tablet-2: user_id 模16=1 的订单 ... Tablet-16: user_id 模16=15 的订单 2024-01-02 的数据 → 再分成 16 个 Tablet ...

    特点

    • 每块 Tablet 是一个完整的、独立的小表,有自己的 schema、索引、统计信息

    • 大小不固定,通常几百 MB 到 1GB

    • 查询时可以精准定位:"查 user_id=123 的数据?直接去 Tablet-11,别的 Tablet 不用看"

      形象比喻:图书馆按主题分书架

      图书馆有 100 万本书,不是按"每 100 本一堆"随便堆,而是:

      • 楼层分:1 楼文学、2 楼科技、3 楼历史(这就是分区

      • 书架分:科技楼里,A 架计算机、B 架生物、C 架物理(这就是分桶

      • 你要找《Java 编程》,直接去 2 楼 A 架,别的书架根本不用看。


      核心差异对比

      HDFS Block

      Doris Tablet

      切法

      按文件大小硬切(128MB/块)

      按业务逻辑切(分区+分桶)

      里面是什么

      一段无意义的字节

      一个带索引、带统计的"小表"

      查询时

      可能扫整个文件,不知道数据在哪

      精准定位到某个 Tablet,别的跳过

      副本

      存 3 份同样的字节块

      存多份,每份都能独立参与计算

      适合

      纯存储大文件(日志、视频、备份)

      实时分析(带条件的查询、聚合)


      为什么这个区别很重要?

      HDFS Block 的问题

      假设你要查:"2024 年 1 月 1 日,用户 123 的订单金额"。

      HDFS 里:

      • 数据存在某个 128MB 的 Block 里

      • 但 HDFS 不知道"用户 123"在哪,甚至不知道哪些 Block 里有 2024-01-01 的数据

      • 只能把相关文件的所有 Block 都读一遍,全表扫描

        Doris Tablet 的优势

        Doris 里:

        • 先找分区:2024-01-01 的数据只在某些 Tablet 里 → 跳过其他 364 天的数据

        • 再找分桶:user_id=123 只落在某个特定 Tablet 里 → 跳过其他 15 个桶

        • 最后在这个 Tablet 里用索引快速定位到具体行

          可能从 10 亿条数据里,只读了几千条就找到结果。


          一句话记忆版

          HDFS Block 是"物理切块",只知道"这是文件的第几段";Doris Tablet 是"逻辑分片",自带索引和边界,知道"这里存的是哪天的、哪个用户的数据"。

          前者是存储系统的分块方式,后者是数据库的分片方式 >> 目的不同,设计自然不同。

          更多推荐