Hadoop

Hadoop

支持原创

hadoop简介

hadoop的特点

  • java开发的
  • 高可靠(多副本)
  • 高扩展(动态扩展节点)
  • 高效(并行处理 PB级数据)
  • 高容错(副本 HA)
  • 低成本

hadoop版本演进

hadoop版本演进图

hadoop1.0(0.20x 0.21x 0.22x 1.x)

  • NameNode没有HA

hadoop2.0(0.23x 2.x)

  • 扩展性增强:提出了联邦机制(NameNode有各自的命名空间,实现数据访问的隔离和集群横向扩展)
  • 资源管理框架Yarn:将JobTracker的资源管理和作业分配功能分开,分别由ResourceManager(资源分配)和ApplicationMaster(作业调度)实现
  • 实现了HA:NameNode有了备用节点

hadoop2.0生态圈

Hadoop2.0生态系统图

核心内容

  • HDFS(Hadoop Distributed File System):hadoop分布式文件系统,提供高吞吐量的访问应用程序数据

  • Hadoop YARN(Hadoop Yet Another Resource Negotiator):作业调度和集群资源管理

  • Hadoop MapReduce:基于yarn的大数据集的并行处理系统

  • Hadoop Common:Hadoop的通用功能(序列化、Java RPC、持久化数据结构等功能)

子项目

  • Ambari:部署、管理和监视Hadoop集群的开源框架(操作工具、API),使得hadoop集群的操作变得简化
  • Hbase:基于HDFS的、天然可扩展的分布式列式存储数据库
  • Hive:基于HDFS的分布式数据仓库系统,提供了类似SQL的HQL查询语言
  • Mahout:机器学习和数据挖掘库
  • Pig:高级数据流语言和执行环境、检索海量数据集
  • Spark:快速、通用的计算引擎(ETL、离线批处理、实时流处理、机器学习和图计算)
  • Sqoop:关系型数据库和Hadoop系统进行数据传输的工具
  • Tez:从MR演化来的DAG计算框架,可作为MR/Pig/Hive等系统的底层数据处理引擎,天生融入Hadoop2.0中的YARN
  • Zookeeper:分布式集群协调服务

Hadoop分布式文件系统:HDFS

HDFS简介

  1. HDFS(Hadoop Distributed File System):hadoop分布式文件系统,提供高吞吐量的访问应用程序数据
  2. 硬件错误
  • 低成本部署导致硬件出现错误是常态而不是异常(HDFS可能由成百上千服务器构成,每台服务器存一部分数据,任一组件都可能失效)—错误检测和快速、自我恢复(核心架构目标
  1. 流失的数据访问
  • 一次写入,多次读取
  • 多少情况下,数据分析都会涉及数据集的大部分数据(对HDFS,读取整个数据集要比读取一条记录更高效)
  1. 处理超大文件
  • 存储百MB、TB、PB大小的文件
  1. 简单的一致性模型
  • 一次写入,多次读取(一旦创建->写入->关闭,之后不许修改了)
  1. 移动计算比移动数据更经济
  • 在靠近计算数据所存储的位置来进行计算是最理想的状态(特别在数据量特别巨大的时候)—消除网络拥堵,提高系统的整体吞吐量
  • 即本地化策略
  1. 异构软硬件平台间的可移植性
  • 平台间的迁移

HDFS体系架构

HDFS架构图

  1. 主从架构(Master/Slave)
  2. NameNode(元数据节点 master)
  • open、close、rename文件或者目录
  • FS的管理者,负责FS的NameSpace以及客户端对文件的访问
  • 元数据保存在磁盘上的文件:image(命名空间镜像)+editlog(操作日志)
  • 保存在内存中数据:每个文件对应的数据块,以及每个数据快分布位置(哪个dn上),不过这些数据不在磁盘,而在dn启动后上报nn,存在内存里
  • 注意:namenode只存元数据的,真实数据全在dn
  1. DateNode(数据节点 slave)
  • 在NN的统一调度下进行数据块的create、remove、copy
  • 处理FS客户端的IO请求
  • 周期性向nn汇报自己存储的数据块(block)信息
  • 数据:分块存储的,3副本(1和2副本在同一机架的不同节点,3副本在不同机架的节点)
  1. client
  • HDFS的客户端
  • 先访问NN获取文件的元数据—之后真正的I/O操作是直接和DN交互的

HDFS数据复制

HDFS数据块复制图

1.描述

  • 注意:block默认128M(特殊:一个文件大20M不够128M,只会有一个块,只占20M磁盘空间)
  • 一次写入的,对于同一文件任何时候都只有一个写操作
  • NameNode处理所有块复制相关决策
  • DN周期性的向NN汇报心跳证明自己在正常工作
  1. 副本位置
  • 存放在机架上,采用的机架感知(让rack-aware)来提高数据的可靠性、可用性以及带宽利用率
  • 不同机架的节点通过交换机通信
  • DN在向NN注册的时候会告知所处rack的id
  • 3副本(1和2副本在同一机架的不同节点,3副本在不同机架的节点)
  1. 副本选择
  • 为了减低整体带宽消耗和读取延时,HDFS会尽量让程序读取离他最近的副本(本地化策略

HDFS的存储策略

  1. 简介:根据数据的使用需求来定存储策略,做到既满足性能的同时又能低成本的存储(例如:需要归档的数据(或者偶尔计算下的数据)和需要即席查询的数据)
  2. 存储类型
  • DISK-普通磁盘,存储
  • SSD -SSD盘
  • RAM_DISK 内存盘
  • ARCHIVE -归档/压缩,不是实际的磁盘类型,而是数据被压缩存储
  1. 存储策略:存储策略允许不同的文件存储在不同的存储类型上,存储策略如下:
  • Hot - 存储和计算都热。 如果是热快,那么复制的目标也是DISK(普通的磁盘)。
  • Cold -用于有限计算的存储。 数据不再使用,或者需要归档的数据被移动到冷存储。如果数据块是冷的,则复制使用ARCHIVE.
  • Warm -半冷半热。warm块的复制内容,部分放置在DISK,其它的在ARCHIVE.
  • All_SSD - 所有数据存储在SSD.
  • One_SSD - 一个复制在SSD,其它的在DISK.
  • Lazy_Persist -只针对只有一个复制的数据块,它们被放在RAM_DISK,之后会被写入DISK

存储策略包括:

  • Policy ID --策略ID
  • Policy name --策略名称
  • A list of storage types for block placement --块存放的有关存储类型(可以多个)
  • A list of fallback storage types for file creation–如果创建失败的替代存储类型(可以多个)
  • A list of fallback storage types for replication–如果复制失败的替代存储类型(可以多个)

HDFS技术要点回顾

  1. 技术特点
  • 适合处理超大文件,GB、TB、PB级这种大文件
  • 支持集群规模的动态扩展
  • 适合流式数据的读写场景—一次写入,多次读取
  • 高容错性,文件分块存储,并且数据块可以保存多个副本,实现负载均衡和容错恢复
  • 对硬件要求低,能够运行在廉价的商用机器集群上—so设计上实现故障检测,快速自我恢复
  1. 不适合的场景
  • 高效存储大量小文件(可以用TextInputFormat或者SequenceFile归档小文件)
  • 低延时数据访问(Hbase改进)
  • 多用户同时写入和任意修改文件

Hadoop统一资源管理框架YARN

概述

  1. YARN:通用的资源管理平台,可为各类计算框架提供资源的管理和调度(例如:MR、Storm、Spark)

  2. 资源的统一管理和调度:集群中所有的资源(内存、CPU、磁盘、网络)抽象为Container。 在资源进行运算任务时,计算框架需要向yarn申请Container,yarn安装策略对资源进行调度,分配Container

  3. 资源隔离:yarn使用的Cgroup(轻量级的资源隔离机制)进行资源隔离(Cgroups是是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制)
    ,避免了相互干扰,而且一旦Container使用的资源超过上限会被杀死

  4. YARN=1个ResouceManager+多个NodeManager
    RM管理NM上所有资源,并以Container(启动一个Container相当于启动一个进程)方式分配给ApplicationMaster或者AM切分的各Task

YARN体系架构

  1. YARN架构
  • Master/Slave架构
  • 主要由ResouceManager、NodeManger、ApplicationMaster、Container等几个组件组成
    YARN架构图
  1. ResourceManager(RM)
  • 负责对各NM上的资源进行统一的管理和调度

  • 给AM分配空闲的Container并监控其运行状态

  • RM由两个组件组成:Scheduler+Applications Manager

  • 调度器Scheduler:调度器根据应用程序的资源需要进行资源分配(分配单位是container)—常见的调度器:FIFO、Capcity、Fair Scheduler

  • 应用程序管理器(Applications Manager):负责整个系统中的所有应用程序,包括应用程序提交,与调度器协商资源以启动AM,监控AM运行状态并在失败的时候重新启动

  1. NodeManager(NM)
  • NM是每个节点上的资源和任务管理器
  • 定时向RM汇报本节点的资源使用状况和各Container的运行状态
  • 接收并处理来自AM的Container启动/停止请求
  1. ApplicationMaster(AM)
  • 用户提交的应用程序均包含一个AM,负责应用的监控,跟踪应用执行状态,启动失败任务
  1. Container
  • Container封装了多维度的资源:CPU、内存、磁盘、网络
  • YARN对资源的抽象
  • AM向RM申请资源,返回的资源就是封装好的Container
  • yarn为每个Task分配一个container

YARN应用工作流程

YARN应用工作流程图

  1. 两个阶段
  • 启动AM:上图步骤1~3
  • 由AM创建应用程序,申请资源并监控其整个运行过程,直至运行完成:上图步骤4~7
  1. YARN工作流程
    YARN应用工作流程图步骤解释

YARN资源调度模型

YARN提供了一个资源管理平台能够将集群中的资源进行管理,资源抽象为Container

  1. yarn采用双层资源调度模型
  • RM中的资源调度器将container分配给各AM:资源分配过程是异步的。资源调度器将资源分配给一个应用程序后,不会立刻push给对应的AM,而是先放到一个缓冲区中,等待AM通过周期性的心跳主动来取
  • AM领取到资源后再进一步分配给它内部的各个task
  1. YARN目前采用的资源分配算法
  • FIFO Scheduler
  • Capcity Scheduler
  • Fair Scheduler

FIFO调度器
先按照作业的优先级高低、再按照到达时间的先后

Capacity调度器
对于Capacity调度器,有一个专门的队列用来运行小任务,但是为小任务专门设置一个队列会预先占用一定的集群资源,这就导致大任务的执行时间会落后于使用FIFO调度器时的时间
目标是:最大化吞吐量和集群利用率
Fair调度器

在Fair调度器中,我们不需要预先占用一定的系统资源,Fair调度器会为所有运行的job动态的调整系统资源

YARN技术要点回顾

YARN提供了一个资源管理平台能够将集群中的资源进行管理,资源抽象为Container

  1. YARN使用了轻量级资源隔离机制Cgropus进行资源隔离以避免资源之间相互干扰,实现对CPU和内存两种资源的隔离
  2. YARN可以运行各自类型的计算框架,包括离线MR、DAG计算框架Tez、基于内存的Spark、实时计算Storm
  3. 支持FIFO、Fair、Capcity Scheduler
  4. 支持多租户资源调度,包括支持资源按比例分配、支持层级队列划分和资源抢占

Hadoop MapReduce

概述

1.流程
map->combine->shuffle and sort->reduce

MR的组件

MapReduce组件图

  1. split切片解释
    MapReduce切片解释

  2. 各组件介绍
    MapReduce组件介绍

  3. 运行流程

MapReduce运行流程步骤解释

MapReduce数据处理引擎

MR的Shuffle图

  1. MapReduce计算框架主要分为Map阶段和Reduce阶段
  • Map Task阶段

  • 涉及排序:内存中->快速排序 磁盘上->归并排序

  • 另外,为了减少磁盘Io和网络IO,往往会再map阶段加一个Conbiner组件(功能和Reducer一样哈)
    MR的Shuffle-Map阶段步骤

  • Reduce Task阶段

  • 涉及排序:内存中->堆排序 磁盘上->归并排序
    MR的Shuffle-Reduce阶段步骤

Mapreduce版本对比

MRv1MRv2
编程模型新旧API新旧API
数据处理引擎Map Task/Reduce TaskMap Task/Reduce Task(重构优化)
运行时环境由(一个)JobTracker和若干TaskTracker构成:Jobtracker负责资源管理和所有祖业控制,而TaskTracker负责接收来自JobTracker的命令并执行它YARN(由ResourceManager和NodeManager构成)和MRAppMaster构成,YARN提供一个资源管理和调度的平台,而MRAppMaster作为运行在YARN资源管理平台上的一个应用,仅负责一个作业的管理

MapReduce技术要点回顾

MR计算模型的优点和使用场景

Hadoop分布式集群管理系统Zookeeper

  1. Zookeeper是一个针对大型分布式系统的可靠协调系统(很重要的组件)
  2. 可以为HDFS、Hbase、MR、YARN、HIVE、Storm、Kafka等组件提供重要功能支撑
  3. 功能:为分布式系统提供可靠性、可扩展、分布式、可配置的协调机制。

Zookeeper体系架构

Zookeeper架构图

  1. 客户端可以连接到每个Server,每个Server数据完全相同
  2. 每个Flower和Leader有连接,接受Leader的数据更新操作,Server记录事务日志和快照到持久存储
  3. 过半Server可用,整个服务就可用
  4. Leader只有一个,宕机后会重新选出一个

Zookeeper基本特性

  1. 强一致性:Client不论连接哪个Server,展示的视图都一样
  2. 可靠性:简单、健壮、良好的性能,if Message被一台服务器接受,那么它可以被所有server接受
  3. 实时性:zookeeper保证client在一个时间间隔范围内get到server的update信息,或者server失效的信息
  4. 等待无关(Wait-Free):慢的或者失效的Client不得干预快速的Client的请求。使得每个Client都能有效的wait
  5. 原子性:update只会有success或者fail,没有中间status
  6. 顺序性:全局有序和偏序

Zookeeper数据模型

  1. Zookeeper的数据模型基于树型结构的命名空间,与文件系统类似(File System+通知机制)
    Zookeeper数据模型图

  2. 数据模型特点

  • 分布式:数据节点叫Znode,client可以连接到每个Server,每一个server的数据完全相同
  • znode可以是临时节点、持久节点。临时节点一旦创建znode,client与server失去联系,此znode自动删除
  • zookeeper的客户端与服务器通信采用长连接,每个client和客户端by 心跳来保持连接,此状态叫做session,if znode是临时节点,session失效的化,znode自动删除
  • Watcher(监控):znode可以被监控,if 此目录节点中存储的数据被修改,以及其子节点目录发生变化等,可以通知设置了监控的client,这是zookeeper的核心特性
  • by监控功能可以实现配置的集中管理、集群管理、分布式锁等

Zookeeper在Hadoop中的应用举例

  1. zookeeper在Yarn的应用
    Zookeeper在YARN中的应用

  2. 流程

  • RM的作业信息存储在zookeeper的/rmstore下,Active RM向此目录写App信息
  • RM启动的时候会通过向ZK的/rmstore目录下写一个Lock文件,写成功就是Active,失败就是Standby,Standby RM会一直监控此Lock是否存在,一旦消失就睡马上试图去创建,即争取成为Active RM
  • 当Active RN挂掉,另一个Standby RM成为Active RM后。会从/rmstore读取相应的作业信息,重新构建作业的内存信息。 之后启动内部服务,开始接收NM的心跳,构建集群资源信息,并接收client提交job的请求等

Zookeeper技术要点回顾

1.zookeeper是针对大型分布式系统的可靠协调系统,可以为HDGFS、Hbase、MR、YARN、Hive等组件提供功能支撑

  • HDFs HA的自动Failover、Hbase的Master选举
  • 配置管理信息
  • 统一命名服务
  • 分布式同步操作
  • 集群管理
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值