Hadoop电子工业出版社刘鹏主编《云计算》教材配套课件8本资料由-大学生创业|创业|创业网提供资料在线代理|网页代理|代理网页|减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|主要内容•Hadoop项目简介•HDFS体系结构•HDFS关键运行机制•HadoopVS.Google(分布式文件系统)•HadoopAPI•Hadoop环境搭建本资料由-大学生创业|创业|创业网提供资料在线代理|网页代理|代理网页|减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|项目简介•Apache的解决方案Google云计算MapReduceBigTableGFSChubbyGFS--HDFSMapReduce--HadoopBigTable--HBaseHadoop项目简介•HDFS为了做到可靠性(reliability)创建了多份数据块(datablocks)的复制(replicas),并将它们放置在服务器群的计算节点中(computenodes),MapReduce就可以在它们所在的节点上处理这些数据了。HDFS体系结构•NameNodeMaster•DataNodeChunkseverHDFS关键运行机制--保障可靠性的措施•一个名字节点和多个数据节点•数据复制(冗余机制)--存放的位置(机架感知策略)•故障检测--数据节点心跳包(检测是否宕机)块报告(安全模式下检测)数据完整性检测(校验和比较)--名字节点(日志文件,镜像文件)•空间回收机制HDFS关键运行机制--写文件流程•客户端缓存•流水线复制•并发写控制•流程:1.客户端把数据缓存到本地临时文件夹2.临时文件夹数据超过64M,客户端联系NameNode,NameNode分配DataNode,DataNode依照客户端的位置被排列成一个有着最近物理距离和最小的序列3.与序列的第一个数据服务器建立Socket连接,发送请求头,然后等待回应,依次下传,客户端得到回包,流水线建立成功,4.正式发送数据,以4K为大小传送HDFS关键运行机制--读文件流程•客户端联系NameNode,得到所有数据块信息,以及数据块对应的所有数据服务器的位置信息•尝试从某个数据块对应的一组数据服务器中选出一个,进行连接(选取算法未加入相对位置的考虑)•数据被一个包一个包发送回客户端,等到整个数据块的数据都被读取完了,就会断开此链接,尝试连接下一个数据块对应的数据服务器,整个流程,依次如此反复,直到所有想读的都读取完了为止HadoopVS.Google•技术架构的比较–数据结构化管理组件:Hbase→BigTable–并行计算模型:MapReduce→MapReduce–分布式文件系统:HDFS→GFS–Hadoop缺少分布式锁服务ChubbyHBaseMapReduceHDFSBigTableMapReduceGFSHadoop云计算应用ChubbyGoogle云计算应用HadoopVS.Google•HDFS与GFS比较–中心服务器模式的差异•GFS:多台物理服务器,选择一台对外服务,损坏时可选择另外一台提供服务•HDFS:单一中心服务器模式,存在单点故障•原因:Hadoop缺少分布式锁服务HadoopVS.Google•HDFS与GFS比较–子服务器管理模式差异•GFS:ChunkServer在Chubby中获取独占锁表示其生存状态,Master通过轮询这些独占锁获知ChunkServer的生存状态•HDFS:DataNode通过心跳的方式告知NameNode其生存状态•GFS中,Master损坏时,替补服务器可以快速获知ChunkServer的状态•HDFS中,NameNode损坏后,NameNode恢复时需要花费一段时间获知DataNode的状态•在添加数据存储节点时,GFS的伸缩性较HDFS要好•原因:Hadoop缺乏分布式锁服务HadoopVS.Google•HDFS与GFS比较–HDFS具备安全模式•获知数据块副本状态,若副本不足,则拷贝副本至安全数目(如3个)–GFS不具备安全模式•副本损坏处理:API读取副本失败时,Master负责发起拷贝任务HadoopVS.Google•HDFS与GFS比较–HDFS具备空间回收机制•文件删除时,仅删除目录结构•实际数据的删除在等待一段时间后实施•优点:便于恢复文件HDFSAPI•HadoopAPI被分成(divideinto)如下几种主要的包(package):•org.apache.hadoop.conf定义了系统参数的配置文件处理API。•org.apache.hadoop.fs定义了抽象的文件系统API。•org.apache.hadoop.HdfsHDFS,Hadoop的分布式文件系统实现。•org.apache.hadoop.io定义了通用的I/OAPI,用于针对网络,数据库,文件等数据对象做读写操作。•org.apache.hadoop.ipc用于网络服务端和客户端的工具,封装了网络异步I/O的基础模块。•org.apache.hadoop.mapreduceHadoop分布式计算系统(MapReduce)模块的实现,包括任务的分发调度等。•org.apache.hadoop.metrics定义了用于性能统计信息的API,主要用于mapred和dfs模块。•org.apache.hadoop.record定义了针对记录的I/OAPI类以及一个记录描述语言翻译器,用于简化将记录序列化成语言中性的格式(language-neutralmanner)。•org.apache.hadoop.tools定义了一些命令行的工具。•org.apache.hadoop.util定义了一些公用的API。•org.apache.hadoop.Secruity用户和用户组信息HDFSAPI--org.apache.hadoop.fs•◦org.apache.hadoop.fs.FileSystem(implementsjava.io.Closeable)•◦org.apache.hadoop.fs.FilterFileSystem•◦org.apache.hadoop.fs.ChecksumFileSystem•◦org.apache.hadoop.fs.InMemoryFileSystem•◦org.apache.hadoop.fs.LocalFileSystem•◦org.apache.hadoop.fs.HarFileSystem•◦org.apache.hadoop.fs.RawLocalFileSystem•抽象文件系统的基本要素和基本操作。最显著的一个特点就是,FileSystem文件系统是基于流式数据访问的,并且,可以基于命令行的方式来对文件系统的文件进行管理与操作。HDFSAPI--org.apche.hadoop.ipc•。org.apache.hadoop.ipc.VersionedProtocol•。org.apache.hadoop.hdfs.protocol.ClientProtocol•。org.apache.hadoop.hdfs.protocol.ClientDatanodeProtocol•。org.apache.hadoop.hdfs.server.protocol.NamenodeProtocol•。org.apache.hadoop.hdfs.server.protocol.DatanodeProtocol•。org.apache.hadoop.hdfs.server.protocol.InterDatanodeProtocolHDFSAPI--org.apache.hadoop.HDFS•ClientProtocol协议:客户端进程与Namenode进程进行通信•DataNodeProtocol协议:一个DFSDatanode用户与Namenode进行通信的协议•InterDatanodeProtocol协议:Datanode之间的通信•ClientDatanodeProtocol协议:客户端进程与datenode进程进行通信•NamenodeProtocol协议:次级Namenode(SecondaryNameNode)与Namenode进行通信所需进行的操作clientNameNodeDataNodeclientProtocolDataNodeProtocolClientDatanodeProtocolNamenode主要实现了ClientProtocol,DatanodeProtocol,NamenodeProtocolHDFSAPI--ClientProtocol(文件基本操作接口)•获取到指定文件src的全部块的信息返回LocatedBlocks,包括文件长度、组成文件的块及其存储位置(所在的Datanode数据结点)--publicLocatedBlocksgetBlockLocations(Stringsrc,longoffset,longlength)•在制定的文件系统命名空间中创建一个文件入口(entry),在命名空间中创建一个文件入口。该方法将创建一个由src路径指定的空文件--publicvoidcreate(Stringsrc,FsPermissionmasked,StringclientName,booleanoverwrite,shortreplication,longblockSize)•对指定文件执行追加写操作,返回信息,可以定位到追加写入最后部分块的信息--publicLocatedBlockappend(Stringsrc,StringclientName)•设置副本因子,为一个指定的文件修改块副本因子--publicbooleansetReplication(Stringsrc,shortreplication)HDFSAPI--ClientProtocol(文件基本操作接口)•为已经存在的目录或者文件,设置给定的操作权限--publicvoidsetPermission(Stringsrc,FsPermissionpermission)•设置文件或目录属主--publicvoidsetOwner(Stringsrc,Stringusername,Stringgroupname)•客户端放弃对指定块的操作--publicvoidabandonBlock(Blockb,Stringsrc,Stringholder)•客户端向一个当前为写操作打开的文件写入数据块--publicLocatedBlockaddBlock(Stringsrc,StringclientName)•客户端完成对指定文件的写操作,并期望能够写完,在写完以后关闭文件--publicbooleancomplete(Stringsrc,StringclientName)•客户端向Namenode报告corrupted块的信息(块在Datanode上的位置信息)--publicvoidreportBadBlocks(LocatedBlock[]blocks)throwsIOExceptionHDFSAPI--ClientProtocol(文件基本操作接口)•在文件系统命令空间中重命名一个文件或目录--publicbooleanrename(Stringsrc,Stringdst)•删除文件或目录src--publicbooleandelete(Stringsrc)•删除文件或目录src,根据recursive选项来执行--publicbooleandelete(Stringsrc,booleanrec