一、核心组件
| 组件名称 | 作用说明 |
| HDFS (Hadoop Distributed File System) | 分布式文件系统,Hadoop 核心存储,将超大文件切块(默认128MB),多副本存储在不同节点上,保证数据高容错和高吞吐。 主从架构,包含 NameNode(管理元数据)和 DataNode(存储实际数据)。 |
| YARN(Yet Another Resource Negotiator) | 新一代资源管理框架,将资源管理和任务调度/监控分离,允许多个计算框架(如:MapReduce、Spark、Flink等)同时高效运行在同一个物理集群上。 主从架构,包含 ResourceManager(全局资源管理)和 NodeManager(单节点任务执行)。 |
| MapReduce | 经典离线批处理计算框架,将任务分为 Map(映射/分拆) 和 Reduce(归约/汇总) 两阶段并行处理 |
|---|
二、文件存储格式
| 文件格式 | 存储模型 | 压缩比 | 查询性能 | 写入性能 | Schema 管理 | 生态兼容性 | 典型场景 |
|---|---|---|---|---|---|---|---|
| Parquet | 列式存储 | 高 | 列裁剪、谓词下推,分析查询极快 | 中等(需组织列数据) | 内置 Schema,支持复杂嵌套结构 | 极广(Spark、Hive、Impala、Presto、Flink 等均有深度优化) | 数据分析、BI 报表、ETL 中间结果存储 |
| ORC | 列式存储(优化) | 极高(通常优于 Parquet) | 内置轻量级索引(布隆过滤器)、统计信息,查询最快 | 中等 | 内置 Schema,支持类型演化 | 深度绑定 Hive,Spark 支持良好 | Hive 大表分析,需高效过滤和聚合的场景 |
| Avro | 行式存储 | 低 | 整行读取快,但分析查询慢(需读全行) | 高(顺序追加写入快) | Schema 动态跟踪,支持演化且语言无关 | 极广(Kafka、Flume、Spark、Hive 等) | 数据采集管道、消息队列、RPC 传输、Schema 频繁演化场景 |
| SequenceFile | 行式存储(KV 对) | 中等 | 按 Key 顺序读取,无随机访问 | 高(顺序写入) | 无 Schema,仅存 Key/Value 二进制 | Hadoop 原生支持,兼容所有 MR 生态工具 | MapReduce 中间结果、数据合并、小文件归档 |
| TextFile | 行式存储(纯文本) | 无/低 | 全表扫描,无条件过滤 | 极高(直接追加) | 无 Schema,需手工解析 | 所有工具通用 | 原始日志、数据导入导出、可读性要求高的临时数据 |
| RCFile | 行列混合(早期) | 中等 | 先按行分片,片内按列存,查询性能介于行式和列式之间 | 中等 | 需配合 Hive SerDe | Hive 早期生态 | Hive 早期格式,已被 ORC/Parquet 取代 |
三、NoSQL 数据库
| 分类 | 代表数据库 | 数据模型 | 核心功能与优势 | 典型区别与适用场景 |
|---|---|---|---|---|
| 键值存储 (Key-Value) | Redis | 简单的 Key-Value 对 | 内存级读写,支持丰富数据结构(字符串、哈希、列表、集合等),常用于缓存、消息队列、实时计数。 | 最快但查询方式最单一。只能通过 Key 精准查 Value,无法对 Value 的内容(如某个字段)做条件过滤。适合高并发低延迟的缓存、会话管理。 |
| Amazon DynamoDB | 托管式键值/文档数据库,无缝弹性伸缩,低延迟,全托管免运维。 | |||
| Memcached | 纯内存缓存系统,极致简单和高速,但数据不持久化,重启丢失。 | |||
| 文档存储 (Document) | MongoDB | JSON/BSON 文档 | 灵活的 Schema,支持对文档内字段建索引和丰富的查询(范围、模糊、嵌套字段)。 | 查询能力远超键值库,能按文档内容检索。无需像关系库那样预先定义所有列,适合快速迭代、内容管理、用户资料。 |
| Couchbase | 融合内存缓存层与持久层,高性能,支持 SQL 查询和全文搜索。 | |||
| Elasticsearch | 本质是搜索引擎,但可作为文档数据库用,在全文检索、日志分析领域是事实标准。 | |||
| 列族存储 (Wide-Column) | Apache HBase | 行键 + 列族 + 列限定符 | 海量稀疏数据,强一致随机读写,万亿行百万列仍保持低延迟,与 Hadoop 生态深度集成。 | 为海量数据的扫描分析而生,但无多表关联。数据按行键范围分区,一张大表里不同行可包含完全不同的列。适合用户画像库、时间序列、日志明细。 |
| Apache Cassandra | 无中心节点,高可用线性扩展,多活数据中心支持,写性能优秀,无单点故障。 | |||
| ScyllaDB | Cassandra 的 C++ 重写版,异步无锁设计,极致的低延迟与高吞吐。 | |||
| 图数据库 (Graph) | Neo4j | 节点 (Node) + 边 (Relationship) | 原生图存储与遍历,用 Cypher 图查询语言,深度关联查询(N 度人脉)性能是关系库的千倍。 | 专为处理复杂关系网络而生。在处理人与人、交易与交易之间的复杂拓扑关系时,不像 SQL 那样做昂贵的多次 JOIN。适合图谱、风控、社交网络。 |
| JanusGraph | 分布式、可扩展的开源图数据库,可对接 HBase/Cassandra 作为后端存储,适合海量图数据。 | |||
| Amazon Neptune | 全托管图数据库,支持属性图和 RDF 两种模型。 |
四、主流 MPP 查询引擎
| 引擎 | 定位与特点 | 数据模型 | 性能优势 | 优势场景 | 与 Hadoop 生态关系 |
|---|---|---|---|---|---|
| Impala | Hadoop 原生 MPP SQL 引擎 | 结构化(依赖 Hive Metastore) | 基于 C++ 的守护进程,中间结果流式传递,避免 MR 的落地开销 | 交互式即席查询,BI 报表 | 紧耦合 HDFS/HBase/Kudu,共享 Hive 元数据 |
| Presto / Trino | 联邦查询 MPP 引擎 | 关系型,连接器模式 | 全内存并行计算,纯计算引擎无存储 | 跨数据源联合查询(联表 Hive 与 MySQL) | 可对接 Hive、HDFS、各类关系型数据库及 NoSQL |
| Drill | 无模式 MPP SQL 引擎 | 半结构化/嵌套数据优先 | 原生支持 JSON/Parquet 等复杂嵌套结构,无需提前定义 Schema | 探索式分析,日志/JSON 文件直接查询 | 直接读写 HDFS、HBase、S3 等 |
| ClickHouse | 极致单表分析 MPP 数据库 | 列式,宽表 | C++ 向量化执行,极高的压缩比和单表聚合/过滤吞吐 | 用户行为分析,实时数据看板,时序分析 | 非 Hadoop 原生,独立部署,可通过外表或联邦查询方式读取 HDFS/Hive 数据 |
| StarRocks / Doris | 新一代实时分析 MPP 数据库 | 列式,预聚合模型 | MPP + 向量化,CBO 优化器多表关联性能极佳,支持高并发和实时更新 | 实时报表,固定看板,多维度 Cube 分析,高并发 API 服务 | 可直查 HDFS 外部表,支持从 Hive 同步元数据,构建湖仓一体 |
| HAWQ | Hadoop 原生 MPP 数据库(GP 变体) | 关系型,支持事务 | 基于 PostgreSQL 内核,提供 ACID 事务和标准 SQL 兼容性 | 需要在 Hadoop 上运行复杂 ETL 且要求事务一致性的场景 | 直接在 HDFS 上存储,用 YARN 调度资源 |
| Greenplum | 开源 MPP 数据仓库 | 关系型,支持事务 | 基于 PostgreSQL,支持高并行复杂查询与混合负载 | 企业数据仓库(EDW),复杂 ETL,建模分析 | 可接入 HDFS 外部表,解耦部署 |
五、数据采集
| 分类 | 工具名称 | 核心功能与特点 | 适用场景 |
|---|---|---|---|
| 日志/文件采集 | Flume | 分布式、高可靠;采用Source-Channel-Sink架构,支持数据路由和故障转移 | 海量日志实时聚合,如服务器日志流向HDFS/Kafka |
| Fluentd | C/Ruby开发,用JSON统一日志格式;插件机制灵活,配置相对简单 | 统一日志处理,适合需要灵活插件扩展的场景 | |
| Logstash | ELK技术栈中的"L";集采集、过滤、转换于一体,与Elasticsearch天然集成 | 日志采集+搜索分析,配合ES和Kibana使用 | |
| Scribe | Facebook开发,高容错方案;故障时日志暂存本地,恢复后重传 | 曾与Hadoop配合使用,目前已较少使用 | |
| Chukwa | 针对Hadoop集群自身的监控日志采集;含Agent和Collector组件 | Hadoop集群运维监控日志收集(已不活跃) | |
| 数据库同步 | Sqoop | 基于MapReduce并行传输;支持关系型数据库↔Hadoop双向导入导出 | MySQL/Oracle等与HDFS/Hive之间的批量数据迁移 |
| DataX | 阿里开源,支持异构数据源;插件式适配多种数据库和存储系统 | 关系型数据库、NoSQL等异构数据源间批量同步 | |
| Canal | 阿里开源,模拟MySQL Slave获取增量变更日志,实时推送至Kafka/HBase等 | 增量数据实时同步(如MySQL变更即时捕获) | |
| 消息/流数据 | Kafka | 高吞吐分布式发布订阅,持久化存储,充当数据流总线 | 实时流数据中枢,接收各端数据供下游消费 |
| Pulsar | 新一代消息系统,支持多租户、存算分离、分层存储 | 云原生消息流平台,替代Kafka的场景 | |
| Storm | 逐条处理的原生实时流计算,延迟极低,适合需要毫秒级响应但状态管理较简单的场景。 | ||
| Flink | 流批一体的有状态实时计算,亚秒级延迟,原生支持精确一次语义和事件时间,是当前实时计算的事实标准。 | ||
| Spark Streaming | 将实时数据切成微批次进行处理的准实时流计算,适合与 Spark 生态深度集成的秒级延迟场景。 | ||
| Apex | 企业级原生流处理引擎,基于 YARN 运行,支持有状态计算和低延迟处理,但社区活跃度较低。 | ||
| 网页/爬虫 | Nutch | 基于Hadoop的分布式爬虫,可扩展大规模网站抓取 | 全网或垂直领域数据抓取 |
| Scrapy | 由Python编写,快速轻量,架构灵活易于扩展 | 中小规模定制的网页结构化信息提取 | |
| 通用/商业平台 | NiFi | 数据流自动化工具。可视化拖拽界面,支持实时采集、路由和转换 | 复杂多源数据管道编排,低代码管理 |
| StreamSets | 可视化数据管道设计器,拖拽式布线,实时监控 | 数据流水线快速构建与运维 | |
| Splunk | 商业产品,集采集、存储、分析和展示于一体 | 企业级统一数据平台(IT运维、安全分析等) |
六、数据仓库与SQL查询
| 特性维度 | Hive | Spark (SQL) | Phoenix | Kylin |
|---|---|---|---|---|
| 核心定位 | 离线数据仓库 SQL 工具 | 通用内存计算引擎的 SQL 模块 | HBase 上面的 SQL 层 | 预计算 OLAP 分析引擎 |
| 查询延迟 | 分钟级(高延迟) | 秒~分钟级(中低延迟) | 毫秒级(极低延迟) | 亚秒级(极低延迟) |
| 处理模式 | 翻译为 MR/Tez/Spark 作业,真正的后台批处理 | 内存 DAG 计算,中间结果在内存中 | SQL 编译为 HBase 协处理器代码直接执行 | 查询时直接命中预计算 Cube 结果 |
| 数据量级 | PB 级 | PB 级 | 十亿行级别 | 百亿行级别 |
| 存储依赖 | HDFS / 对象存储 | 任何 Hadoop 文件系统(可查 Hive 表) | 强依赖 HBase | 多源(Hive、HBase、Kafka) |
| 并发能力 | 低(资源竞争严重) | 中等(支持多用户共享缓存) | 高(直接继承 HBase 的并发) | 高(直接读 Cube 数据,极少资源争用) |
| 优势场景 | 复杂 ETL 加工、日报/周报生成 | 交互式探索分析、复杂 SQL 和多迭代 ML | 高并发毫秒级点查、轻量级聚合 | 固定维度组合的大规模多维分析、KPI 看板 |
| 短板 | 无法做实时/近实时查询 | 批处理模式依然存在启动开销 | 多表关联/复杂聚合能力弱 | 灵活性差,维度组合需预先构建 |
七、任务调度系统
| 特性维度 | Oozie | Azkaban | Apache Airflow | DolphinScheduler |
|---|---|---|---|---|
| 核心定位 | Hadoop 原生工作流引擎 | 轻量级批量作业调度器 | 通用型可编程工作流平台 | 可视化分布式调度平台 |
| DAG 定义方式 | XML 文件(编写复杂) | Properties 文件(Key-Value 对) | Python 脚本(代码即配置,灵活强大) | 可视化拖拽 + 代码片段(低门槛) |
| 调度触发 | 时间周期、数据就绪触发 | 时间周期、手动触发、依赖触发 | 时间周期、传感器(Sensor)、外部触发 | 时间周期、依赖、条件、手动触发 |
| 架构特点 | 重量级,强依赖 Hadoop 生态 | 轻量级,单点执行器 + Web 服务器 | 模块化核心调度器 + Celery/K8s 执行器 | 去中心化多 Master 多 Worker |
| 任务类型 | 专为 Hadoop 设计(MR/Pig/Hive/Spark) | 原生支持 Hadoop Jobs、Shell/Python 命令 | 无限扩展(Operator 插件支持几乎任何任务) | 内置 Shell、SQL、Spark、Flink 等多种任务 |
| 高可用 | 需外部配合(基于 ZooKeeper) | 较薄弱(Executor 单点风险) | 支持(分布式执行器、数据库后端) | 原生去中心化,多 Master 容错 |
| 用户界面 | Web UI 较老旧,操作复杂 | Web UI 简洁,但功能少 | Web UI 丰富现代,含甘特图、树状视图 | Web UI 美观流畅,可视化 DAG 拖拽 |
| 补数与重试 | 支持被动/主动重试 | 支持手动重新执行失败作业 | 支持强大的回填和失败重试机制 | 支持一键补数(历史数据重跑) |
| 适用场景 | 早期深度绑定 Hadoop 的 ETL | 简单批处理作业,无扩展开发需求 | 复杂异构系统的数据工程全生命周期 | 企业级大数据平台统一调度 |
八、集群管理与监控工具总览
| 分类 | 工具名称 | 核心功能与特点 | 适用场景 |
|---|---|---|---|
| 原生管理平台 | Ambari | Hadoop 生态官方管理工具;提供 Web UI 进行集群安装、配置、管理和监控;支持可视化的服务启停和仪表盘 | Apache 开源版 Hadoop 集群的统一运维管理 |
| Cloudera Manager | Cloudera 发行版配套工具;功能比 Ambari 更强大,支持自动化部署、诊断、调优和版本升级 | CDH/CDP 集群的企业级管理 | |
| Hortonworks SmartSense | Hortonworks 的智能诊断工具;采集集群日志和指标,提供问题分析和优化建议 | 原 HDP 集群的预防性维护和故障排查 | |
| 监控与告警 | Ganglia | 分布式集群监控系统;采集 CPU、内存、网络、磁盘等系统级指标,以曲线图展示 | 实时查看集群各节点的资源负载状态 |
| Nagios | 老牌 IT 基础设施监控工具;插件丰富,支持邮件/短信告警 | 服务可用性监控和告警通知 | |
| Zabbix | 企业级开源监控平台;采集、存储、可视化和告警一体化,支持自动发现 | 大规模服务器和网络设备的综合监控 | |
| Prometheus | 云原生时代事实标准的监控系统;基于时序数据库,配合 Grafana 实现美观仪表盘 | 现代分布式系统、K8s 环境的指标监控 | |
| Grafana | 可视化仪表盘工具;可对接 Prometheus、Zabbix、Elasticsearch 等多种数据源 | 跨平台的统一监控数据可视化展现 | |
| 日志采集与分析 | ELK Stack | Elasticsearch + Logstash + Kibana 三件套;核心是集中日志收集、索引搜索和可视化分析 | 分布式系统日志的集中式查询和故障追因 |
| Graylog | 开源日志管理平台;类似 ELK 但一体化程度更高,安装配置相对简化 | 中小规模日志集中管理和告警 | |
| 安全与治理 | Ranger | 集中式安全管理框架;通过 Web UI 对 HDFS、Hive、HBase 等组件设置细粒度访问策略 | 多租户集群的统一权限管控和审计 |
| Knox | Hadoop REST API 网关;提供统一认证授权和 SSL 加密,屏蔽集群内部细节 | Hadoop 集群对外的安全访问边界 | |
| Kerberos | 网络认证协议;为 Hadoop 集群提供客户端与服务端的双向身份认证 | 集群安全模式的根基,防止未授权访问 | |
| Atlas | 元数据治理与数据血缘平台;提供数据分类、血缘追踪和标签策略 | 数据资产管理和合规审计 | |
| 综合管理平台 | Datadog | 商业 SaaS 监控平台;全栈监控(基础设施、应用、日志),适合云和混合环境 | 无专属运维团队时的开箱即用选择 |
| New Relic | 应用性能监控(APM)商业工具;代码级诊断,追踪慢事务 | 业务系统性能瓶颈定位 |