Hadoop——基本概述,初步认识

Posted 保暖大裤衩LeoLee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop——基本概述,初步认识相关的知识,希望对你有一定的参考价值。

参考资料:

 

hadoop:hdfs架构及原理

深入理解HDFS:Hadoop分布式文件系统

Hadoop基本组成

个版本hadoop组成
组件1.X2.X3.X
Common(辅助工具)
HDFS(数据存储、分布式文件系统)
Yarn(资源调度)
MapReduce(数据计算处理)

可以看到2.X与3.X版本的Hadoop从组成上没有太大区别。1.X与其他版本不同的是MapReuce包含了数据计算处理资源调度在2.X与3.X中,资源调度与数据计算进行了解耦,作为单独组件Yarn存在

HDFS

Hadoop Distributed File System,简称HDFS,是一个分布式的文件系统。顾名思义,HDFS的文件分布在集群机器上,同时提供副本进行容错及可靠性保证。例如客户端写入读取文件的直接操作都是分布在集群各个机器上。

HDFS满足master-worker(主从)模式,由NameNode 与 DataNode共同组成。

NameNode

  • NameNode(负责管理分布式文件系统的命名空间(Namespace))
    • FsImage:维护文件系统树及所有文件、目录的元数据
    • EditLog:记录了所有针对文件的创建、删除、重命名等操作

最通俗的理解就是,Name Node是用来告诉别人:数据存在哪个节点上,存了一些什么数据

注意:为啥会拆成两个呢? 主要是因为fsimage这个文件会很大的,多了之后就不好操作了,就拆分成两个。把后续增量的修改放到EditLog中, 一个FsImage和一个Editlog 进行合并会得到一个新的FsImage。

由于NameNode的负责了重要的文件系统元数据,作为整个集群的引导节点,所以其高可用非常重要,即当NameNode down掉之后,必须有后备方案来接替NameNode的任务。HDFS中充当该替补角色的就是Secondary NameNode

Secondary NameNode

SNN每隔一段时间会对NameNode进行一次元数据的备份,但其并非完全作为NameNode的热备。

  • 辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode
  • 在紧急情况下,可辅助恢复NameNode

DataNode

DataNode就是实际来存储数据的,并且执行NameNode下发的数据操作指令。除此之外还会进行快数据的校验。

YARN

Yet Another Resource Negotiator简称YARN,另一种资源协调器,是Hadoop的资源管理器。其包含两大部分:Resource ManagerNodeManager

Resource Manager

整个集群资源的管理者,相当于对所有Node Manager的统一代理。

 Node Manager

单个节点的资源管理者。

Container

任务运行容器,相当于一台独立的服务器,有“独立”的资源(内存、CPU、磁盘、网络),这些资源实质上是通过虚拟化技术来虚拟出来的。(默认情况下,一个Container可以分配1G-8G内存,至少一个CPU)

这样做的好处在于,当一个任务运行完成时,运行任务期间占用的资源,在任务运行结束之后可以马上释放

Application Master

单个任务的管理器。

  1. 当APP Master需要执行任务的时候,会向Resource Manager申请资源
  2. 然后在某个Container上使用申请到的资源进行任务的执行。
  3. 如果当前Node Manager的资源不够运行该任务的时候,则可以跨节点进行资源调度、任务的运行

 MapReduce

MapReduce是一个分布式运算程序的框架,负责数据的计算处理。是用户开发基于Hadoop的数据分析应用的核心框架。

MapReduce讲计算分为两个阶段

  1. Map:并行处理输入数据
  2. Reduce:对Map结果进行汇总

Map阶段

首先将所有的输入目录里的文件读取到内存当中,分配好对应的MapTask,并按照Map阶段的程序逻辑执行这些任务。每个任务之间是相互独立的。当这些任务执行完毕后,再执行Reduce阶

每个文件的读取次数取决于文件的大小和块(blocker)大小的设置。每个块,会执行一次Map(默认,详细查看 8、MapTask并行机制),而不是每个文件执行一次Map。

Reduce阶段

将Map阶段的输出结果,作为Reduce阶段的输入参数。分配好对应的ReduceTask,并一一执行它们。最终将结果输出到MapReduce程序指定的输出目录当中。

一个MapReduce job只能有一个Map阶段和一个Reduce阶段,如果程序需要多个Map阶段和Reduce阶段,则只能编写多个MapReduce程序,并将它们串行运行

MapReduce进程

一个完整的MapReduce程序在分布式运行时会有3类实例进程:

  1. MRAppMaster,负责整个程序运行过程中的资源调度和状态的协调
  2. MapTask,负责Map阶段的数据处理流程
  3. ReduceTask,负责Reduce阶段的数据处理流程 

暂时写这么多,之后有新的理解再补充...

参考文章:

https://blog.csdn.net/adsl624153/article/details/100059246

以上是关于Hadoop——基本概述,初步认识的主要内容,如果未能解决你的问题,请参考以下文章

JAVA-初步认识-常用对象API(基本数据类型对象包装类-概述)

大数据入门基础系列之初步认识大数据生态系统圈(博主推荐)

初步认识Hadoop

初步认识hadoop的一些总结

Hadoop中HDFS的初步认识

JAVA-初步认识-第十章-多态-概述