hadoop构成

Hadoop的主要特点

扩容能力: 能可靠地存储和处理PB级的数据. 成本低: 可用廉价机器组成的服务器进行分发、处理数据. 高效率: 通过分发数据,可在节点上进行处理,速度非常快. 可靠性: 能自动维护数据的多份复制, 任务失败后能自动地重新部署计算任务.

机架感知:

概念:通过位置感知可以知道工作节点所处的机架(通过网络交换机) 特点: HDFS使用机架感知在多个交换机的节点间复制数据,用于数据冗余.该方法降低了机架掉电或交换机故障产生的影响,如果一个硬件出现问题,数据仍然可用. 目的:提升数据可靠性、可用性和网络带宽的利用率. 可靠性指: 系统可以无故障地持续运行 可用性指: 系统在任何给定的时刻都能工作

NameNode

NameNode不允许一个DataNode上存在一个数据快的多份副本,因此,一个数据块的最大副本数就是当时DataNode节点的个数

NameNode在内存中保留一份完整的文件系统命名空间映像,其中包括文件和数据块的映射关系.启动或者达到配置的阀值触发了检查点时,NameNode把FsImage和EditLog从磁盘读取到内存,对内存中的FsImage应用EditLog里的事物,并将新版本的FsImage写回磁盘,然后清除老的EditLog事物条目,因为它们已经持久化到FsImage了.这个过程叫做检查点.检查点的目的是确认HDFS有一个文件系统元数据的一致性视图,这是通过建立一个文件系统元数据的快照并保存到FsImage实现的.

检查点有两种触发机制:

按以秒为单位的时间间隔(dfs.namenode.checkpoint.period)触发, 按达到文件系统累加的事务值(dfs.namenode.checkpoint.txns)时触发.

MapReduce

处理步骤 MapReduce数据处理分为Split、Map、Shuffle和Reduce4个步骤.应用程序实现Map和Reduce步骤的逻辑,Split和Shuffle步骤由框架自动完成.

在应用程序中最好对map任务的输出文件进行压缩以获得更优的性能.

Shuffle横跨Map端和Reduce端,在Map端包括split过程,在Reduce端包括copy和sort过程

YARN

YARN更像是一个支持大数据应用的分布式操作系统 YARN的基本思想是将资源管理和调度及监控功能从MapReduce分离出来,用独立的后台进程实现. 需要一个全局的资源管理器(ResourceManager) 每个应用要有一个应用主管(ApplicationMaster),应用可以是单独的MapReduce作业,或者是一个作业的有向无环图(DAG).

资源管理器和节点管理器(NodeManager)构成了分布式数据计算框架. 资源管理器: 系统中所有应用资源分配的最终仲裁者 节点管理器: 框架中每个工作节点的代理,监控节点CPU、内存、磁盘、网络等资源的使用,并且报告给资源管理器.

每个应用对应的ApplicationMaster实际上是框架中一组特定的库,负责从资源管理器协调资源,并和节点管理器一起工作,共同执行和监控任务.
资源管理器有两个主要组件: 调度器和应用管理器.
调度器负责给多个正在运行的应用分配资源,比如:对每个应用所能使用的资源做限制,按一定规则排队等.
调度器只负责资源分配,它不监控或跟踪应用的状态..
调度器根据应用对资源的需求执行其调度功能,这基于一个叫做资源容器的抽象概念.
资源容器由内存、CPU、磁盘、网路等元素构成.
调度器使用一个可插拔的调度策略,将集群资源分配给多个应用.
CapacityScheduler和FairScheduler就是可插拔调度器的例子.

应用管理器负责接收应用提交的作业,协调执行特定应用所需的资源容器,并在ApplicationMaster容器失败时提供重启服务.每个应用对应一个ApplicationMaster,它向调度器请求适当的资源容器,并跟踪应用的状态和资源使用情况.
Container

在最基本的层面,Container是单个节点上内存、CPU核和磁盘等物理资源的集合. 单个节点上可以有多个Container.系统中的每个节点可以认为是由内存和CPU最小容量的多个Container组成/ ApplicationMaster可以请求任何Container来占据最小容量的整数倍的资源.因此Container代表了集群中单个节点上的一组资源(内存、CPU等),由节点管理器监控,由资源管理器调度.

posted @ 2019-04-30 17:10  BBBone  阅读(354)  评论(0编辑  收藏  举报