欢迎投稿

今日深度:

Hadoop,

Hadoop,


文章目录

  • Hadoop
    • 支持原创
    • hadoop简介
      • hadoop的特点
    • hadoop版本演进
      • hadoop1.0(0.20x 0.21x 0.22x 1.x)
      • hadoop2.0(0.23x 2.x)
    • hadoop2.0生态圈
      • 核心内容
      • 子项目
    • Hadoop分布式文件系统:HDFS
      • HDFS简介
      • HDFS体系架构
      • HDFS数据复制
      • HDFS的存储策略
      • HDFS技术要点回顾
    • Hadoop统一资源管理框架YARN
      • 概述
      • YARN体系架构
      • YARN应用工作流程
      • YARN资源调度模型
      • YARN技术要点回顾
    • Hadoop MapReduce
      • 概述
      • MR的组件
      • MapReduce数据处理引擎
      • Mapreduce版本对比
      • MapReduce技术要点回顾
    • Hadoop分布式集群管理系统Zookeeper
      • Zookeeper体系架构
      • Zookeeper基本特性
      • Zookeeper数据模型
      • Zookeeper在Hadoop中的应用举例
      • Zookeeper技术要点回顾

Hadoop

支持原创

  • 原创不易,转载请注明出处:https://blog.csdn.net/weixin_42529806/article/details/84026873

hadoop简介

hadoop的特点

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

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生态圈

核心内容

  • 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简介

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

HDFS体系架构

  • 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数据复制

1.描述

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

HDFS的存储策略

  • 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技术要点回顾

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

Hadoop统一资源管理框架YARN

概述

YARN体系架构

  1. YARN架构
  • Master/Slave架构
  • 主要由ResouceManager、NodeManger、ApplicationMaster、Container等几个组件组成
  • 负责对各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应用工作流程

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

YARN资源调度模型

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

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


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


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

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

YARN技术要点回顾

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

Hadoop MapReduce

概述

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

MR的组件

MapReduce数据处理引擎

  • Map Task阶段

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

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

  • Reduce Task阶段

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

Mapreduce版本对比

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

MapReduce技术要点回顾

Hadoop分布式集群管理系统Zookeeper

Zookeeper体系架构

Zookeeper基本特性

Zookeeper数据模型

  • 分布式:数据节点叫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中的应用举例

  • 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选举
  • 配置管理信息
  • 统一命名服务
  • 分布式同步操作
  • 集群管理

www.htsjk.Com true http://www.htsjk.com/Hadoop/38614.html NewsArticle Hadoop, 文章目录 Hadoop 支持原创 hadoop简介 hadoop的特点 hadoop版本演进 hadoop1.0(0.20x 0.21x 0.22x 1.x) hadoop2.0(0.23x 2.x) hadoop2.0生态圈 核心内容 子项目 Hadoop分布式文件系统:HDFS HDFS简介 H...
相关文章
    暂无相关文章
评论暂时关闭