您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > Hadoop综合介绍
Hadoop简介Hadoop是什么Hadoop是一个开源的、可靠的、可扩展的分布式并行计算框架主要部分:分布式文件系统HDFS和MapReduce算法执行作者:DougCutting贡献者:Yahoo!是最主要的贡献者语言:Java,支持多种编程语言,如:Python、C++名称起源:DougCutting儿子的黄色大象玩具的名字Hadoop大事记2004年--最初的版本(现在称为HDFS和MapReduce)由DougCutting和MikeCafarella开始实施。2005年12月--Nutch移植到新的框架,Hadoop在20个节点上稳定运行。2006年1月--DougCutting加入雅虎。2006年2月--ApacheHadoop项目正式启动以支持MapReduce和HDFS的独立发展。2006年2月--雅虎的网格计算团队采用Hadoop。2006年4月--标准排序(10GB每个节点)在188个节点上运行47.9个小时。2006年5月--雅虎建立了一个300个节点的Hadoop研究集群。2006年5月--标准排序在500个节点上运行42个小时(硬件配置比4月的更好)。2006年11月--研究集群增加到600个节点。Hadoop大事记06年12月--标准排序在20个节点上运行1.8个小时,100个节点3.3小时,500个节点5.2小时,900个节点7.8个小时。07年1月--研究集群到达900个节点。07年4月--研究集群达到两个1000个节点的集群。08年4月--赢得世界最快1TB数据排序在900个节点上用时209秒。08年10月--研究集群每天装载10TB的数据。09年3月--17个集群总共24000台机器。09年4月--赢得每分钟排序,59秒内排序500GB(在1400个节点上)和173分钟内排序100TB数据(在3400个节点上)。谁在用Hadoop假设与目标硬件错误是常态:自我修复大数据集:文件大小GB、TB以上,上百个节点,上千万个文件简单一致性模型:一次性写,多次读移动计算环境比移动数据划算:计算尽可能接近数据流式数据访问:高吞吐量、非低反应时间跨硬件和软件平台的移动Hadoop版本Hadoop版本比较混乱,让很多用户不知所措。实际上,当前Hadoop只有两个版本:Hadoop1.0和Hadoop2.0,其中,Hadoop1.0由一个分布式文件系统HDFS和一个离线计算框架MapReduce组成,而Hadoop2.0则包含一个支持NameNode横向扩展的HDFS,一个资源管理系统YARN和一个运行在YARN上的离线计算框架MapReduce。相比于Hadoop1.0,Hadoop2.0功能更加强大,且具有更好的扩展性、性能,并支持多种计算框架。Download1.2.X-currentstableversion,1.2release2.4.X-currentstable2.xversion0.23.X-similarto2.X.XbutmissingNNHA.Hadoop子项目Core:一套分布式文件系统以及支持Map-Reduce的计算框架Avro:定义了一种用于支持大数据应用的数据格式,并未这种格式提供了不同的编程语言支持HDFS:Hadoop分布式文件系统Map/Reduce:是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集ZooKeeper:是高可用的和可靠的分布式协同系统Pig:建立于HadoopCore之上为并行计算环境提供了一套数据工作流语言和执行框架Hive:是为提供简单的数据操作而设计的下一代分布式数据仓库。它提供了简单的类似SQL的语法和HiveQL语言进行数据查询。Hbase:建立于HadoopCore之上提供一个可扩展的数据库系统Flume:一个分布式、可靠、和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据Mahout:是一套具有可扩充能力的机器学习类库Sqoop:是Apache下用于RDBMS和HDFS互相导数据的工具Hadoop生态圈HDFS1.0介绍HDFS主要组件NameNode:整个文件系统的大脑,它提供整个文件系统的目录信息,各个文件的分块信息,数据块的位置信息,并且管理各个数据服务器。元数据信息保存在内存。DataNode:分布式文件系统中的每一个文件,都被切成若干个数据块,每一个数据块都被存储在不同的服务器上(默认存3份)存储在磁盘上,此服务器称之为数据服务器。维护了blockid到datanode本地文件的映射关系。Block:每个文件都会被切成若干个块(默认64MB)每一块都有连续的一段文件内容,是存储的基本单位,一个文件不到64MB也占用一个Block,文件副本数可修改,块大小不能修改。SecondaryNameNode:备用的主控服务器,在身后默默的拉取着主控服务器的日志,等待主控服务器牺牲后被扶正。HDFS优点高容错性•数据自动保存多个副本•副本丢失后,自动恢复适合批处理•移动计算而非数据•数据位置暴露给计算框架适合大数据处理•GB、TB、PB级数据•百万规模以上的文件数量•10K+节点可构建在廉价机器上•通过多副本提高可靠性•提供了容错和恢复机制HDFS缺点低延迟数据访问•比如毫秒级•低延迟与高吞吐率小文件存储•占用NameNode大量内存•寻道时间超过读取时间并发写入、文件随机修改•一个文件只能有一个写者•仅支持appendNameNode功能NameNode(NN)NameNode主要功能:接受客户端的读写服务NameNode保存metadata信息包括文件owership和permissions文件包含哪些块Block保存在哪个DataNode(由DataNode启动时上报)NameNode的metadata信息在启动后会加载到内存Metadata存储到磁盘文件名为fsimageMetadata的位置信息不会保存到fsimageEdits记录对metadata的操作日志SNN功能SecondaryNameNode(SNN)它不是NN的备份(但可以做备份),它的主要工作是帮助NN合并editslog,减少NN启动时间SNN执行合并时机根据配置文件设置的时间间隔,默认3600秒根据editslog大小,默认是64MBHDFS系统架构图HDFS核心功能(一)Namespace:HDFS支持传统的层次型文件组织,与大多数其他文件系统类似,用户可以创建目录,并在其间创建、删除、移动和重命名文件。Shell命令:Hadoop包括一系列的类shell命令,可直接和HDFS以及其他Hadoop支持的文件系统进行交互。数据复制:每个文件的block大小和replication因子都是可配置的。Replication因子可以在文件创建的时候配置,以后也可以改变。HDFS中的文件是write-one,并且严格要求在任何时候只有一个writer。机架感知:在大多数情况下,replication因子是3,HDFS的存放策略是将一个副本存放在本地机架上的节点,一个副本放在同一机架上的另一个节点,最后一个副本放在不同机架上的一个节点。HDFS核心功能(二)Editlog:FSEditLog类是整个日志体系的核心,提供了一大堆方便的日志写入API,以及日志的恢复及存储功能。集群均衡:如果某个DataNode节点上的空闲空间低于特定的临界点,那么就会启用一个计划自动地将数据从一个DataNode搬移到空闲的DataNode。空间的回收:删除文件并没有立刻从HDFS中删除,HDFS将这个文件重命名,并转移到/trash目录,用于恢复,/trash可设置保存时间。HDFS通讯图读文件写文件元数据备份部署模式典型部署故障恢复DFSClient崩溃?租约:当客户端需要占用某个文件时,与NameNode签订的一个短期合同超过期限没有续约,则终止租约,避免资源被长期霸占。DataNode崩溃?客户端读取另外一个副本后台负责副本的均衡和复制NameNode崩溃?哎呀!需要人工干预宕机其间整个集群都没反应!SecondaryNameNode可以代替NameNode但可能会导致部分Editlog的丢失,无法100%恢复MapReduce介绍MapReduce是什么MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念Map(映射)和Reduce(归约),和它们的主要思想,都是从函数式编程语言里借来的。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。MapReduce是Hadoop分布式离线计算框架MapReduce设计理念:移动计算,而不是移动数据MapReduce术语Job:用户的每一个计算请求,称为一个作业JobTracker:用户提交作业的服务器,同时它还负责各个作业任务的分配,管理所有的任务服务器。Task:每一个作业,都需要拆分开来,交由多个服务器来完成,拆分出来的执行单位,就称为任务。TaskTracker:任劳任怨的工蜂,负责执行具体的任务。SpeculativeTask:防止任务失败,在另外的任务服务器上执行同样一个任务,这就是备份任务,或叫推测性任务。任务执行流程图MapReduce通讯图数据流图Split&blockMapReduce举例MapReduce故障恢复Client崩溃?挂了就挂了,无伤大雅Task失败?本机重试向JobTracker报告错误在别的TaskTracker中重试TaskTracker崩溃?由JobTracker将其任务移交给别的TaskTrackerJobTracker崩溃?哎呀!需要人工干预正在执行的Job需要重新执行Hadoop2.0简介产生背景Hadoop1.0中HDFS和MapReduce在高可用、扩展性等方面存在问题HDFS存在的问题NameNode单点故障,难以应用于在线场景NameNode压力过大,且内存受限,影响系统扩展性MapReduce存在的问题JobTracker访问压力大,影响系统扩展性难以支持除MapReduce之外的计算框架,比如Spark、StormSpark内存计算框架Storm流计算框架Hadoop1.x和2.x•Hadoop2.x由HDFS、MapReduce和YARN三个分支•HDFS:NNFederation、HA•MapReduce:运行在YARN上的MR•YARN:资源管理系统HDFS2.x解决HDFS1.0中单点故障和内存受限问题解决单点故障HDFSHA:通过主备NameNode解决如果主NameNode发生故障,则切换到被NameNode解决内存受限问题HDFSFederation水平扩展,支持多个NameNode每个NameNode分管一部分目录所有NameNode共享所有DataNode存储资源2.X仅是架构上发生了变化,使用方式不变对HDFS使用者透明HDFS1.x中的命令和API扔可使用HadoopHA架构图HDFS2.xFederation通过多个NameNode/namespace把元数据的存储和管理分散到多个节点中,使到NameNode/namespace可以通过增加机器来进行水平扩展。能把单个NameNode的负载分散到多个节点中,在HDFS数据规模较大的时候不会降低HDFS的功能。可以通过多个namespace来隔离多个不同类型的应用,把不同类型应用的HDFS元数据的存储和管理分派到不同的NameNode中。HDFSFederationHIVE数据仓库hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通
本文标题:Hadoop综合介绍
链接地址:https://www.777doc.com/doc-3616784 .html