• 1. Apache Hadoop 2.0 下一代数据处理框架介绍
  • 2. 主要内容Hadoop 1.0 的局限性 Hadoop 2.0 新特性介绍 Hadoop现状及最新进展
  • 3. Hadoop1.0的局限- HDFS※资源隔离 ※元数据扩展性 ※访问效率 ※数据丢失缺陷?
  • 4. Hadoop1.0的局限-MapReduce扩展性 集群最大节点数–4000 最大并发任务数–40000 可用性 JobTracker负载较重 存在单点故障, 一旦故障, 所有执行的任务的全部失败 批处理模式,时效性低 仅仅使用MapReduce一种计算方式 低效的资源管理 把资源强制划分为 map task slot 和 reduce task slot, 当系统中只有 map task 或者只有 reduce task 的时候,会造成资源的浪费当 map-reduce job 非常多的时候,会造成很大的内存开销,潜在来说,也增加了 JobTracker fail 的风险,这也是业界普遍总结出老 Hadoop 的 Map-Reduce 只能支持 4000 节点主机的上限。
  • 5. Next-Gen DataProccess Platform-Hadoop2.0介绍Single Use System Batch AppsMulti Purpose Platform Batch, Interactive, Online, Streaming, … Hadoop 2.0新特性: 由HDFS、MapReduce和YARN三个分支构成 HDFS:支持NN Federation、HA MapReduce:运行在YARN上的MR,编程模型不变 YARN:资源管理系统 …Hadoop 1.0HDFS (redundant, reliable storage)MapReduce(v1) (cluster resource management & data processing)HDFS2 (redundant, reliable storage)YARN (cluster resource management)MapReduce(v2) (data processing)Others (data processing)Hadoop 2.0
  • 6. Hadoop2.0 新特性: YARN-产生背景直接源于MRv1在几个方面的无能 扩展性差,JobTracker成为瓶颈 可靠性差,NameNode单点故障 扩展性差,难以支持MR之外的计算 资源利用率低 多计算框架各自为战,数据共享困难 MR:离线计算框架 Storm:实时计算框架 Spark:内存计算框架
  • 7. Hadoop2.0 新特性: YARN-架构及组件ResourceManager 处理客户端请求 启动/监控ApplicationMaster 监控NodeManager 资源分配与调度 NodeManager 单个节点上的资源管理 处理来自ResourceManager的命令 处理来自ApplicationMaster的命令 ApplicationMaster 数据切分 为应用程序申请资源,并分配给内部任务 任务监控与容错YARN 是Hadoop 2.0 中的资源管理系统,它是一个通用的资源管理模块,可为各类应用程序进行资源管理和调度。
  • 8. Hadoop2.0 新特性: YARN-架构及组件
  • 9. Hadoop2.0 新特性: YARN-MRv2作业处理流程
  • 10. Hadoop2.0 新特性: YARN-MRv2作业处理流程步骤1 用户向YARN 中提交应用程序, 其中包括ApplicationMaster 程序、启动ApplicationMaster 的命令、用户程序等。 步骤2 ResourceManager 为该应用程序分配第一个Container, 并与对应的NodeManager 通信,要求它在这个Container 中启动应用程序的ApplicationMaster。 步骤3 ApplicationMaster 首先向ResourceManager 注册, 这样用户可以直接通过ResourceManage 查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7。 步骤4 ApplicationMaster 采用轮询的方式通过RPC 协议向ResourceManager 申请和领取资源。 步骤5 一旦ApplicationMaster 申请到资源后,便与对应的NodeManager 通信,要求它启动任务。 步骤6 NodeManager 为任务设置好运行环境(包括环境变量、JAR 包、二进制程序 等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。 步骤7 各个任务通过某个RPC 协议向ApplicationMaster 汇报自己的状态和进度,以让ApplicationMaster 随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC 向ApplicationMaster 查询应用程序的当 前运行状态。 步骤8 应用程序运行完成后,ApplicationMaster 向ResourceManager 注销并关闭自己。
  • 11. Hadoop2.0 新特性: YARN-1.0资源调度Hadoop 1.0 采用了静态资源设置策略,即每个节点实现配置好可用的slot总数,这些slot数目一旦启动后无法再动态修改 Hadoop 1.0将slot分为Map slot和Reduce slot两种,不允许共享,同时其它应用也无法共享资源 没引入有效的资源隔离机制,采用了基于jvm的资源隔离机制,过于粗糙,很多资源,比如CPU,无法进行隔离核心概念:Slot,只能实现资源的静态管理和分配
  • 12. Hadoop2.0 新特性: YARN的资源调度模型核心概念:Container,实现资源动态管理和分配
  • 13. Hadoop2.0 新特性: YARN的资源调度特点支持CPU和内存两种资源调度方式,允许配置每个节点、每个任务可用的CPU和内存资源总量 可以根据实际需要和CPU性能将每个物理CPU划分成若干个虚拟CPU。管理员可为每个节点单独配置可用的虚拟CPU个数,用户程序也可指定每个任务需要的虚拟CPU个数 可为每个节点单独配置可用内存,采用线程监控的方案控制内存使用,发现任务超过约定的资源量会将其杀死 Mesos等资源管理软件 5.    // Priority for worker containers - priorities are intra-application 6.    Priority priority = Records.newRecord(Priority.class); 7.    priority.setPriority(0);       8.  9.    // Resource requirements for worker containers 0.    Resource capability = Records.newRecord(Resource.class); 1.    capability.setMemory(128); 2.    capability.setVirtualCores(1); 3.  4.    // Make container requests to ResourceManager 5.    for (int i = 0; i < n; ++i) { 6.      ContainerRequest containerAsk = new ContainerRequest(capability, null, null, priority); 7.      rmClient.addContainerRequest(containerAsk); 8.    } Setup requirements for worker containersMake resource requests to ResourceManager
  • 14. Hadoop2.0 新特性: YARN上运行的软件Applications Run Natively In HadoopHDFS2 (Redundant, Reliable Storage)YARN (Cluster Resource Management) Batch (MapReduce)InterActive (Tez)Streaming (Storm, S4,…)Graph (Giraph)IN-Memory (Spark)HPC MPI (OpenMPI)OnLine (HBase)Other (Search) (Weave…) 运行在YARN上带来的好处 : 一个集群部署多个版本 计算资源按需伸缩 不同负载应用混搭,集群利用率高 共享底层存储,避免数据跨集群迁移
  • 15. Hadoop2.0 新特性: NameNode HA Hadoop 1.0 HA实现方式及缺陷: Secondary NameNode:阶段性合并edits和fsimage以缩短集群启动时间,不是HA ,无法立刻接管失效的NN及保证数据完整性 Backup NameNode (HADOOP-4539):它在内存中复制了NN的当前状态,算是Warm Standby,但无法保证数据完整性 手动把name.dir指向NFS:这是安全的Cold Standby,可以保证元数据不丢失,但集群的恢复则完全靠手动 Facebook AvatarNode:Hot Standby,无法自动切换,需要管理员手动把对外提供服务的虚拟IP映射到Standby NN 其它依赖外部的HA机制,譬如DRBD,Linux HA,VMware的FT等等
  • 16. Hadoop2.0 新特性: NameNode HAHadoop 2.0 HA实现方式:Others: QJM:HDFS HA using the Quorum Journal Manager to share edit logs between the Active and Standby NameNodes, BookKeeper …
  • 17. Hadoop2.0 新特性: NameNode HA利用共享存储在两个NN间同步edits信息,如NFS等中高端存储设备内部的各种RAID以及冗余硬件 DataNode同时向两个NN汇报块信息,让Standby NN保持集群最新状态 用FailoverController watchdog进程监视和控制NN进程,防止因 NN FullGC挂起无法发送heart beat 防止脑裂(brain-split):主备切换时由于切换不彻底等原因导致Slave误以为出现两个active master,通常采用Fencing机制: -共享存储fencing,确保只有一个NN可以写入edits -客户端fencing,确保只有一个NN可以响应客户端的请求 - DN fencing,确保只有一个NN可以向DN下发删除等命令Hadoop 2.0 HA实现方式说明:
  • 18. Hadoop2.0 新特性: NameNode Federation Hadoop 1.0版本容量及性能缺陷: 单NameNode容量限制: 按常规的估算公式1百万个块需要1G内存,1亿个文件NameNode进程可能需要上百G内存保存元数据信息,受制于Java内存管理能力限制,上百G内存保基本上达到上限 单NameNode性能限制: 所有的元数据信息的读取和操作都需要与NameNode进行通信,如客户端的addBlock、getBlockLocations,DataNode的blockRecieved、blockReport等操作,在集群规模变大后, NameNode 会成为性能瓶颈
  • 19. Federation由多个NameService组成,每个NameService又由一个或两个(HA)NN组成 每个NameNode会定义一个存储池,单独对外提供服务,多个NameNode共用集群里DataNode上的存储资源 使用客户端挂载表把不同的目录映射到不同的NameNode上,通过目录自动对应NameNode,使Federation的配置改动对应用透明 Hadoop2.0 新特性: NameNode Federation Hadoop 2.0 Federation实现方式
  • 20. Hadoop2.0 新特性: HDFS Snapshots 快照是整个文件系统或文件系统的一个子树在一个时间点的实时映像,创建速度快、开销小,在一些场景快照具有非常重要的用途: 防止用户错误操作:以滚动的方式建立只读定期快照,如果用户不小心删除文件,该文件可以从最新的RO快照中恢复 数据备份:在某一时间点创建只读快照作为备份,并且可以以此时间点实现增量数据处理 实验/测试设置:快照数据可以用于测试,防止毁坏生产数据 灾难恢复:快照数据复制到远程站点可用于灾难恢复
  • 21. NFS允许用户像访问本地文件系统一样访问远程文件系统,而将NFS引入HDFS后,用户可像读写本地文件一样读写HDFS上的文件,大大简化了HDFS使用 通过引入一个NFS gateway服务实现,该服务能将NFS协议转换为HDFS访问协议 用于HDFS文件浏览、文件上传、下载及大型数据流处理 Hadoop2.0 新特性:通过NFSv3访问HDFS Hadoop 2.0 NFSv3实现方式NFS gateway设计
  • 22. Hadoop2.0 新特性:其它特性支持Windows操作系统 从2.2.0开始,Hadoop开始支持Windows操作系统 向上兼容1.xMapReduce应用程序 与Hadoop生态系统其他系统进行了充分的集成测试 除了HDFS、MapReduce和YARN这三个核心系统外,Hadoop生态系统包括HBase、Hive、Pig等进行了充分的集成测试 HDFS的symlinks(类似于Linux中的软连接)被移到了2.3.0版本中
  • 23. 当前版本新增特性(2.2.3)对异构存储媒介的支持 之前HDFS假设底层存储媒介是同构的,性能完全一样。随着新型存储媒介如SSD的出现,HDFS也支持异构存储媒介,即一个HDFS的各个存储节点上可以指定若干不同的存储媒介,比如HDD、SSD等 借助于HDFS对异构存储层次的支持,能够在同一个Hadoop集群上使用不同的存储类型,此外还可以使用不同的存储媒介-例如商业磁盘、企业级磁盘、SSD或者内存等 支持DataNode Cache 利用DataNode的可用内存集中地缓存、管理数据,并暴露给外界应用程序使用 MapReduce、Hive等应用程序可以申请内存进行缓存,然后直接从数据节点的内存中读取内容,通过完全避免磁盘操作极大地提高效率。如Hive正在开发的ORC文件实现
  • 24. 下一版本展望(2.2.4)HDFS将会支持ACL 目前HDFS的权限控制与Linux一致,包括用户、用户组、其他用户组三类权限,这种方式有很大局限性 ACL是Access Control Lists的简称,记录了哪些用户对该目录、文件有哪些权限,每个文件/目录将可以对应一个ACL YARN Resource Manager单点故障解决 Resource Manager存在单点故障,社区提出了以Zookeeper为核心的RM HA自动故障转移功能方案,新版本YARN将集成此功能,支持RM的自动故障转移 YARN通用应用程序时间轴和历史服务 其他程序如Spark等和MapReduce应用程序一样拥有JobHistoryServer 提供对long-running application(如Http Server)的支持
  • 25. Thanks