Apache Hadoop
简介
Hadoop 是什么
- Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构。
- 主要解决,海量数据的存储和海量数据的分析计算问题。
- 广义上来说,Hadoop 通常是指一个更广泛的概念 —— Hadoop 生态圈。
Hadoop 三大发行版本:Apache、Cloudera、Hortonworks
- Apache 版本最原始(最基础)的版本,对于入门学习最好。
- Cloudera 在大型互联网企业中用的较多。
- Hortonworks 文档较好。
Hadoop 的优势
- 高可靠性:Hadoop 底层维护多个数据副本,所以即使 Hadoop 某个计算元素或存储出现故障,也不会导致数据的丢失。
- 高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。
- 高效性:在 MapReduce 的思想下,Hadoop 是并行工作的,以加快任务处理速度。
- 高容错性:能够自动将失败的任务重新分配。
Hadoop 的组成
- HDFS 分布式文件系统
- MapReduce 分布式计算框架
- Yarn 资源协调框架
- Common 模块
HDFS 分布式文件系统
一个高可靠、高吞吐量的分布式文件系统。对于 HDFS 而言,他具有数据切割、制作副本、分散存储数据的能力。
NameNode: 存储文件的元数据。比如文件名称、文件目录结构、文件属性(生成时间、副本数、文件权限)以及每个文件的块列表和块所在的 DataNode 等。- SecondaryNameNode: 辅助 NameNode 更好的工作,用来监控 HDFS 状态的辅助后台程序,每隔一段时间获取 HDFS 元数据快照。
DataNode: 在本地文件系统存储文件块数据,以及块数据的校验。
MapReduce 分布式离线并行计算框架
MapReduce 在处理任务时 ==> 拆解任务 + 分散处理 + 合并结果
MapReduce 计算 == > map 阶段 + reduce 阶段
map 阶段就是"分"的阶段,指的是并行的处理输入数据。
reduce 阶段就是"合"的阶段,对 map 阶段结果进行汇总。
YARN 作业调度与集群管理框架
计算资源协调
- ResourceManager: 处理客户端请求,启动/监控 ApplicationMaster、监控 NodeManager、资源分配与调度。- NodeManager: 单个节点上的资源管理,处理来自 ResourceManager 的命令、处理来自 ApplicationMaster 的命令。- ApplicationMaster: 数据切分,为应用程序申请资源,并分配给内部任务、任务监控与容错。- Container: 对任务运行环境的抽象。封装了 CPU、内存等多维资源以及环境变量、启动命令等任务运行的相关信息。
ResourceManager 是老大 ---> NodeManager 是小弟 -----> ApplicationMaster 是计算任务专员。
Common 模块
支持其他模块的工具模块(Configuration、RPC、序列化机制、日志操作)