一、什么是hadoop
Hadoop是由Apache基金会所开发的分布式系统基础架构,旨在解决海量数据存储和计算分析问题。狭义上来说,Hadoop是指Apache Hadoop开源框架,包含以下三种核心组件:
- Hadoop HDFS(Hadoop Distributed File System):分布式文件存储系统,解决海量数据存储问题。
- Hadoop Yarn:集群资源管理和任务调度框架,解决资源任务调度问题。
- Hadoop MapReduce:分布式计算框架,解决海量数据计算问题。
广义上来说,Hadoop通常是指围绕Hadoop打造的大数据生态圈
Hadoop官网:hadoop.apache.org
二、hadoop优势特点
- 低成本
Hadoop可以由多台廉价普通机器组成,支持TB和PB级别数据存储,并不需要运行在昂贵且高可靠性的硬件上。
- 高可靠、容错性
HDFS中数据存储有多副本支持数据高可靠性,即使一些副本出现故障也能保障数据可使用。MapReduce计算过程中任务失败,可以自动进行任务重新分配进行任务重试。此外,HDFS和Yarn都支持高可用配置,当主节点挂掉时,可以自动选主切换,保证集群可靠性。
- 高扩展性
Hadoop集群可以扩展到上千个节点以支持数据存储和计算,节点多支持数据量大、支持更大并行度的并行计算。
- 高效性
Hadoop可以并行在节点之间动态移动数据,保证各个节点数据动态平衡;基于MapReduce进行数据处理计算时,可以并行处理数据,效率极高。
三、大数据技术生态体系
3.1 数据采集技术框架
3.1.1 日志采集框架
Flume、Logstash和FileBeat常用于日志数据实时监控采集;
-
Filebeat 像轻量快递员——只负责把日志文件原样搬走,资源占用极低;
-
Logstash 像全能加工厂——搬的同时还能解析、过滤、转换、富化,但吃内存;
-
Flume 像可靠物流线——天生对接 Hadoop/Kafka,分布式、容错、吞吐高,但配置复杂。
维度 | Filebeat | Logstash | Flume |
---|---|---|---|
资源占用 | 10 MB 级,CPU 低 | JVM 级,>100 MB | JVM 级,中等 |
部署形态 | 单进程、二进制即启 | 单机/集群,需 JVM | 分布式 Agent |
数据处理能力 | 几乎无,可加轻量 script | 强大(Grok、Date、Mutate 等 200+ filter) | 有限(拦截器+正则) |
输出生态 | ES、Kafka、Redis、Logstash… | 几乎万能(ES、DB、MQ、HTTP…) | HDFS、Kafka、HBase、Hive… |
容错机制 | 本地磁盘队列,ACK 重传 | 持久化队列、死信队列 | 基于 Channel 的事务、本地磁盘 |
典型场景 | 边缘节点、容器、主机 | 中心汇聚、ETL、富化 | 离线/实时入湖、Kafka 总线 |
如何决策?
3.1.2 关系型数据库离线数据采集
Sqoop和Datax常用于关系型数据库离线数据采集;
-
Hadoop 生态内部大批量同步 ---用 Sqoop
-
跨多种异构源、需要插件化扩展或运维简单 ---用 DataX
维度 | Sqoop | DataX |
---|---|---|
运行引擎 | MapReduce(分布式,启动慢) | 单机多线程(轻量,启动快) |
吞吐性能 | 高(并行 Map),测试场景 ≈ 20 MB/s | 中低(单机 CPU 瓶颈),测试场景 ≈ 5 MB/s |
支持源/目标 | 仅限 RDBMS ↔ Hadoop 生态(HDFS/Hive/HBase) | 任意 ↔ 任意:RDBMS、NoSQL、Hive、HBase、OSS、ES 等 |
增量同步 | 仅支持基于数值/时间列的 简单增量 | 支持 增量字段、时间戳、CDC 插件 |
扩展性 | 官方插件固定,二次开发成本高 | 插件化框架,自定义 Reader/Writer 简单 |
运维难度 | 依赖 YARN、MapReduce 调优 | 单机即可运行,配置 JSON 即生效 |
社区状态 | Apache 项目,已停止更新 | 阿里开源,社区活跃,持续迭代 |
3.1.3 关系型数据库实时数据采集
Cannal、Maxwell、flink cdc常用于关系型数据库实时数据采集。
-
轻量、快速、仅 MySQL ---Maxwell
-
功能全、阿里系、MySQL 专用 ---Canal
-
实时数仓、多源、Exactly-Once ---Flink CDC
维度 | Canal | Maxwell | Flink CDC |
---|---|---|---|
支持数据库 | MySQL/MariaDB(及阿里云 RDS) | 仅 MySQL | MySQL、PG、Oracle、Mongo、SQLServer… |
运行模式 | 独立 Server+Client,需部署 | 单进程(伪装 Slave) | Flink TaskManager 任务 |
数据格式 | 可自定义(protobuf/JSON) | 仅 JSON | Flink RowData(可转 JSON/Avro) |
历史数据 | 不支持,需额外脚本 | 支持 bootstrap 拉全量 | 全增量一体化,自动切换 |
语义保证 | At-Least-Once(可能重复) | At-Least-Once | Exactly-Once |
输出生态 | Kafka/RocketMQ + 自写 Client | Kafka/Redis/stdout | 所有 Flink Connector(Kafka、Hudi、Iceberg…) |
资源占用 | 中等(JVM) | 极低(单进程) | 高(依赖 Flink 集群) |
运维复杂度 | 需管 HA、ZK、Client | 极低 | 需 Flink 运维经验 |
适用场景 | 阿里系、MySQL 生态、已有 Canal 基础设施 | 快速 PoC、小团队、轻量同步 | 实时数仓、入湖入仓、流式 ETL |
2.2 数据计算技术框架
-
MapReduce:Hadoop 原生批处理,稳定但慢;仅用于离线跑批或教学。
-
Tez:Hive 默认执行引擎,DAG 优化替代 MapReduce,中等规模离线 SQL 提速 5-10 倍。
-
Spark:内存计算 + 通用批/流/ML 一体化,迭代类任务首选;资源消耗高。
-
Flink:真正流优先,毫秒级延迟 + Exactly-Once,实时数仓、风控、CEP 场景不二之选。
3.3 数据分析技术框架
3.3.1 离线分析
Hive、Impala和Kylin属于典型的离线OLAP数据分析引擎,主要应用在离线数据分析领域。
- Hive的执行效率一般,但是稳定性极高;
- Impala基于内存可以提供优秀的执行效率,但是稳定性一般;
- Kylin通过预计算可以提供PB级别数据毫秒级响应。
维度 | Hive | Impala | Kylin |
---|---|---|---|
执行方式 | MapReduce/Tez/Spark(批处理) | 内存 MPP(并行计算) | 预计算 Cube(MapReduce/Spark) |
查询延迟 | 分钟-小时级 | 秒级 | 秒级 |
并发能力 | 低 | 中-高 | 极高(> 1000 QPS) |
数据量 | PB 级 | PB 级 | TB-PB 级(需预聚合) |
SQL 支持 | 完整 HiveQL | HiveQL 子集(无 UDF) | 标准 SQL(维度/度量固定) |
3.3.2 实时分析
Druid、ClickHouse、Doris 都是当下主流的 实时 OLAP 引擎,但它们在数据模型、查询延迟、并发能力、运维成本、生态定位上差异明显。
-
Druid:时序 OLAP ,预聚合王者,高并发、亚秒级,事件流(日志/监控)场景首选。
-
ClickHouse:列式 OLAP ,性能怪兽,单表亿级聚合秒出结果,自助分析/行为分析利器。
-
Doris:新一代 MPP ,统一数仓,实时+离线一体化,标准 SQL、Join 友好、易运维。
维度 | Druid | ClickHouse | Doris |
---|---|---|---|
数据模型 | 预聚合 + 时间分区(Segment) | 纯列式、稀疏索引 | 列式 + 索引 + 物化视图 |
最佳场景 | 时序/事件流、监控、日志 | 单表海量分析、用户行为 | 实时数仓、统一报表 |
查询延迟 | 亚秒级(预聚合) | 毫秒-秒级 | 毫秒-秒级 |
并发 QPS | 10k+ | 100-1k(依赖节点数) | 1k-5k |
Join 能力 | 弱(建议大宽表) | 中(Local Join 优化) | 强(分布式 Shuffle Join) |
运维难度 | 中(Segment 管理) | 中(MergeTree 调优) | 低(一键扩缩容,自动均衡) |
生态 | Kafka、Flink、Superset 深度集成 | BI 工具多、社区活跃 | MySQL 协议、BI 无缝接入 |
存储压缩 | 高(Roaring Bitmap) | 极高(LZ4/ZSTD) | 高(列存+字典编码) |
写入方式 | 实时流(Kafka Indexing)+ 批量 | 批量插入/异步写 | Stream Load / Routine Load |