Flume 核心组件系统性梳理
1. Flume 产生背景在大数据场景中,业务系统每天产生海量日志(Nginx 访问日志、应用日志、埋点日志等),这些日志分散在各个服务器上,需要实时或准实时地收集到 HDFS、Kafka 等存储系统中。Flume 就是专门解决这一问题的日志收集系统。 采集 vs 收集的区别: 采集:从数据源获取数据(Flume 做的事) 收集:汇聚多路数据到统一存储(也是 Flume 的能力) 2. Flume 是什么Flume 是 Cloudera 开发、Apache 开源的分布式、可靠、高可用的日志收集系统。核心特点: 基于流式数据流(Streaming Data Flow) 声明式配置,无需编码 支持多种数据源和目标 内置可靠性保证(At-Least-Once) 3. 竞品对比 工具 特点 适用场景 Flume 配置简单,与 Hadoop 生态集成好 日志收集到 HDFS/Kafka Logstash ELK 生态,功能强大 日志收集到 Elasticsearch Filebeat 轻量级,资源占用少 替代 Logstash 做数据采集 Kafka...
Hive 核心组件系统性梳理
1. Hive 产生背景MapReduce 编程门槛高,数据分析师不会 Java,但熟悉 SQL。Hive 应运而生,将 SQL 翻译为 MapReduce 作业,让分析师用 SQL 就能处理 HDFS 上的海量数据。 2. Hive 是什么Hive 是基于 Hadoop 的数据仓库工具,核心功能: 将结构化数据文件映射为数据库表 提供 HQL(Hive Query Language,类 SQL)查询接口 将 HQL 翻译为 MapReduce / Tez / Spark 作业执行 本质:Hive 不存储数据,数据存在 HDFS;Hive 不计算,计算由 MR/Tez/Spark 完成。 3. 优缺点优点: 学习成本低,SQL 即可操作海量数据 支持自定义函数(UDF/UDAF/UDTF) 统一元数据管理(Metastore) 适合离线数据仓库建设 缺点: 延迟高(底层是 MR,分钟级) 不支持行级更新/删除(ACID 支持有限) 不适合实时查询 调优复杂 4. Hive 架构12345678910...
ZooKeeper 核心组件系统性梳理
1. ZooKeeper 是什么ZooKeeper 是 Apache 开源的分布式协调服务,为分布式应用提供一致性服务,包括:配置管理、命名服务、分布式锁、集群选主等。它基于 ZAB(ZooKeeper Atomic Broadcast)协议保证数据一致性。 2. 企业使用场景 Hadoop HA:NameNode/ResourceManager 主备切换,依赖 ZK 选主 HBase:RegionServer 注册、Master 选主 Kafka:Broker 注册、Controller 选主、消费者 offset 管理(旧版) 分布式锁:利用临时顺序节点实现公平锁 配置中心:统一管理分布式系统配置,变更实时推送 服务注册与发现:微服务注册中心(Dubbo 默认使用 ZK) 3. 角色及选举机制三种角色 角色 职责 Leader 集群唯一,处理所有写请求,发起投票 Follower 处理读请求,参与 Leader 选举投票,将写请求转发给 Leader Observer 只处理读请求,不参与选举,用于扩展读性能 Leader 选举机制(Fast...
YARN 核心组件系统性梳理
1. YARN 产生背景Hadoop 1.x 中,JobTracker 同时承担资源管理和作业调度两大职责,存在严重问题: 单点瓶颈:所有作业都由 JobTracker 管理,集群规模受限 资源利用率低:资源以 slot(Map slot / Reduce slot)为单位静态划分,无法跨类型共享 不支持多计算框架:只能运行 MapReduce,无法运行 Spark 等其他框架 YARN(Yet Another Resource Negotiator)在 Hadoop 2.x 引入,将资源管理与作业调度彻底解耦。 2. 架构核心组件1234567891011Client │ ├── ResourceManager(全局资源管理,主节点) │ ├── Scheduler(资源调度器) │ └── ApplicationsManager(应用管理) │ └── NodeManager × N(单节点资源管理,从节点) └── Container(资源隔离单元) └── ApplicationMaster...
MapReduce 核心组件系统性梳理
1. MapReduce 是什么MapReduce 是 Hadoop 的分布式计算框架,将复杂的并行计算抽象为两个阶段:Map(映射) 和 Reduce(归约)。开发者只需实现这两个函数的业务逻辑,框架自动处理任务分发、容错、数据传输等底层细节。 2. 核心思想分而治之:将大数据集切分为若干小数据集,分配给多个 Map 任务并行处理,再将中间结果汇总给 Reduce 任务合并计算。 1234567891011121314输入数据 │ ├── InputSplit 切片 │ ├── Map 阶段(并行) │ 每个 MapTask 处理一个 InputSplit │ 输出 <K, V> 键值对 │ ├── Shuffle 阶段(框架自动完成) │ 分区 → 排序 → 合并 → 传输 │ └── Reduce 阶段(并行) 每个 ReduceTask 处理一组相同 Key 的数据 输出最终结果到 HDFS 3. 优缺点优点: 编程模型简单,屏蔽分布式细节 高容错:任务失败自动重试 适合离线批处理大...
HDFS 核心组件系统性梳理
1. HDFS 是什么HDFS(Hadoop Distributed File System)是 Hadoop 的分布式文件系统,设计目标是在普通商用硬件集群上可靠地存储超大文件。它采用主从架构,将文件切分为固定大小的 Block 分散存储在多个 DataNode 上。 2. 设计假设与目标 硬件故障是常态,而非异常 → 系统需具备自动容错能力 流式数据访问(高吞吐优先,非低延迟) 支持超大文件(GB、TB 级别) 一次写入、多次读取的访问模式 移动计算比移动数据代价更低(数据本地化计算) 3. 架构核心组件123456789101112131415Client │ ├── NameNode(主节点) │ ├── 管理文件系统命名空间(目录树) │ ├── 维护文件与 Block 的映射关系 │ └── 记录每个 Block 存储在哪些 DataNode 上 │ ├── SecondaryNameNode(辅助节点,非备份) │ ├── 定期合并 EditLog 和 FsImage │ └── 减轻 NameNode 的...
Hadoop 核心组件系统性梳理
1. Hadoop 是什么Hadoop 是 Apache 开源的分布式计算基础框架,专为海量数据的存储与计算而生。它的核心思想来源于 Google 的三篇论文(GFS、MapReduce、BigTable),解决了单机无法处理大规模数据的根本问题。 2. 三大核心组件 组件 职责 HDFS 分布式文件系统,负责海量数据的持久化存储 MapReduce 分布式计算框架,负责海量数据的并行计算 YARN 资源管理系统,负责集群资源的统一调度与管理 三者关系:HDFS 存数据,MapReduce 算数据,YARN 管资源。 3. 大数据生态圈Hadoop 是大数据生态的基石,围绕它形成了完整的生态体系: 数据采集层:Flume(日志采集)、Sqoop(关系型数据库导入导出) 数据存储层:HDFS、HBase(列式存储) 数据计算层:MapReduce(离线批处理)、Spark(内存计算)、Flink(流计算) 数据查询层:Hive(SQL on Hadoop)、Impala(实时查询) 资源调度层:YARN 协调服务层:ZooKeeper 任务调度层:Oozie...