Hadoop基本概念与架构.ppt
Hadoop基本概念与架构,dongxicheng.org,主要内容,主要内容,背景介绍,Hadoop是一整套大数据存储和处理方案数据收集数据存储(离线存储,在线存储)数据分析与挖掘Hadoop是一个生态系统每个系统解决一类问题系统间相互配合Hadoop生态系统特点源代码开源(免费)社区活跃、参与者众多涉及分布式存储和计算的方方面面已得到企业界验证,Hadoop发行版本(以开源版本为主),Apache Hadoop()最原始版本,所有其他发行版均基于该发行版实现的包含1.0和2.0两个系列HDP(http:/hadoop 1.0系列CDH4/CDH5:对应apache hadoop 2.0系列不同发行版兼容性架构、部署和使用方法一致,不同之处仅在若干内部实现。,主要内容,Hadoop内核基本构成,分布式存储系统HDFS(Hadoop Distributed File System)高可靠性高扩展性高吞吐率资源管理系统YARN(Yet Another Resource Negotiator)负责集群资源的统一管理和调度分布式计算框架MapReduce易于编程高容错性高扩展性,Hadoop内核基本构成,HDFS是什么,源自于Google的GFS论文发表于2003年10月HDFS是GFS克隆版Hadoop Distributed File System易于扩展的分布式文件系统运行在大量普通廉价机器上,提供容错机制为大量用户提供性能不错的文件存取服务,HDFS优点,高容错性数据自动保存多个副本副本丢失后,自动恢复适合批处理移动计算而非数据数据位置暴露给计算框架适合大数据处理GB、TB、甚至PB级数据百万规模以上的文件数量10K+节点规模,HDFS优点,流式文件访问一次性写入,多次读取保证数据一致性可构建在廉价机器上通过多副本提高可靠性提供了容错和恢复机制,HDFS缺点,低延迟数据访问比如毫秒级低延迟与高吞吐率小文件存取占用NameNode大量内存寻道时间超过读取时间并发写入、文件随机修改一个文件只能有一个写者仅支持append,存储文件的一种方式,Server(10*1TB),Server(10*1TB),Server(10*1TB),Server(10*1TB),file1,file2,file3,file4,file1,file1,file2,file2,file3,file4,存在问题,难以实现负载均衡文件大小不同,节点磁盘利用率难以均衡不利于并行处理大文件放在一个节点上,受限于单个节点处理能力,HDFS设计思想,Server(10 TB),Server(10 TB),Server(10 TB),block1,block2,block3,block4,block1,block1,block2,block2,block3,block3,block4,block4,Server(10 TB),block1,block2,block3,HDFS架构,Standby Namenode,HDFS架构,主Master(只有一个)管理HDFS的名称空间管理数据块映射信息配置副本策略处理客户端读写请求,Active Namenode,NameNode的热备;定期合并fsimage和fsedits,推送给NameNode;当Active NameNode出现故障时,快速切换为新的 Active NameNode。,Standby NameNode,HDFS架构,文件切分与NameNode交互,获取文件位置信息;与DataNode交互,读取或者写入数据;管理HDFS;访问HDFS。,Client,Slave(有多个)存储实际的数据块执行数据块读/写,Datanode,HDFS数据块(block),文件被切分成固定大小的数据块默认数据块大小为64MB,可配置若文件大小不到64MB,则单独存成一个block为何数据块如此之大数据传输时间超过寻道时间(高吞吐率)一个文件存储方式按大小被切分成若干个block,存储到不同节点上默认情况下每个block有三个副本,HDFS写流程介绍,HDFS读流程介绍,HDFS副本放置策略,HDFS块副本放置策略,RackA,RackB,问题:一个文件划分成多个block,每个block存多份,如何为每个block选择节点存储这几份数据?Block副本放置策略:副本1:同Client的节点上副本2:不同机架中的节点上副本3:与第二个副本同一机架的另一个节点上其他副本:随机挑选,HDFS可靠性,文件损坏,网络或者机器失效,NameNode挂掉,常见的三种错误情况,文件完整性CRC32校验用其他副本取代损坏文件HeartbeatDatanode 定期向Namenode发heartbeat元数据信息 FSImage(文件系统镜像)、Editlog(操作日志)多份存储主备NameNode实时切换,文件损坏,网络或者机器失效,NameNode挂掉,常见的三种错误情况,HDFS不适合存储小文件,元信息存储在NameNode内存中一个节点的内存是有限的存取大量小文件消耗大量的寻道时间类比拷贝大量小文件与拷贝同等大小的一个大文件NameNode存储block数目是有限的一个block元信息消耗大约150 byte内存存储1亿个block,大约需要20GB内存如果一个文件大小为10K,则1亿个文件大小仅为1TB(但要消耗掉NameNode 20GB内存),YARN是什么,资源管理和调度系统管理集群中的资源(类似于操作系统)将资源分配给上层的应用程序好处降低运维成本有利于数据共享提高资源利用率,YARN基本架构,YARN基本架构,ResourceManager处理客户端请求启动/监控ApplicationMaster监控NodeManager资源分配与调度NodeManager单个节点上的资源管理处理来自ResourceManager的命令处理来自ApplicationMaster的命令Container对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息,YARN基本架构,ApplicationMaster数据切分为应用程序申请资源,并分配给内部任务任务监控与容错Client用户与YARN交互的客户端程序提交应用程序、监控应用程序状态,杀死应用程序等,YARN工作原理,NodeManager,NodeManager,NodeManager,ResourceManager,ApplicationMaster,Client,Client,Client,Task,Container,Container,Task,Task,Container,YARN资源调度器,多类型资源调度采用DRF算法(论文:“Dominant Resource Fairness:Fair Allocation of Multiple Resource Types”)目前支持CPU和内存两种资源提供多种资源调度器FIFOFair SchedulerCapacity Scheduler多租户资源调度器支持资源按比例分配支持层级队列划分方式支持资源抢占,YARN资源调度器Capacity Scheduler,由Yahoo开源,共享集群调度器以队列方式组织作业每个队列内部采用FIFO调度策略每个队列分配一定比例资源可限制每个用户使用资源量,YARN资源调度器Capacity Scheduler,app11,按到达时间排序,先来先服务,app12,app13,app14,app15,app16,app21,app22,app23,app24,app25,app31,app32,app33,app34,app35,app36,app37,queueA,queueB,queueC,100 memory,(20%,15),(50%,25),(30%,25),YARN资源调度器Fair Scheduler,由Facebook开源的,共享集群调度器以队列方式组织作业基于最小资源量(min share)与公平共享量(fair share)进行调度作业优先级越高,分配到的资源越多,YARN资源调度器Fair Scheduler,job11,优先级越大,获得的资源越多,job12,job13,job14,job15,job16,job21,job22,job23,job24,job25,job31,job32,job33,job34,job35,job36,job37,queueA,queueB,queueC,YARN资源隔离机制,支持内存和CPU两种资源隔离内存是一种“决定生死”的资源CPU是一种“影响快慢”的资源内存隔离基于线程监控的方案基于Cgroups的方案CPU隔离默认不对CPU资源进行隔离基于Cgroups的方案,以YARN为核心构建服务体系,MapReduce是什么,源自于Google的MapReduce论文发表于2004年12月Hadoop MapReduce是Google MapReduce克隆版MapReduce特点易于编程良好的扩展性高容错性适合PB级以上海量数据的离线处理,MapReduce不擅长什么,实时计算像MySQL一样,在毫秒级或者秒级内返回结果流式计算MapReduce的输入数据集是静态的,不能动态变化MapReduce自身的设计特点决定了数据源必须是静态的DAG计算多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出,初识MapReduce,41,MapReduce编程模型,Split 0,Split 1,Split 2,Split 3,Mapper,Read(Inputformat),Mapper,Read(Inputformat),Mapper,Read(Inputformat),Mapper,Read(Inputformat),a,1,b,1,Partitioner,c,1,c,1,Partitioner,a,1,c,1,Partitioner,b,1,b,1,Partitioner,Shuffle&Sort,a,1,a,1,Reducer,b,1,b,1,Reducer,b,1,c,1,c,1,Reducer,c,1,Part-0,Part-1,Part-2,Map阶段,Write(Outputformat),Write(Outputformat),Reduce阶段,Shuffle&Sort,Shuffle&Sort,HDFS,HDFS,MapTask,ReduceTask,Write(Outputformat),MapReduce编程模型,MapReduce编程模型,Map阶段InputFormat(默认TextInputFormat)MapperCombiner(local reducer)PartitionerReduce阶段ReducerOutputFormat(默认TextOutputFormat),MapReduce 1.0架构,MapReduce 1.0架构,Master管理所有作业将作业分解成一系列任务将任务指派给TaskTracker作业/任务监控、错误处理等,JobTracker,TaskTrackers,Slave运行Map Task和Reduce Task与JobTracker交互,执行命令,并汇报任务状态,MapReduce 1.0架构,Map引擎解析每条数据记录,传递给用户编写的map()将map()输出数据写入本地磁盘(如果是map-only作业,则直接写入HDFS),Map Task,Reduce Task,Reduce引擎从Map Task上远程读取输入数据对数据排序将数据按照分组传递给用户编写的reduce(),MapReduce 2.0架构,MapReduce 2.0架构,Client与MapReduce 1.0的Client类似,用户通过Client与YARN交互,提交MapReduce作业,查询作业运行状态,管理作业等。MRAppMaster功能类似于 1.0中的JobTracker,但不负责资源管理;功能包括:任务划分、资源申请并将之二次分配个Map Task和Reduce Task、任务状态监控和容错。,MapReduce 实现机制数据本地性,什么是数据本地性(data locality)如果任务运行在它将处理的数据所在的节点,则称该任务具有“数据本地性”本地性可避免跨节点或机架数据传输,提高运行效率数据本地性分类同节点(node-local)同机架(rack-local)其他(off-switch),MapReduce 实现机制推测执行,作业完成时间取决于最慢的任务完成时间一个作业由若干个Map任务和Reduce任务构成因硬件老化、软件Bug等,某些任务可能运行非常慢推测执行机制发现拖后腿的任务,比如某个任务运行速度远慢于任务平均速度为拖后腿任务启动一个备份任务,同时运行谁先运行完,则采用谁的结果不建议启用推测执行机制的情况任务间存在严重的负载倾斜特殊任务,比如任务向数据库中写数据,MapReduce 实现机制任务并行执行,主要内容,Hadoop 1.0 生态系统构成,Hadoop 2.0 生态系统构成,参考资料,Hadoop文档:Apache:http/Cloudera:Hortonworks:httpHadoop书籍:Hadoop权威指南(第二版)(Hadoop权威著作)Hadoop In Action(Hadoop生态系统介绍与入门)Hadoop Operations(Hadoop集群搭建、管理与维护)Hadoop Operations and Cluster Management CookbookHadoop Real-World Solutions Cookbook(Hadoop各种实用技巧),Q&A?Thank You!,