分布式文件系统问题解决办法所以我们稍微总

还有一个问题是你的文件是有冷热程度,有的文件经常改,有的文件很长时间改一次,不太改的文件能不能用小格子?同意吧?第三,到目前为止,文件系统和内容系统是分开处理的

总结:

第一个是分布式系统之下怎么存文件的,道理很简单,就是根源在于目录树太大,一个服务器放不下,解决办法也很简单,就是一个服务器放不下就在放多个服务器上,这是第一个

在座也许很多人认识我,我说话喜欢互动,所以刚才跟我们的工作人员商量了一下,大家随时可以提问

所以我们稍微总结一下,我们要做存储系统的时候,单机文件系统要解决三个问题(目录树、语言数据、数据内容本身),所以文件系统首先要解决的数据结构就是针对这三个要素来设计的但是你要这样做的话,还存在几个问题的:第一个,实际上是把硬盘空间分割成很多等大的空间,这样一来会导致存储的数据不连续,会导致读写速度下降第二个问题,即便是写文件的时候速度是比较慢的,你准备怎么办?第三个问题,导致本地存的目录树尺寸变很大很大这是我们单机系统面临的问题,所以我们需要分布式的文件系统

这张图就是hadoop下面的分布式系统架构,实际上这个hdfs是从google系统学来的,所以这张图是google文件系统的系统框架图说来很悬,其实道理很简单,它的最基本的设计思想是什么?它的第一个出发点是文件系统的目录树干脆拿一个专用的服务器专门处理这件事情,称之为namenode,最基本的思想就是这么一点点但是它下面还有一个什么东西?因为一个网盘存一份文件,万一那个盘子坏了,很有可能会被投诉,所以它需要备份这是第一个问题,可靠性第二个问题,它用一个专用的服务器专门处理文件的目录树,同时它又用一大堆别的服务器专门处理文件的内容数据,我们称之为datandoes这张图你比较一下hadoop下面的hdfs和google的架构图,从原理上来讲两个几乎有模一样

接下来的问题是什么?分布式系统中间允许中间某个服务器挂掉,所以存在两个问题,第一个是系统怎么样监控,保证哪些服务器是好的,保证一旦有服务器挂了,你的系统会立刻响应分布式系统用户很多,所以一定得上锁,不能允许两个用户同时改一个文件接下来,我们看看整个监控系统是怎么做的其实也很简单,比如hadoop是在监控服务器上做一棵大树,然后每个系统每个服务器是这个树的节点真实物理服务器每几秒钟或者几分钟向这个节点汇报一下说“我还活着”,我们称之为心跳只要有心跳,我的监控系统就可以知道你那个服务器还活得挺好的这就它的监控系统因为每个服务器要不断地汇报情况,占用大量的带宽当监控系统看服务器是否活着的时候,它第一个是看那棵树,那个棵树时间是有延迟的,也就是说监控的老板有可能得到的是假情报

刚才我们讲的是namenode,接下来我们讲怎么存文件的数据内容,其实google最重要的概念是备份,一份文件复制成三份,丢了以后还有两份,这样保证数据的安全,这是第一第二,它是把大文件分成几个,所以一个是分段,一个是复制,主要讲这两件事情

邓侃表示,当你要设计一个单机的文件系统的时候,你的任务就非常清晰了实际上,你的任务就是针对那三个要素(文件路径、目录树、属性+内容数据),设计一个结构把它存在硬盘 上这张图上实际上是有重大错误的,下面是windows系统的界面,但上面是linux的,所以这张图是错的但是为了方便,我想给大家展示,其实我们要设计好系统,第一件事情就是设计好数据结构

所以当你要设计一个单机的文件系统的时候,你的任务就非常清晰了实际上,你的任务就是针对那三个要素(文件路径、目录树、属性+内容数据),设计一个结构把它存在硬盘 上这张图上实际上是有重大错误的,下面是windows系统的界面,但上面是linux的,所以这张图是错的但是为了方便,我想给大家展示,其实我们要设计好系统,第一件事情就是设计好数据结构数据结构是什么东西?主要是硬盘上的数据是怎么存储的光有数据结构还不行,第二个要有功能模块,把这些数据组合起来

第二个问题,你要做一个网盘、做一个云存储,文件怎么样分布式上锁是一个问题因为上锁的时候无非是排队,前面一个用完了之后给第二个人,但是分布式锁定难点在什么地方?难在锁机制本身所在的服务器也可能挂了,所以这张图是google非常出名的图,它讲的是老大的老大(我们上锁的锁服务)当我到一个服务器申请锁的时候,它不是个永久的锁,它是租约,租约是有时间限制,会失效申请需要重新续约,如果老大的老大挂了,那么新的老大续得时候得通过广播,说跟老的老大联系不上了,这个时候它广播老大的老大,那么还得有一个跟老大的老大再续约过程也就是说有时间限制的租约以及新老大和旧老大交替时候中间是怎么转接的

刚才说硬盘上的数据存储很重要,这里面很大的看点是什么?它并不是顺序写到最后一块,它是把硬件硬盘分成若干个等尺寸的空间但现在问题是说为什么要把它整个硬盘空间分成等大的小单元,什么原因?相当于我们在停车场,停车场是预先分割成几个等大的停车 位,方便你的车出来以后让别人再停,这是可重复利用可重复利用是为了方便文件的增删改,但是同时它会带来问题就是等大存储空间,在你实际存数据的时候会有一部分空间预留出来,那就浪费了,所以空间没有充分利用,有冗余空间,这是第一个问题

分布式文件系统面临的问题

北京丰牵云启信息技术有限公司ceo邓侃

分布式文件系统其实主要目的就是要解决刚才我们说的那几个问题

第二个问题是什么?假如你刚开始占用两个,然后你开始增加这个文件数据内容的时候可能需要三个、四个,但是这个时候你可能占用别人的,这就造成内容数据占用不连续的问题我们今天为什么要特别强调不好的,所有这些存在问题的地方都是你创业的机会所以当你的文件在不断地增删改时,你所占用的硬盘空间是不连续的,我们通常管这种问题叫存储碎片那么存储碎片会造成什么东西?磁头从这个磁道跳到那个磁道,所以造成你的速度下降我们通常怎么解决碎片化?把它合并起来就行,目前为止业界没有发现更好的办法

单机文件系统面临的问题

还有一个问题是说什么?硬盘的写入操作是比较慢的,在写里面又分两种写法:一个是插入的写法,一个是写在队尾在这两种写法中,那个插入的写法比那种队尾的慢很多,所以比如上传一个文件到网盘上去,网盘的服务器必须以最快的内容把你上传的内容存下来,也就是说它对写的速度要求非常高如果每一次做插入式写法的话,速度会非常慢所以解决办法是只是在后面加,然后过一段时间你再插入,我们称这种东西叫“日志”,也就是说文件的正式内容应该在这,但是你要写入的时候、要改的时候怎么办?你不对它每一个具体的数据改,你把需要修改的东西加在尾巴上,过一段时间再合并进来这样的好处是什么?使你写文件的时候,写数据的时候数据会比较快写得很爽,但是读的时候很不爽比如你读的时候,你不仅要读这个数据,你还得把后面的东西全部做一遍做完这两个操作之后才能得到真真正正的数据,所以你想让你的写非常爽的时候你读得就不那么爽了,这是它的缺点

解剖分布式数据库

邓侃同时认为,文件系统首先要解决的数据结构就是针对这三个要素来设计的但是你要这样做的话,还存在几个问题的:第一个,实际上是把硬盘空间分割成很多等大的空间,这样一来会导致存储的数据不连续,会导致读写速度下降第二个问题,即便是写文件的时候速度是比较慢的,你准备怎么办?第三个问题,导致本地存的目录树尺寸变很大很大

分布式文件系统问题解决办法

和讯科技消息 5月25日,由中国电子学会主办,中国云计算技术与产业联盟、中国电子学会云计算专家委员会承办的“第四届中国云计算大会”今日在京举行本次会议以“示范引领、创新实践”为主题,邀请主管部门领导和云计算核心专家共同参与,着重探讨国内外云计算核心技术以及行业应用创新实践和讯科技对本次大会进行了全程报道北京丰牵云启信息技术有限公司ceo邓侃发表主题演讲

就整个hadoop或者google的系统架构图来看,第一部分把服务器分成两伙,第一波服务器专门用来存放目录树的一部分,另外一部分服务器专门用来存放文件内容的数据

我们讲云存储,首先我们不要求全,先讲讲单机上的文件系统怎么做的这张图是一个windows下面的文件管理器的截图,我为什么截这张图?我们做一个文件系统很简单,三个要素:第一个是文件的路径,文件夹再套一个文件夹,最后是文件左边是目录树,从根开始,文件夹,然后子文件夹最后是这个地方,这个地方分两种:一个地方是属性 ,另外一个才是文件内容数据本身所以你要做一个文件系统来讲的话,实际上要涵盖这三个不同的要素:文件路径、目录数、属性+内容数据

这张ppt,我就不多讲了,就是你怎么样把3份文件复制到三个不同的机架上去,这地方有一致性的东西,这个地方是讲怎么样保持一致性、可用性,基本是把每一段文件复制到三个机架的三个服务器上去这张图是讲怎么读、怎么写,它的数据流失是什么首先到namenode找到文件应该写到具体的哪一个服务器上去,namenode存的是目录树,你找到该存的服务器之后,这时候你一个一个存到上面去,原理就是这么简单不复杂

我们仔细看一看namenode内部长得什么样比如删一个文件、增加一个文件或者新建一个文件夹的时候,不要修改文件树吗?那么怎么样能提高它的速度?所以namenode是专门用来处理目录树的刚才我没有说全,你可以在同一个服务器里面做,但是那个服务器同时要服务很多读者,你要让它做处理,有时候会影响到用户读取速度,所以我用一个重服务器,这个服务器专门用来合并原来的目录树,合并好再放到主目录树下面去

第二个问题是,怎样在分布式系统下做监控,放锁机制刚才我们说目录树是分布式系统中间的一大头疼之事,解决办法无论是google的也好,还是hadoop的也好,它的解决办法是一个服务器放不下就放在多个服务器上,这是笨办法有没有聪明的办法?这个聪明的办法是干脆撤离取消你的目录树,比如这张图是consistent-hash的假如说,我每一个都用同一种算法,那给你输入文明名的时候,这个算法能够告诉我,你文件真实数据存在哪个服务器上,你还需要什么目录树啊,这就是用算法来取代目录树的做法

解剖分布式监控与锁机制

还有一个问题是说什么?你个人pc上的硬盘空间可能是有限的,你存了太多的video可能放不下,那怎么办?你从外面借兵,我们称这叫网络文件系统nfsnfs有一个问题,是把别人的文件系统也合并到本地的目录树,所以本地的这棵目录树变得非常大那目录树非常大,你把网盘搬过来,光这个目录树就占用了所有的pc空间所以当你要做一个很大的云存储网盘的时候,这个做法实际上是行不通的

我们怎么办?其实道理很简单,问题根源在目录树,我们的解决办法就是从目录树开始怎么解决这个问题?我们可以参照一下hadoop下面数据库是怎么处理的,因为数据库存储数据的颗粒度是每一行记录,所以刚刚延用google的,目录树颗粒度越低的时候目录树越大,所以它怎么解决这个问题?如果我的目录树很大,一个服务器放不下,那我就放多个服务器上那怎么才能把一个目录树放在多个服务器上?问题是怎么分割那个目录树你怎么分割那个目录树?本身目录树就是分割好的所以这个地方实际上就是它的入口,它把这个目录树的根放在它专用的服务器上,然后把它分成子目录,这些东西就到别的服务器上,就这么简单的结构

以下为北京丰牵云启信息技术有限公司ceo邓侃演讲实录:

实际上,这套系统听起来是hadoop做的,很有名,但是中间有很多提高的空间,这就是我们创业企业能够生存的地方比如整个文件系统的目录书,google也好,hadoop也好,它是放在一个服务器上的一个服务器的空间再大也是有限的吧?假如网盘上存了成千上万的文件,目录树越来越大吧?你总有一天会突破单个服务器的内存空间吧?所以在google文件系统2003年之前的版本,它的文件系统的目录树就不可能很大那google是怎么办的呢?假设它可以把很多小文件合并成为一个大文件,这样的话文件数量就小了合并大文件的确有很多应用场景,比如google把很多网站网页全部合并在一起,一个网站所有网页合并成一个文件但问题是你做网盘的时候能不能这样干,比如网盘上很多文件是照片,你能不能把一个人的照片全部合并成大文件?这样做,至少你的读写效率会大大降低,用户会抱怨的,所以你不能简单延用google方案去解决你存照片的网盘

另外,我们刚才讲到文件碎片的问题,文件碎片怎么去除碎片化?没有什么好办法,隔一段时间合并一下其实从存储结构上来讲,无非是存储数据的颗粒度问题,有没有可能合二为一?接下来,我们说以往数据库的搜索都是用b-tree,现在我们怎么样用搜索引擎取代这个eb-tree

















































































白癜风的治疗


转载请注明:http://www.92nongye.com/tlfc/81.html