云存储之HDFSOutlineHDFS简介空间结构通信协议簇及Shell关键运行机制及API41231.HDFS简介•Hadoop项目http://hadoop.apache.org/DougCutting,基于Lucene的开源项目Nutch,其目标是构建出一个包括网络蜘蛛、文件存储等模块的网页搜索系统;受到最先由GoogleLab开发的Map/Reduce和GoogleFileSystem(GFS)的启发。2006年3月份,从nutch0.8.0开始,将其中实现的NDFS和MapReduce剥离出来成立一个新的开源项目,这就是Hadoop.•HDFS(HadoopDistributedFileSystem)http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/Federation.html1.HDFS简介管理网络中跨多台计算机存储的文件系统称为分布式文件系统。HDFS是Hadoop中的分布式文件系统(HadoopDistributedFileSystem)。HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(largedataset)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements),这样可以流的形式访问(streamingaccess)文件系统中的数据。HDFS是基于块存储的。HDFS中的文件是被分成64M一块的数据块存储的。如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间。1.HDFS简介假设前提与目标硬件故障是常态。因此,故障检测与快速自动故障恢复是HDFS设计的核心目标;流式访问。HDFS不是普通的文件系统,它被设计适合于批量处理的情形,而不是在于与用户的交互性。因此,它更注重于高的传输率,而不是低延迟性。也因此,而放宽了POSIX的语法要求。大数据集。HDFS主要设计用来存储海量的大文件。因此,高带宽和可扩展到成百上千个节点也成为HDFS设计的主要目标。简单的一致性模型。HDFS假设文件的读写模式是一次写多次读模式,这种模式简化了数据的一致性问题,并且使得数据传输效率高。移动计算比移动数据成本低。2.空间结构http://itm-vm.shidler.hawaii.edu/HDFS/ArchDocOverview.html2.空间结构http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/Federation.html2.空间结构从上面的图中可以看出,Namenode,Datanode,Client之间的通信都是建立在TCP/IP的基础之上的。当Client要执行一个写入的操作的时候,命令不是马上就发送到Namenode,Client首先在本机上临时文件夹中缓存这些数据,当临时文件夹中的数据块达到了设定的Block的值(默认是64M)时,Client便会通知Namenode,Namenode便响应Client的RPC请求,将文件名插入文件系统层次中并且在Datanode中找到一块存放该数据的block,同时将该Datanode及对应的数据块信息告诉Client,Client便这些本地临时文件夹中的数据块写入指定的数据节点。HDFS采取了副本策略,其目的是为了提高系统的可靠性,可用性。HDFS的副本放置策略是三个副本,一个放在本节点上,一个放在同一机架中的另一个节点上,还有一个副本放在另一个不同的机架中的一个节点上。3.通信协议簇及Shell3.通信协议簇及Shell•ClientProtocol3.通信协议簇及Shell•DatanodeProtocol3.通信协议簇及Shell•DataTransferProtocol(功能由Datanode处理函数完成)3.通信协议簇及Shell•ShellUsage:hadoop[--configconfdir]COMMAND4.关键运行机制及API•保障可靠性的措施•一个名字节点和多个数据节点•数据复制(冗余机制)--存放的位置(机架感知策略)•故障检测--数据节点心跳包(检测是否宕机)块报告(安全模式下检测)数据完整性检测(校验和比较)--名字节点(日志文件,镜像文件)•空间回收机制4.关键运行机制及API•写文件流程•客户端缓存•流水线复制•并发写控制•流程:1.客户端把数据缓存到本地临时文件夹2.临时文件夹数据超过64M,客户端联系NameNode,NameNode分配DataNode,DataNode依照客户端的位置被排列成一个有着最近物理距离和最小的序列3.与序列的第一个数据服务器建立Socket连接,发送请求头,然后等待回应,依次下传,客户端得到回包,流水线建立成功,4.正式发送数据,以4K为大小传送4.关键运行机制及API•读文件流程•客户端联系NameNode,得到所有数据块信息,以及...