前言
Hadoop组件
- HDFS: Hadoop 分布式文件系统是一种文件存储系统,用于存储大数据,具有商用硬件集群或具有流式访问模式的更便宜的硬件。它使数据可以存储在集群中的多个节点上,从而确保数据的安全性和容错性
- Map Reduce:曾经存储在 HDFS 中的数据也需要进行处理。发送查询以处理 HDFS 中的数据集。现在,Hadoop 识别这些数据的存储位置,这称为映射。现在查询被分解成多个部分,所有这些多个部分的结果被组合起来,整体结果被发送回给用户。这称为减少过程。因此, HDFS 用于存储数据,Map Reduce 用于计算数据
- YARN: YARN 代表资源调度者。是 Hadoop 的专用操作系统,管理集群的资源,也作为 Hadoop 中作业调度的框架。调度的各种类型有先到先服务、公平共享调度器和容量调度器等。在 YARN 中默认设置了先到先服务调度。在Hadoop1中没有YARN组件
Hadoop版本
-
Hadoop 1:Hadoop 的第一个也是最基本的版本。它包括 Hadoop Common(Hadoop通用组件,包含了其他hadoop模块要用到的库文件和工具)、HDFS (分布式文件系统,运行于通用硬件上的分布式文件系统,高吞吐,高可靠) 和 MapReduce(分布式计算框架,用于处理超大数据集计算的MapReduce编程模型的实现) -
Hadoop 2: Hadoop 1 和 Hadoop 2 之间的唯一区别是 Hadoop 2 还包含 YARN(资源管理组件,用于管理集群中的计算资源并在这些资源上调度用户应用)。YARN 通过其两个守护进程(即作业跟踪和进度监控)帮助资源管理和任务调度 -
Hadoop 3:这是最新版本的 Hadoop。除了前两个版本的优点之外,Hadoop 3 还有一个最重要的优点。它通过拥有多个名称节点解决了单点故障的问题。其他各种优势,如纠删码、使用 GPU 硬件和 Docker,使其优于早期版本的 Hadoop
Hadoop特性和特点
Apache Hadoop是最流行和最强大的大数据工具,它提供了世界上最可靠的存储层——HDFS(Hadoop分布式文件系统)、一个批处理引擎——MapReduce和一个像YARN这样的资源管理层。开源 ——Apache Hadoop 是一个开源项目。这意味着它的代码可以根据业务需求进行修改。
- 分布式处理—数据存储在 HDFS 中以分布式方式跨集群维护,数据在节点集群上并行处理
- 容错—默认情况下,每个块的三个副本存储在 Hadoop 中的整个集群中,并且仅在需要时进行更改。Hadoop 的容错性可以在任何一个节点出现故障的情况下进行检查,该节点上的数据可以很容易地从其他节点恢复。特定节点或任务的故障由框架自动恢复
- 可靠性—由于集群中数据的复制,数据可以可靠地存储在机器集群上,尽管机器发生故障。即使你的机器出现故障,你的数据也将被可靠地存储
- 高可用性– 即使由于多个数据副本而发生硬件故障,数据也可用且可访问。如果发生任何事件,例如您的机器或少数硬件崩溃,则将从其他路径访问数据
- 可扩展性—Hadoop 具有高度可扩展性,并且可以以独特的方式轻松地将硬件添加到节点中。它还提供水平可扩展性,这意味着可以 在顶部添加新节点而无需停机
- 经济– Hadoop 不是很昂贵,因为它运行在商品硬件集群上。我们不需要任何专门的机器。Hadoop 提供了巨大的成本降低,因为在这里添加更多节点非常容易。因此,如果需求增加,那么节点就会增加,无需任何停机时间,也无需任何预先计划
- 易于使用—无需客户端处理分布式计算,框架处理所有事情。所以它很容易使用
- 数据局部性—Hadoop 的工作原理是数据局部性原则,该原则指出数据计算的移动而不是数据向计算的移动。当客户端提交他的算法时,算法被移动到集群中的数据,而不是把数据带到算法提交的位置然后处理它
Hadoop的优缺点
优点:
- 能够存储大量数据
- 高灵活性
- 高计算能力
- 任务是独立的
- 线性缩放
缺点:
- Hadoop需要高内存和大存储来应用复制技术
- Hadoop只支持任务分配,没有策略支持任务调度
- 加载时间长
Hadoop工作流程
Hadoop 有助于执行大量处理,可以将多台计算机连接到单个 CPU,作为单一功能的分布式系统,并拥有一组特定的集群机器,并行读取数据集并提供中间和集成后得到想要的输出
- 数据最初分为文件和目录。 文件被划分为128M ~ 64M大小一致的块
- 然后这些文件分布在各个集群节点上,以便进一步处理数据
- 作业跟踪程序在单个节点上启动它的调度程序
- 一旦所有节点都完成了调度,就会返回输出。
Hadoop角色分析
NameNode NameNode管理文件系统的命名空间
- 文件和目录的元数据:(运行时,元数据放内存)、文件的block副本个数、修改和访问的时间、访问权限、block大小以及组成文件的block信息列表
- 以两种方式在NameNode本地进行持久化:
命名空间镜像文件(fsimage)和编辑日志(edits log) - fsimage文件不记录每个block所在的DataNode信息,这些信息在每次系统启动的时候从DataNode重建。之后DataNode会周期性地通过心跳包向NameNode报告block信息。DataNode向NameNode注册的时候NameNode请求DataNode发送block列表信息。
SecondaryNameNode 问题: ??edits log会随着对文件系统的操作而无限制地增长,这对正在运行的NameNode而言没有任何影响,如果NameNode重启,则需要很长的时间执行edits log的记录以更新fsimage(元数据镜像文件)。在此期间,整个系统不可用,在系统启动期间,NameNode合并fsimage+edits log
解决方案就是运行SecondaryNameNode,它的作用就是为NameNode内存中的文件系统元数据生成检查点(checkpoint)。fsimage DataNode
- 文件线性切割成块(Block)(按字节切割)
- Block分散存储在集群的DataNode节点中
- 单一文件Block大小一致,文件与文件可以不一致
- Block可以设置副本数,副本分散在不同节点中
??副本数不要超过DN节点数量 ??承担计算 ??容错 - 文件上传可以设置Block大小和副本数
- 已上传的文件Block副本数可以调整,大小不变
- 只支持一次写入多次读取,同一时刻只有一个写入者。对同一个文件,一个时刻只有一个写入者
- 可以append追加数据
Hadoop安全模式
工作流程
- 启动NameNode,NameNode加载fsimage到内存,对内存数据执行edits log日志中的事务操作
- 文件系统元数据内存镜像加载完毕,进行fsimage和edits log日志的合并,并创建新的fsimage文件和一个空的edits log日志文件
- NameNode等待DataNode上传block列表信息,直到副本数满足最小副本条件
- 当满足了最小副本条件,再过30秒,NameNode就会退出安全模式。最小副本条件指整个文件系统中有99.9%的block达到了最小副本数(默认值是1,可设置)
在NameNode安全模式(safemode)
- 对文件系统元数据进行只读操作
- 当文件的所有block信息具备的情况下,对文件进行只读操作
- 不允许进行文件修改(写,删除或重命名文件)
注意事项
- NameNode不会持久化block位置信息;DataNode保有各自存储的block列表信息。正常操作时,NameNode在内存中有一个blocks位置的映射信息(所有文件的所有文件块的位置映射信息)
- NameNode在安全模式,NameNode需要给DataNode时间来上传block列表信息到NameNode。如果NameNode不等待DataNode上传这些信息的话,则会在DataNode之间进行block的复制,而这在大多数情况下都是非必须的(因为只需要等待DataNode上传就行了),还会造成资源浪费
- 在安全模式NameNode不会要求DataNode复制或删除block
- 新格式化的HDFS不进入安全模式,因为DataNode压根就没有block
参考
本文参考
geeksforgeeks
本专栏为大数据学习总结专栏,如有问题还望指出,共同学习!
|