文章目录
Hadoop
是Apache
开源的分布式计算平台,经过多年发展已形成庞大的生态系统,以下是核心组件及其功能的详细介绍:
一、Hadoop核心组件
1. HDFS (Hadoop Distributed File System)
- 功能:分布式存储系统,将大文件分块存储在多个节点上,提供高容错性和高吞吐量。
- 架构:
- NameNode:管理文件系统元数据(目录结构、文件位置等)。
- DataNode:存储实际数据块,定期向
NameNode
汇报状态。
- 应用场景:海量数据存储、批处理作业输入输出。
2. YARN (Yet Another Resource Negotiator)
- 功能:资源管理和任务调度系统,分离计算资源和应用程序。
- 架构:
- ResourceManager:全局资源调度器,分配集群资源。
- NodeManager:每个节点的代理,管理容器和监控资源使用。
- ApplicationMaster:每个应用的资源协调器(如
MapReduce
作业)。
- 优势:支持多计算框架(
MapReduce、Spark、Flink
等)共享集群资源。
3. MapReduce
- 功能:分布式计算框架,将任务分解为
Map
(映射)和Reduce
(归约)两个阶段。 - 特点:
- 批处理:适合大规模数据处理,但启动开销大。
- 高容错:自动重新执行失败任务。
- 应用:
ETL
(提取-转换-加载)、数据挖掘、日志分析。
二、数据存储与管理
1. HBase
- 类型:分布式、列式存储的
NoSQL
数据库。 - 特点:
- 基于
HDFS
,支持随机实时读写。 - 适合存储稀疏数据(如社交网络关系)。
- 强一致性,自动分片(
Region
)。
- 基于
- 应用:实时查询系统、时序数据存储。
2. Hive
- 功能:数据仓库工具,提供
SQL-like
查询语言(HiveQL
)。 - 原理:将
SQL
转换为MapReduce、Tez
或Spark
任务执行。 - 优势:适合数据分析人员快速上手,无需编写
Java
代码。 - 应用:数据仓库、
BI
报表。
3. HCatalog
- 功能:
Hive
的元数据服务,支持不同计算框架共享数据(如MapReduce、Pig、Spark
)。 - 优势:统一元数据管理,避免重复定义表结构。
4. Phoenix
- 功能:
HBase
的SQL
层,支持二级索引和事务。 - 特点:查询性能优于
Hive
,适合低延迟场景。
三、数据处理与计算
1. Spark
- 功能:内存计算框架,速度比
MapReduce
快100倍以上。 - 核心组件:
- Spark Core:基础引擎,提供
RDD
(弹性分布式数据集)抽象。 - Spark SQL:结构化数据处理。
- Spark Streaming:实时流处理。
- MLlib:机器学习库。
- GraphX:图计算。
- Spark Core:基础引擎,提供
- 应用:实时分析、机器学习、图计算。
2. Flink
- 功能:高性能流处理框架,支持事件时间语义和精确一次语义。
- 特点:
- 真正的流处理(支持有界和无界数据)。
- 低延迟(毫秒级),高吞吐量。
- 应用:实时
ETL
、实时报表、欺诈检测。
3. Tez
- 功能:
Hive
的下一代执行引擎,替代MapReduce
,支持DAG
(有向无环图)任务。 - 优势:减少中间数据落地,提升复杂查询性能。
4. Storm
- 功能:早期实时流处理框架,支持高吞吐量和容错。
- 特点:纯实时处理,不支持批处理。
- 应用:实时日志分析、消息处理。
5. Presto
- 功能:分布式
SQL
查询引擎,适合交互式分析(亚秒级响应)。 - 特点:直接查询多种数据源(
HDFS、Hive、RDBMS
等)。 - 应用:即席查询、
BI
工具集成。
6. Impala
- 功能:
Cloudera
开发的低延迟SQL
查询引擎,与Hive
兼容。 - 特点:基于内存计算,适合实时分析。
四、资源调度与集群管理
1. Mesos
- 功能:通用集群资源管理器,支持多框架(
Hadoop、Spark、Kubernetes
等)。 - 特点:比
YARN
更底层,支持跨集群资源调度。
2. Oozie
- 功能:工作流调度系统,管理
Hadoop
作业(MapReduce、Spark、Hive
等)。 - 优势:支持依赖关系定义、定时任务和故障恢复。
3. Airflow
- 功能:开源工作流调度平台,用
Python
定义DAG
工作流。 - 特点:可视化界面、丰富的插件生态。
五、数据集成与ETL
1. Sqoop
- 功能:在
Hadoop
与关系型数据库(如MySQL、Oracle
)之间批量传输数据。 - 特点:支持增量导入和并行导入。
2. Flume
- 功能:高可用、分布式日志收集系统,将数据从多个源发送到
HDFS/HBase
。 - 架构:
Source
(数据源)→Channel
(缓冲区)→Sink
(目的地)。
3. Kafka
- 功能:分布式消息队列,高吞吐量、持久化存储消息。
- 应用:实时数据流管道、事件流处理。
- 相关组件:
- Kafka Connect:与外部系统(如数据库)集成的连接器。
- Kafka Streams:轻量级流处理库。
六、数据安全与权限管理
1. Kerberos
- 功能:
Hadoop
集群的身份认证系统,防止未授权访问。
2. Ranger
- 功能:统一权限管理系统,支持细粒度权限控制(如
HDFS、Hive、HBase
)。
3. Sentry
- 功能:
Apache Hadoop
的授权系统,与Hive、HBase
等集成。
4. Knox
- 功能:
Hadoop REST API
的网关,提供安全访问入口。
七、监控与运维
1. Ambari
- 功能:
Hadoop
集群的安装、配置和监控工具,提供Web
界面。 - 支持:
HDFS、YARN、Hive、HBase
等组件的自动化管理。
2. Ganglia
- 功能:集群监控系统,收集
CPU
、内存、网络等指标。
3. Nagios
- 功能:事件监控和报警系统,检测服务故障并通知管理员。
4. Zabbix
- 功能:企业级监控解决方案,支持分布式监控和可视化。
八、其他工具
1. Zookeeper
- 功能:分布式协调服务,维护配置信息、命名服务和分布式锁。
- 应用:
HBase、Kafka
等依赖Zookeeper
实现高可用。
2. Mahout
- 功能:
Hadoop
上的机器学习库,提供分类、聚类、推荐等算法。 - 注意:近年部分功能被
Spark MLlib
取代。
3. Pig
- 功能:数据流语言和执行环境,适合复杂
ETL
任务。 - 语法:基于
Latin
风格的Pig Latin
语言。
4. Drill
- 功能:类似
Presto
的分布式SQL
查询引擎,支持多数据源(NoSQL、HDFS
等)。
九、生态系统整合方案
1. CDH (Cloudera Distribution including Hadoop)
- 特点:商业发行版,集成Hadoop及周边组件,提供企业级支持。
2. HDP (Hortonworks Data Platform)
- 特点:开源社区版,强调组件兼容性和易用性。
3. IBM BigInsights
- 特点:企业级大数据平台,集成分析工具和安全特性。
总结
Hadoop
生态系统组件丰富,可根据需求组合使用:
- 存储:HDFS(批量数据)、HBase(实时读写)、Hive(数据仓库)。
- 计算:MapReduce(批处理)、Spark(内存计算)、Flink(流处理)。
- 调度:YARN(资源管理)、Oozie/Airflow(工作流)。
- 集成:Kafka(消息队列)、Sqoop/Flume(数据导入导出)。
- 安全:Kerberos(认证)、Ranger(权限)。
选择组件时需考虑场景需求(批处理/实时、结构化/非结构化)、性能要求和团队技术栈。