您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > Hadoop介绍+环境搭建
云计算开发平台——Hadoop系统钱能武030130733目录1.Hadoop概述2.Hadoop分布式文件系统(HDFS)简介3.HDFS基本结构4.HDFS的文件操作5.HDFS的一些设计特点6.MapReduce分布式计算7.Hadoop优势注:参考书籍分布式系统及云计算概论陆嘉恒主编Hadoop实战陆嘉恒著1.Hadoop概述Hadoop是一个分布式系统基础架构,是一个能够对大量数据进行分布式处理的软件框架,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的的威力高速运算和存储。Hadoop框架中最核心的设计就是:MapReduce和HDFS。Hadoop程序目前大多运行在Linux系统上,windows上运行需要安装其他插件(Cygwin)。3.Hadoop分布式文件系统(HDFS)简介Hadoop也跟其他云计算项目有共同点和目标:实现海量数据的计算。而进行海量计算需要一个稳定的、安全的数据容器,于是就有了Hadoop分布式文件系统(HDFS)。Hadoop分布式文件系统是具有高可靠性和高可扩展性的分布式文件系统,能够提供海量的文件存储能力。它的开发和实现遵循了Google文件系统(GFS)的核心原理,受到了业界极大关注,并已被广泛应用。4.HDFS基本结构HDFS基本储存单元——Block(数据块)一个文件有可能包含多个块,一个块有可以包含多个文件,由文件的大小和块大小的参数决定。HDFS结构特点HDFS是一个大规模的分布式文件系统,采用master/slave架构。一个HDFS集群是有一个Namenode和一定数目的Datanode组成。Namenode是一个中心服务器,负责管理文件系统的名字空间和客户端对文件的访问。Datanode在集群中一般是一个节点一个,负责管理它所在节点上的存储。HDFS:Namenode和Datanode从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。HDFS把节点分为两类:Namenode和Datanode。Namenode是唯一的,程序与之通信,然后从Datanode上存取文件。从外部看,HDFS就像一个分级的文件系统,用户能够以文件的形式在上面创建、删除、移动或重命名文件等。HDFS集群框架图HDFS:文件读取和写入基本过程写入文件:•Client向NameNode发起文件写入的请求•NameNode根据文件大小和文件块配置情况返回给Client它所管理部分DataNode的信息•Client将文件划分为多个文件块,根据DataNode的地址信息按顺序写入到每一个DataNode块中读取文件:•Client向NameNode发起文件读取的请求•NameNode返回文件存储的DataNode的信息•Client读取文件信息5.HDFS的文件操作HDFS:文件读取流程图NameNodenamenodeDataNodedatanodeDataNodedatanodeDataNodedatanodeclientnodeHDFSclientDistributedFileSystemFSDataInputStream1:open2:getblocklocations3:read4:read5:read6:closeclientJVMHDFS:文件写入流程图NameNodenamenodeDataNodedatanodeDataNodedatanodeDataNodedatanodeclientnodeHDFSclientDistributedFileSystemFSDataInputStream1:create2:create3:write4:writepacket6:closeclientJVM5:ackpacket7:complete4:4:5:5:PipelineofdatanodesHDFS中的文件都是一次性写入的,并且严格要求在任何时候只能有一个写入者。HDFS:数据复制HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文件。它将每个文件存储成一系列的数据块,除了最后一个,所有的数据块都是同样大小的。为了容错,文件的所有数据块都要备份有副本。每个文件的数据块大小和副本数目都是可配置的。应用程序可以指定某个文件的副本系数。HDFS:数据复制数据块(Block)复制:•NameNode发现部分文件的Block数不符合最小复制数或者部分DataNode失效•通知DataNode相互复制Block•DataNode开始直接相互复制Namenode全权管理数据块的复制,它周期性地从集群中的每个Datanode接收心跳信号和块状态报告。接收到心跳信号意味着该Datanode节点工作正常。块状态报告包含了一个该Datanode上所有数据块的列表。问题:节点失效是常态!•DataNode中的磁盘挂了怎么办?•DataNode所在机器挂了怎么办?•NameNode挂了怎么办?•Client挂了怎么办?DataNode的磁盘挂了怎么办?•DataNode正常服务•坏掉的磁盘上的数据尽快通知NameNodeDataNode所在机器挂了怎么办?•问:NameNode怎么知道DataNode挂掉了?•答:datanode每3秒钟向namenode发送心跳,如果10分钟datanode没有向namenode发送心跳,则namenode认为该datanode已经dead,namenode将取出该datanode上对应的block,对其进行复制。NameNode挂了怎么办?•持久化元数据–操作日志(editlog)•记录文件创建,删除,修改文件属性等操作–Fsimage(HDFS元数据镜像文件)•包含完整的命名空间•File-Block的映射关系•文件的属性(ACL,quota,修改时间等)NameNode挂了怎么办?•SecondaryNameNode–将NameNode的fsimage(HDFS元数据镜像文件)与editlog(HDFS文件改动日志)从Namenode复制到临时目录–将fsimage同editlog合并,并产生新的fsimage(减少启动时间)–将产生的新的fsimage上传给NameNode–清除NameNode中的editlog[注]:SecondaryNameNode仅仅对NameNode中元数据提供冷备方案SecondaryNameNode辅助NN处理FsImage和事务日志1、从NN拷贝FsImage和事务日志到临时目录2、合并FsImage和事务日志生成一个新的FsImage3、上传新的FsImage到NN上4、NN更新FsImage并清理原来的事务日志Client挂了怎么办?•问:Client所在机器挂了有什么影响?•答:一致性问题Createfile,getleaseRenewleaseCrashLeaserecovery•HadoopMapReduce是一种简单易用的软件框架,可以开发出运行在由上千个商用机器组成的大型机器上,并以一种可靠容错的方式并行处理的数据集(太字节级的数据)•Map-Reduce计算模型的实现–大规模数据处理的框架•所有数据作为KEY-VALUE对进行处理–嵌入用户数据处理程序•简单计算模型,但可以处理很多不同类型的问题–日志数据处理–搜索引擎6、MapReduce分布式计算HadoopMap-Reduce对于任务处理的两步:•一个MapReduce作业(Jop)通常会把输入集切分成若干独立的数据块,由Map任务(Task)以完全并行的方式处理它们•MapReduce框架会先排序map任务的输出,然后把结果输入到reduce任务•通常计算结点和存储结点是同一个结点,也就是说MapReduce框架和HDFS是运行在相同的结点集上。•MapReduce框架是由一个单独运行在主结点的JobTracker和运行在每个集群从结点的TaskTracker(任务跟踪)共同构成。Map/Reduce数据流程•Input•Split(可缺省,由系统完成)•Recordreader(可缺省,由系统完成)•Mapper•Combiner(可缺省)•Shuffler(partitionner)(可缺省,由系统完成)•Sort(可缺省,由系统完成)•Reducer(可缺省)•OutputMapReduce处理MapReduce物理上处理过程MapReduceMapReduce的key排序逻辑MapReduce本身Key的数据类型的排序逻辑其实就是依赖于Hadoop本身的继承与WritableComparableT的基本数据类型和其他类型(相关类型可参考《Hadoop权威指南》第二版的90页)的compareTo方法的定义。Key排序的规则:1.如果调用jobconf的setOutputKeyComparatorClass()设置mapred.output.key.comparator.class2.否则,使用key已经登记的comparator3.否则,实现接口WritableComparable的compareTo()函数来操作注:可以修改compareTo来实现自己所需的比较算法MapReduce的二次排序Hadoop的MapReduce模型支持基于key的排序,即在一次MapReduce之后,结果都是按照key的大小排序的。但是在很多应用情况下,我们需要对映射在一个key下的value集合进行排序,即“secondarysort”。在《hadoopthedefinateguide》的P227的“secondarysort”章节中,以year,temperature为例,在map阶段按照year来分发temperature,在reduce阶段按照同一year对应的temperature大小排序。MapReduceMapReduce举例:WordCount的Map过程WordCount的Reduce过程举例:事例MapReduce过程Hadoop优势:•可扩展。不论是存储的可扩展还是计算的可扩展都是Hadoop的设计根本。•经济。它在通常可用的计算机集簇间分配数据和处理,这些集簇可以被计入数以千计的节点当中•高效。通过分配数据,Hadoop能够在存放数据的节点之间平行的处理它们,因此其处理速度非常快。•可信。Hadoop能够自动保存数据的多份副本,并且能够自动地将失败的任务重新分配谢谢!Hadoop环境搭建•①硬件环境实验共使用三台PC机,一台机器用作NameNode,另两台用作DateNode。•②软件环境软件统一安装在虚拟机系统VMware上,Linux系统采用Ubuntu,jdk使用jdk1.6.0版,Hadoop使用hadoop-0.20.2版本。1.安装环境2.准备工作•①虚拟机VMware的安装下载安装软件并分别在3台机器上安装。由于3台机器的某盘剩余空间都较大,统一将VMware安装在某盘上,分配磁盘空间时统一分配为10G。•②Ubuntu的安装新建虚拟机,加载Linux系统Ubuntu的iso镜像文件,并在VMware环境下安装Ubuntu系统。•③Ubuntu简单设置对Ubuntu进行简单的网络设置,使其接入Internet,可使用其自带的语言支持工具将其环境汉化。•④JDK、SSH的安装使用Ubuntu自带的“新立得”软件管理工具包,可以搜索、下载并安装JDK、SSH。准备工作(续)•⑤Hadoop的安装在Ubuntu中,通过网址下载hadoop-0.20.2.tar.gz,解压到/usr/local/hadoop文件夹。准备工作
本文标题:Hadoop介绍+环境搭建
链接地址:https://www.777doc.com/doc-3393766 .html