记录学习,有错欢迎指正
目录
-
- 前言
- 1、hadoop简介
- 2、hadoop的组成
- 3、HDFS(Hadoop Distributed File System)
- 4、Yarn
- 5、MapReduce
- 6、Common
前言 大数据(Big Data)是什么:指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
而hadoop框架就可以用来解决 海量数据的存储 和 海量数据的分析计算
1、hadoop简介 Hadoop是什么
- Hadoop是一个分布式系统基础架构。
- 主要解决,海量数据的存储和海量数据的分析计算问题。
- 广义上来说,Hadoop通常是指一个更广泛的概念 ---- Hadoop生态圈。
- 高可靠性:Hadoop底层维护了多个数据副本,所以即使Hadoop某个计算元素存储出现故障,不会导致数据的丢失。
- 高扩展性:在集群运行间动态增加服务器,可方便地扩展数以千计的节点。
- 高效性:在MapReduce思想下,Hadoop是并行工作的,以加快任务处理速度。
- 高容错性:能够自动将失败的任务重新分配。
发行版本名 | 简介 |
---|---|
Apache Hadoop | 最原始(最基础)的版本,对于入门学习最好 |
Cloudera Hadoop | 在大型互联网企业中用的较多 |
Hortonworks Hadoop | 文档较好 |
- 在Hadoop1.x时代,Hadoop中的MapReduce同时处理业务逻辑运算和资源的调度,耦合性较大。
- 在Hadoop2.x时代,增加了Yarn。Yarn只负责资源的调度,MapReduce只负责运算。
文章图片
3、HDFS(Hadoop Distributed File System) HDFS 实现了 提供对应用程序数据的高吞吐量访问的 一个分布式的文件系统,HDFS 为海量的数据提供了存储。
HDFS 是基于节点的形式进行构建的。
(1)一个父节点 NameNode,他在机器内部提供了服务,NameNode 本身不存储真实数据(只存储元数据),由于只存在一个父节点,所以HDFS存在单点故障的问题。
(2) n 个子节点 DataNode,DataNode 在机器内部提供了数据块,存储在 HDFS 的数据被分成块,然后将这些块分到多个计算机(DataNode)中。
HDFS集群以这两类节点以 管理节点–工作节点模式 运行,即一个NameNode(管理节点)和多个DataNode(工作节点)。
- NameNode(nn):分布式文件系统中的管理者,主要负责管理文件系统的命名空间、集群配置信息和存储块的复制、响应客户端与DataNode的请求等。
1)NameNode负责:文件元数据信息的操作以及处理客户端的请求。
2)NameNode管理:HDFS文件系统的命名空间NameSpace。
3)NameNode维护:文件系统树(FileSystem)以及文件树中所有的文件和文件夹的元数据信息(matedata) 维护文件到块的对应关系和块到节点的对应关系
4)NameNode文件:namespace镜像文件(fsimage),操作日志文件(edit log)这些信息被Cache在RAM中,当然这两个文件也会被持久化存储在本地硬盘。
5)NameNode记录:将每个文件中各个块所在的数据节点的位置信息保存在内存中。(块信息由datanode周期性上报)
- DataNode(dn):文件存储的基本单元,正真用于存储数据。
1)一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。
2)初始化注册:当DataNode启动时,将向NameNode进行注册,告知NameNode其可以处理HDFS的读写操作;
3)周期性心跳:所有的DataNode周期性(默认是3秒)向NameNode发送包含有该节点使用统计的心跳信息,该心跳信息,使NameNode知道可以向DataNode发送命令,如复制、删除等;如果NameNode长时间没有收到心跳,会立即向DataNode发送一个快请求,如果NameNode无法识别DataNode或者NameNode重新启动或与DataNode的通信超时,其将要求DataNode重新注册。如果DataNode长时间(如30分钟)没有成功发送心跳信息,NameNode会把该DataNode标记为死亡状态,并且通知其他DataNode复制死亡节点上存储的数据,以使块的复制因子满足配置的副本数量。
4)周期性块报告:DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。
- Secondary NarmeNode(2nn):并非NameNode的热备;辅助NameNode ,分担其工作量;定期合并fsimage和fsedits ,推送给NameNode ;在紧急情况下,可辅助恢复NameNode(NN和2NN工作机制)。
文章图片
4、Yarn Yarn是 Hadoop 的集群资源管理 分布式系统。Yarn被引入Hadoop2,最初是为了改善MapReduce的实现,但它具有足够的通用性,同样可以支持其他的分布式计算引擎。
YARN通过两类长期运行的守护进程提供自己的核心服务
- ResourceManager
- NodeManager
文章图片
当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManger启动可以占用一定资源的任务。由于不同的ApplicationMaster被分布到不同的节点上,因此它们之间不会相互影响。
- ResourceManager(RM)
管理集群上资源使用的资源管理器。
- ApplicationMaster(AM)
用户提交的每个应用程序均包含1个AM,主要功能包括:
- 将得到的任务处理,进一步分配给内部的任务;
- 与RM调度器协商以获取资源(用Container表示),分配给内部任务;
- 与NM通信以启动/停止任务;
- 监控任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。
- NodeManager(NM)
管理每个节点上的资源和任务的资源管理器。一方面,它会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,它接收并处理来自AM的Container启动/停止等各种请求。为ApplicationMaster服务。
- Container
Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。
为什么需要 MapReduce?
(1) 海量数据在单机上处理因为硬件资源限制,无法胜任;
(2) 而一旦将单机版程序扩展到集群来分布式运行,将极大增加程序的复杂度和开发难度;
(3) 引入 MapReduce 框架后,开发人员可以将绝大部分工作集中在业务逻辑的开发上,而将 分布式计算中的复杂性交由框架来处理。
Mapreduce 是一个分布式运算程序的编程框架,是用户开发“基于 hadoop 的数据分析 应用”的核心框架;
Mapreduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个 hadoop 集群上。
分而治之,就是将一个大任务拆分成多个小任务,小任务执行完后,合并整个结果。
MapReduce将计算过程分为两个阶段:Map和Reduce
- Map阶段并行处理输入数据
- Reduce阶段对Map结果进行汇总
文章图片
6、Common 主要包括系统配置工具 Configuration、远程过程调用 RPC、序列化机制和 Hadoop 抽象文件系统 FileSystem 等。它们为在通用硬件上搭建云计算环境提供基本的服务,并为运行在该平台上的软件开发提供了所需的 API。
推荐阅读
- hadoop|Hadoop(三)
- hadoop|hadoop(五)
- 数据库|软件工程专业困局
- hive|数仓4.0笔记——数仓环境搭建——Hive on Spark
- 后端|Vue+Spring Boot前后端开发手册,开源获赞68K
- 干货分享|需求文档中的“项目前景与范围”
- 数据库|太强了!这款轻量级的数据库中间件完美解决了Spring Boot 中分库分表问题
- 最佳实践|意出望外的一次相遇|利楚初探 OceanBase
- 数据库系列|数据库系列之OceanBase架构及安装部署