StarRocks、Hadoop、Hbase、Milvus数据库区别,详细的底层原理是什么?

你提到的这四个技术(StarRocks、Hadoop、HBase、Milvus)定位完全不同:Hadoop 是大数据底层平台、HBase 是分布式 KV / 宽表、StarRocks 是实时 OLAP 数仓、Milvus 是向量数据库。下面从定位、核心原理、架构、适用场景、关键区别五个维度详细对比。
 

 

一、整体定位与核心区别(一句话总结)

 

1. Hadoop

 
  • 定位:分布式存储 + 分布式计算的底层平台(生态底座)
  • 核心:HDFS(存储)+ MapReduce/YARN(计算调度)
  • 擅长:海量文件存储、离线批处理、高吞吐、高可靠
  • 不擅长:低延迟查询、随机读写、SQL 分析
 

2. HBase

 
  • 定位:分布式、可扩展、高可靠的 NoSQL 键值数据库(基于 HDFS)
  • 核心:LSM 树、RowKey 有序、海量 KV / 宽表、高并发写入
  • 擅长:海量结构化 / 半结构化数据、高并发读写、随机点查、时序数据
  • 不擅长:复杂 SQL、多表关联、聚合分析
 

3. StarRocks

 
  • 定位:新一代实时 MPP 分析型数据仓库(OLAP)
  • 核心:MPP + 向量化执行 + 列式存储 + 实时更新
  • 擅长:亚秒级 SQL 分析、多表关联、大宽表聚合、实时数据写入、湖仓一体
  • 不擅长:超高并发单行随机写入、超长字段大对象存储
 

4. Milvus

 
  • 定位:云原生向量数据库(专门存高维向量、做相似度检索)
  • 核心:ANN 近似最近邻索引(HNSW/IVF)、向量计算引擎
  • 擅长:文本 / 图像 / 音频相似度检索、RAG、推荐、特征搜索
  • 不擅长:结构化数据、SQL、事务、复杂分析
 

 

二、底层原理与架构详解

 

1. Hadoop 核心原理(HDFS + YARN/MapReduce)

 
Hadoop 不是数据库,是分布式基础设施。
 

(1)HDFS 分布式文件系统

 
  • 架构:主从(Master-Slave)
     
    • NameNode:元数据管理(文件路径、块映射、权限),内存全量元数据
    • DataNode:存实际数据块(默认 128MB),3 副本容错
    • SecondaryNameNode:合并 EditLog + FSImage,辅助 checkpoint
       

      image

       

       
     
  • 核心原理
     
    • 一次写入、多次读取:不支持随机修改,只支持追加
    • 数据本地性:移动计算比移动数据便宜
    • 大文件优化:适合 TB/PB 级文件,不适合海量小文件
    • 高可靠:副本机制、机架感知、自动故障恢复
     
 

(2)MapReduce / YARN 计算

 
  • MapReduce:分治模型
    1. Map:分片并行处理,输出 <K,V>
    2. Shuffle:分区、排序、网络传输
    3. Reduce:全局聚合
     
  • YARN:资源调度(ResourceManager + NodeManager)
    • 统一管理集群 CPU / 内存,调度各类计算框架(MapReduce/Spark/Flink)
     
 

2. HBase 核心原理(基于 HDFS 的 NoSQL)

 
HBase = Google BigTable 的开源实现,构建在 HDFS 之上。
 

(1)整体架构

 
  • HMaster:集群管理(DDL、Region 分配、负载均衡、故障恢复)
  • RegionServer:数据读写节点(核心)
  • ZooKeeper:协调、元数据入口、主备选举
  • 底层存储:HDFS(持久化)
     

    image

     

     
 

(2)数据模型(宽表 / 多维 KV)

 
plaintext
 
 
RowKey → 列族:列 → 版本 → 值
 
 
  • RowKey 有序:字典序,查询完全依赖 RowKey 设计
  • 列族(Column Family):物理隔离,一起存储
  • 版本(Timestamp):自动多版本,可配置保留策略
 

(3)存储引擎:LSM 树(关键)

 
  • 写流程
    1. Client → RegionServer
    2. WAL(预写日志):保证宕机不丢
    3. MemStore:内存跳表(SkipList),极高写入吞吐
    4. 满了 Flush → HFile(HDFS 上的有序列存文件)
     
  • 读流程
    • 先查 MemStore → BlockCache(读缓存)→ HFile
    • HFile 内:有序、索引、布隆过滤器 → 快速定位
     
  • Compaction:定期合并小 HFile,减少查询 IO
 

(4)分片机制

 
  • Region:表按 RowKey 范围水平切分
  • 自动分裂(Split)、自动合并、负载均衡
 

3. StarRocks 核心原理(MPP OLAP)

 
定位:实时分析数据库,替代 Impala/Presto/Hive,支持高并发 SQL + 实时更新。
 

(1)架构:Shared-Nothing MPP

 
  • FE(Frontend)
     
    • SQL 解析、查询优化、执行计划、元数据管理
    • 多副本(Leader/Follower/Observer),无单点
     
  • BE(Backend)
     
    • 数据存储 + 计算执行
    • 数据分片(Tablet),多副本(默认 3)
       

      image

       

       
     
  • 两种部署模式
     
    • 存算一体(默认):BE 本地存数据,性能最优StarRocks
    • 存算分离:数据放对象存储 / HDFS,CN 纯计算,弹性扩缩StarRocks
     
 

(2)核心技术(性能关键)

 
  1. 全向量化执行引擎
     
    • 按列批量处理,CPU 缓存友好、SIMD 指令优化
    • 比传统行式执行快 5–10 倍
     
  2. 列式存储 + 高效编码
     
    • 列存:只扫描需要的列,压缩率高(LZ4/ZSTD)
    • 支持实时更新(主键 Upsert)
     
  3. MPP 并行执行
     
    • 查询拆成多个 Fragment,多节点并行
    • 支持两阶段 Shuffle,复杂聚合 / Join 极快
     
  4. 智能索引
     
    • 前缀索引、ZoneMap、布隆过滤器、Bitmap 索引
    • 高基数低基数都快
     
  5. 湖仓一体
     
    • 直接查询 Hive/ICEBERG/HDFS 数据,无需导入
     
 

4. Milvus 核心原理(向量数据库)

 
专门存储高维向量(如 768/1536 维),做 近似最近邻(ANN) 相似度搜索。
 

(1)架构:存算分离、云原生

 
  • image

     

    Access Layer(Proxy):无状态网关、API、负载均衡
  • Coordinator Layer:RootCoord/DataCoord/QueryCoord(调度)
  • Execution Layer
    • DataNode:写入、日志、Flush
    • QueryNode:查询、向量计算
    • IndexNode:构建索引
     
  • Storage Layer
    • 元数据:etcd
    • 日志:Pulsar
    • 向量 / 标量:对象存储(S3/MinIO/HDFS)
       
      image
       
     
 

(2)核心原理:向量相似度检索

 
  • 向量 Embedding
    • 文本 / 图像 / 音频 → 模型(BERT/Claude/ResNet)→ 高维浮点向量
     
  • 相似度计算
    • 余弦相似度(文本常用)、欧氏距离(L2)、内积(IP)
     
  • ANN 索引(核心)
    1. HNSW(层次化小世界图)
      • 多层有向图,贪婪搜索
      • 速度极快、召回率高,内存占用大
       
    2. IVF(倒排文件)
      • 聚类分桶,先查桶再精查
      • 磁盘友好、支持百亿级向量
       
    3. DiskANN、SCANN、PQ 量化:压缩、磁盘优化
     
  • Knowhere 引擎
    • 统一封装 Faiss/HNSWlib/Annoy,支持 CPU/GPU 异构计算Milvus
     
 

(3)写入与查询

 
  • 写入:日志(Pulsar)→ 内存 → 落盘 → 后台建索引
  • 查询:标量过滤 + 向量检索 → 结果排序返回
 

 

三、四大组件核心差异对比表

 
表格
 
维度HadoopHBaseStarRocksMilvus
本质 分布式文件系统 + 计算平台 分布式 NoSQL 宽表数据库 实时 MPP OLAP 数据仓库 向量相似度数据库
数据类型 文件(非结构化) 结构化 / 半结构化(KV / 宽表) 结构化(表、SQL) 高维向量 + 少量标量
查询接口 HDFS API、MapReduce、Spark Java API、Thrift、HBase Shell 标准 SQL(MySQL 协议) SDK(Java/Python)、REST
存储结构 块(Block) LSM 树、HFile、RowKey 有序 列式存储、Tablet 分片 向量 + 标量、索引文件
核心索引 无(文件路径) RowKey 前缀、布隆过滤器 前缀、ZoneMap、Bitmap HNSW、IVF、PQ、DiskANN
写入性能 高吞吐(离线) 极高(百万 TPS) 高(实时流批一体) 高(流式写入)
查询性能 慢(分钟 / 小时) 快(ms 点查) 极快(亚秒级 SQL) 快(ms 级 ANN 检索)
事务 行级事务、最终一致 主键 Upsert、部分 ACID 无(最终一致)
SQL 支持 弱(Hive) 极弱(Phoenix) 完整 SQL、JOIN、子查询 几乎无(简单过滤)
依赖 自身(HDFS/YARN) HDFS + ZooKeeper 无(极简) etcd + Pulsar + 对象存储
典型场景 数据仓库底座、离线计算 用户画像、订单、时序、Feeds 实时报表、用户分析、大屏 RAG、推荐、图像 / 文本检索
 

 

四、适用场景与选型建议

 

1. 选 Hadoop

 
  • 需要海量文件存储、离线批处理、数据湖底座
  • 作为 HBase/Hive/Spark/Flink 的底层存储
 

2. 选 HBase

 
  • 高并发随机读写、海量 KV、宽表、时序数据
  • 例如:用户画像、订单明细、IM 消息、监控指标、风控日志
 

3. 选 StarRocks

 
  • 实时 OLAP、复杂 SQL、多表 JOIN、大宽表聚合、实时报表
  • 替代:Hive、Impala、ClickHouse(部分场景)
  • 场景:用户行为分析、销售大屏、实时风控、湖仓分析
 

4. 选 Milvus

 
  • 字符串 / 文本相似度、语义搜索、RAG、推荐、图像 / 音视频检索
  • 你之前关心的 Java + 字符串相似度 场景:Milvus 是专业首选
 

 

五、面试高频考点(必掌握)

 

Hadoop

 
  • HDFS 读写流程、NameNode 内存机制、副本策略
  • MapReduce 执行流程、Shuffle 原理
  • YARN 调度机制
 

HBase

 
  • LSM 树原理、MemStore/HFile/WAL 作用
  • RowKey 设计原则(散列、有序、长度)
  • 读写流程、Region 分裂、Compaction 机制
  • 与 HDFS 的关系
 

StarRocks

 
  • MPP 与 Shared-Nothing
  • 向量化执行原理、列存优势
  • 实时更新实现、索引类型
  • 存算一体 vs 分离
 

Milvus

 
  • 向量检索原理、ANN vs KNN
  • HNSW vs IVF 索引对比、选型
  • 向量维度、相似度函数(余弦 / L2)选择
  • Java SDK 使用、大规模性能优化
 

 

六、总结(回到你的 Java 开发场景)

 
  • 做字符串相似度 / RAG / 推荐 → Milvus(专业、面试热点、Java SDK 完善)
  • 做实时报表 / 用户分析 / SQL 数仓 → StarRocks(当前最火 OLAP,Java 生态友好)
  • 做海量 KV / 高并发写入 / 宽表 → HBase
  • 做大数据底层存储 / 离线处理 → Hadoop
 
你之前问的向量数据库选型:Milvus 是工业界事实标准,搭配 pgvector 做轻量场景,完全覆盖求职与工作需求。
 
要不要我把这四个组件的核心原理、读写流程、面试题整理成一份可直接背诵的一页速记清单?
posted @ 2026-04-05 23:23  飘来荡去evo  阅读(3)  评论(0)    收藏  举报