Hadoop 入门必看|核心组件、HDFS、MapReduce、YARN

Hadoop 入门必看|核心组件、HDFS、MapReduce、YARN 一、Hadoop 概述1. 什么是 HadoopHadoop 是Apache 开源的分布式大数据存储与计算框架使用 Java 开发用于海量数据的存储、离线计算。 可以运行在普通廉价服务器集群把大量机器组合完成 TB/PB 级别数据处理。2.Hadoop 三大核心组件HDFS分布式文件系统负责海量数据存储MapReduce分布式离线计算框架负责数据计算YARN资源调度框架负责集群服务器资源管理、任务调度【生态架构文字描述】核心模块为 HDFS、MapReduce、YARN周边生态组件包含 Hive、Sqoop、Flume、Spark、HBase各组件基于 Hadoop 核心完成数仓、数据采集、数据库等能力。3.Hadoop 四大特性高可靠性数据多副本存储机器故障不会丢失数据高扩展性集群可以横向增加服务器节点高效性分布式并行处理海量数据处理速度快高容错性自动检测故障自动重新调度任务二、HDFS 分布式文件系统【HDFS 架构文字描述】集群分为主从架构1 台 NameNode 作为主节点多台 DataNode 作为从节点存储真实数据额外部署 SecondaryNameNode 作为辅助备份节点。1.HDFS 架构NameNode主节点管理元数据文件名、目录、文件块位置、权限不存储真实业务数据只存元数据整个 HDFS 集群只有一个主 NameNodeDataNode从节点真正存储文件数据块 Block默认块大小 128M文件切分成多个 Block 分散存储数据多副本默认 3 份副本副本存不同机器实现容错SecondaryNameNodeNameNode 辅助节点做元数据备份不是 NameNode 故障的自动接管2.HDFS 文件块 Block默认大小128M如果文件小于 128M不会占满整个块占文件实际大小大文件切分多个 Block分散存不同 DataNode3.HDFS 读写流程文件写入流程【流程文字描述】客户端发起请求 → NameNode 校验权限分配块与节点 → 客户端分块写入各个 DataNode 并完成副本同步 → 全部写入完成通知 NameNode 更新元数据 1. 客户端请求 NameNode 创建文件 2.NameNode 校验权限分配 Block、分配存储节点 3. 客户端把数据分块写入各个 DataNode副本同步 4. 全部写完通知 NameNode 更新元数据文件读取流程【流程文字描述】客户端向 NameNode 查询元数据获取数据块位置 → 客户端直连对应 DataNode 读取各个数据块 → 将多个块拼接还原完整文件 1. 客户端向 NameNode 查询文件元数据获取 Block 所在 DataNode 地址 2. 客户端直接访问对应 DataNode 读取数据块 3. 拼接所有 Block得到完整文件4.HDFS Shell 命令#查看HDFS根目录 hdfs dfs -ls / #上传本地文件到HDFS hdfs dfs -put 本地路径 hdfs路径 #下载HDFS文件到本地 hdfs dfs -get hdfs路径 本地路径 #创建HDFS文件夹 hdfs dfs -mkdir /test #删除HDFS文件 hdfs dfs -rm -r /test三、MapReduce 分布式计算【流程文字描述】原始输入数据 → Map 阶段处理输出键值对 → Shuffle 完成分区、排序、分组 → Reduce 阶段聚合处理 → 输出最终计算结果1.MapReduce 思想分而治之把大任务拆分多机器并行计算最后合并结果。 分为两大阶段Map 阶段、Reduce 阶段中间 Shuffle 洗牌。Map映射阶段分片读取数据做处理输出K,V键值对Shuffle洗牌阶段分区、排序、分组把相同 key 的数据分发到同一个 ReduceReduce归约阶段接收分组后的数据聚合统计输出最终结果2.MapReduce 运行角色JobClient客户端提交任务JobTracker旧版本资源调度Hadoop2 之后废弃交给 YARNTaskTracker执行 Map/Reduce 任务Hadoop2 废弃Hadoop2 版本MapReduce 只是计算框架资源调度交给 YARN。3. 经典案例WordCount 单词统计1.Map按行读取文本切割单词输出单词12.Shuffle把相同单词分到一组排序 3.Reduce对同一个单词所有 1 累加求和输出单词总次数四、YARN 资源调度框架【YARN 架构文字描述】组件包含 ResourceManager 全局主节点、多台 NodeManager 机器节点、每个任务独立的 ApplicationMaster、封装资源的 Container 容器组件之间互相通信完成任务申请、资源分配、任务执行。1.YARN 作用负责整个集群服务器 CPU、内存资源管理接收计算任务分配资源调度任务运行。 Hadoop2 之后MapReduce 计算任务运行在 YARN 之上。2.YARN 四大组件ResourceManager(RM)全局大管家集群主节点接收客户端任务提交分配资源调度任务NodeManager(NM)每一台机器的代理从节点管理本机 CPU 内存资源启动、监控 Container 容器ApplicationMaster(AM)每个任务专属管理者向 RM 申请资源管理本任务的所有子任务Container资源容器封装 CPU 内存所有任务运行在 Container 内部3.YARN 任务完整运行流程【流程文字描述】客户端提交任务 → ResourceManager 启动 ApplicationMaster → ApplicationMaster 向 RM 申请计算资源 → NodeManager 启动 Container 运行 Map、Reduce 任务 → 任务执行结束释放集群资源 1. 客户端提交任务到 ResourceManager 2.ResourceManager 分配一台 NodeManager 启动 ApplicationMaster 3.ApplicationMaster 向 ResourceManager 申请运行任务需要的资源 4.ResourceManager 分配资源各个 NodeManager 启动 Container 运行 Map/Reduce 任务 5. 任务执行完毕释放资源五、Hadoop 版本区别 Hadoop1 vs Hadoop2表格版本Hadoop1Hadoop2资源调度JobTrackerYARN架构HDFS MapReduceHDFS MapReduce YARN缺点JobTracker 单点压力大解耦计算与资源调度支持多种计算框架六、Hadoop 生态组件简单介绍Hive数据仓库把 SQL 翻译成 MapReduce 任务做离线数仓Sqoop数据导入导出MySQL 和 HDFS 之间数据迁移Flume日志采集工具采集日志写入 HDFSSpark内存计算框架可以跑在 YARN 上HBase分布式非关系型数据库基于 HDFS 存储七、Hadoop 常见面试考点1.HDFS 块大小为什么默认 128M减少寻址开销平衡寻址时间和传输时间。2. 副本机制副本存放策略默认 3 副本第一个存本机第二个存同机架其他机器第三个存不同机架机器兼顾性能和容错。3.NameNode 和 SecondaryNameNode 区别SecondaryNameNode 仅仅做元数据合并备份不是故障切换不能替代 NameNode。4.YARN 中 Container 是什么YARN 资源容器CPU 内存资源封装所有任务运行在 Container。