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:分治模型
- Map:分片并行处理,输出 <K,V>
- Shuffle:分区、排序、网络传输
- 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 树(关键)
- 写流程
- Client → RegionServer
- WAL(预写日志):保证宕机不丢
- MemStore:内存跳表(SkipList),极高写入吞吐
- 满了 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)核心技术(性能关键)
-
全向量化执行引擎
- 按列批量处理,CPU 缓存友好、SIMD 指令优化
- 比传统行式执行快 5–10 倍
-
列式存储 + 高效编码
- 列存:只扫描需要的列,压缩率高(LZ4/ZSTD)
- 支持实时更新(主键 Upsert)
-
MPP 并行执行
- 查询拆成多个 Fragment,多节点并行
- 支持两阶段 Shuffle,复杂聚合 / Join 极快
-
智能索引
- 前缀索引、ZoneMap、布隆过滤器、Bitmap 索引
- 高基数低基数都快
-
湖仓一体
- 直接查询 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)
(2)核心原理:向量相似度检索
- 向量 Embedding
- 文本 / 图像 / 音频 → 模型(BERT/Claude/ResNet)→ 高维浮点向量
- 相似度计算
- 余弦相似度(文本常用)、欧氏距离(L2)、内积(IP)
- ANN 索引(核心)
- HNSW(层次化小世界图)
- 多层有向图,贪婪搜索
- 速度极快、召回率高,内存占用大
- IVF(倒排文件)
- 聚类分桶,先查桶再精查
- 磁盘友好、支持百亿级向量
- DiskANN、SCANN、PQ 量化:压缩、磁盘优化
- HNSW(层次化小世界图)
- Knowhere 引擎
- 统一封装 Faiss/HNSWlib/Annoy,支持 CPU/GPU 异构计算Milvus
(3)写入与查询
- 写入:日志(Pulsar)→ 内存 → 落盘 → 后台建索引
- 查询:标量过滤 + 向量检索 → 结果排序返回
三、四大组件核心差异对比表
表格
| 维度 | Hadoop | HBase | StarRocks | Milvus |
|---|---|---|---|---|
| 本质 | 分布式文件系统 + 计算平台 | 分布式 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 做轻量场景,完全覆盖求职与工作需求。
要不要我把这四个组件的核心原理、读写流程、面试题整理成一份可直接背诵的一页速记清单?





浙公网安备 33010602011771号