大数据中最宝贵、最难以代替的就是数据,一切都围绕数据。
HDFS是最早的大数据存储系统,存储着宝贵的数据资产,各种新算法、框架要想得到广泛使用,必须支持HDFS,才能获取已存储在里面的数据。所以大数据技术越发展,新技术越多,HDFS得到的支持越多,越离不开HDFS。 HDFS也许不是最好的大数据存储技术,但依然是最重要的大数据存储技术 。
HDFS是如何实现大数据高速、可靠的存储和访问的呢?
Hadoop分布式文件系统HDFS的设计目标是管理数以千计的服务器、数以万计的磁盘,将大规模的服务器计算资源当作一个单一存储系统进行管理,对应用程序提供数以PB计的存储容量,让应用程序像使用普通文件系统一样存储大规模的文件数据。
文件以多副本的方式进行存储:
缺点:
优点:
HDFS的大容量存储和高速访问的实现。
RAID将数据分片后,在多块磁盘上并发进行读写访问,提高了存储容量、加快了访问速度,并通过数据冗余校验提高了数据可靠性,即使某块磁盘损坏也不会丢数据。将RAID的设计理念扩大到整个分布式服务器集群,就产生了分布式文件系统,这便是Hadoop分布式文件系统的核心原理。
和RAID在多个磁盘上进行文件存储及并行读写的思路一样,HDFS是在一个大规模分布式服务器集群上,对数据分片后进行并行读写及冗余存储。因为HDFS可部署在一个大的服务器集群,集群中所有服务器的磁盘都可供HDFS使用,所以整个HDFS的存储空间可以达到PB级。
HDFS是主从架构。一个HDFS集群会有一个NameNode(命名节点,简称NN),作为主服务器(master server)。
HDFS公开了文件系统名称空间,允许用户将数据存储在文件中,就好比我们平时使用os中的文件系统一样,用户无需关心底层是如何存储数据的。 在底层,一个文件会被分成一或多个数据块,这些数据库块会被存储在一组数据节点中。在CDH中数据块的默认128M。 在NameNode,可执行文件系统的命名空间 *** 作,如打开,关闭,重命名文件等。这也决定了数据块到数据节点的映射。
HDFS被设计为可运行在普通的廉价机器上,而这些机器通常运行着一个Linux *** 作系统。一个典型的HDFS集群部署会有一个专门的机器只能运行 NameNode ,而其他集群中的机器各自运行一个 DataNode 实例。虽然一台机器上也可以运行多个节点,但不推荐。
负责文件数据的存储和读写 *** 作,HDFS将文件数据分割成若干数据块(Block),每个DataNode存储一部分Block,这样文件就分布存储在整个HDFS服务器集群中。
应用程序客户端(Client)可并行访问这些Block,从而使得HDFS可以在服务器集群规模上实现数据并行访问,极大提高访问速度。
HDFS集群的DataNode服务器会有很多台,一般在几百台到几千台,每台服务器配有数块磁盘,整个集群的存储容量大概在几PB~数百PB。
负责整个分布式文件系统的元数据(MetaData)管理,即文件路径名、数据块的ID以及存储位置等信息,类似os中的文件分配表(FAT)。
HDFS为保证数据高可用,会将一个Block复制为多份(默认3份),并将多份相同的Block存储在不同服务器,甚至不同机架。当有磁盘损坏或某个DataNode服务器宕机,甚至某个交换机宕机,导致其存储的数据块不能访问时,客户端会查找其备份Block访问。
HDFS中,一个文件会被拆分为一个或多个数据块。默认每个数据块有三个副本,每个副本都存放在不同机器,而且每一个副本都有自己唯一的编号:
文件/users/sameerp/data/part-0的复制备份数设为2,存储的BlockID分别为1、3:
上述任一台服务器宕机后,每个数据块都至少还有一个备份存在,不会影响对文件/users/sameerp/data/part-0的访问。
和RAID一样,数据分成若干Block后,存储到不同服务器,实现数据大容量存储,并且不同分片的数据能并行进行读/写 *** 作,实现数据的高速访问。
副本存放:NameNode节点选择一个DataNode节点去存储block副本的过程,该过程的策略是在可靠性和读写带宽间权衡。
《Hadoop权威指南》中的默认方式:
Google大数据“三驾马车”的第一驾是GFS(Google 文件系统),而Hadoop的第一个产品是HDFS,分布式文件存储是分布式计算的基础。
这些年来,各种计算框架、各种算法、各种应用场景不断推陈出新,但大数据存储的王者依然是HDFS。
磁盘介质在存储过程中受环境或者老化影响,其存储的数据可能会出现错乱。
HDFS对存储在DataNode上的数据块,计算并存储校验和(CheckSum)。在读数据时,重新计算读取出来的数据的校验和,校验不正确就抛异常,应用程序捕获异常后就到其他DataNode上读取备份数据。
DataNode监测到本机的某块磁盘损坏,就将该块磁盘上存储的所有BlockID报告给NameNode,NameNode检查这些数据块还在哪些DataNode上有备份,通知相应的DataNode服务器将对应的数据块复制到其他服务器上,以保证数据块的备份数满足要求。
DataNode会通过心跳和NameNode保持通信,如果DataNode超时未发送心跳,NameNode就会认为这个DataNode已经宕机失效,立即查找这个DataNode上存储的数据块有哪些,以及这些数据块还存储在哪些服务器上,随后通知这些服务器再复制一份数据块到其他服务器上,保证HDFS存储的数据块备份数符合用户设置的数目,即使再出现服务器宕机,也不会丢失数据。
NameNode是整个HDFS的核心,记录着HDFS文件分配表信息,所有的文件路径和数据块存储信息都保存在NameNode,如果NameNode故障,整个HDFS系统集群都无法使用;如果NameNode上记录的数据丢失,整个集群所有DataNode存储的数据也就没用了。
所以,NameNode高可用容错能力非常重要。NameNode采用主从热备的方式提供高可用服务:
集群部署两台NameNode服务器:
两台服务器通过Zk选举,主要是通过争夺znode锁资源,决定谁是主服务器。而DataNode则会向两个NameNode同时发送心跳数据,但是只有主NameNode才能向DataNode返回控制信息。
正常运行期,主从NameNode之间通过一个共享存储系统shared edits来同步文件系统的元数据信息。当主NameNode服务器宕机,从NameNode会通过ZooKeeper升级成为主服务器,并保证HDFS集群的元数据信息,也就是文件分配表信息完整一致。
软件系统,性能差点,用户也许可接受;使用体验差,也许也能忍受。但若可用性差,经常出故障不可用,就麻烦了;如果出现重要数据丢失,那开发摊上大事。
而分布式系统可能出故障地方又非常多,内存、CPU、主板、磁盘会损坏,服务器会宕机,网络会中断,机房会停电,所有这些都可能会引起软件系统的不可用,甚至数据永久丢失。
所以在设计分布式系统的时候,软件工程师一定要绷紧可用性这根弦,思考在各种可能的故障情况下,如何保证整个软件系统依然是可用的。
## 6 保证系统可用性的策略
任何程序、任何数据,都至少要有一个备份,也就是说程序至少要部署到两台服务器,数据至少要备份到另一台服务器上。此外,稍有规模的互联网企业都会建设多个数据中心,数据中心之间互相进行备份,用户请求可能会被分发到任何一个数据中心,即所谓的异地多活,在遭遇地域性的重大故障和自然灾害的时候,依然保证应用的高可用。
当要访问的程序或者数据无法访问时,需要将访问请求转移到备份的程序或者数据所在的服务器上,这也就是 失效转移 。失效转移你应该注意的是失效的鉴定,像NameNode这样主从服务器管理同一份数据的场景,如果从服务器错误地以为主服务器宕机而接管集群管理,会出现主从服务器一起对DataNode发送指令,进而导致集群混乱,也就是所谓的“脑裂”。这也是这类场景选举主服务器时,引入ZooKeeper的原因。ZooKeeper的工作原理,我将会在后面专门分析。
当大量的用户请求或者数据处理请求到达的时候,由于计算资源有限,可能无法处理如此大量的请求,进而导致资源耗尽,系统崩溃。这种情况下,可以拒绝部分请求,即进行 限流 ;也可以关闭部分功能,降低资源消耗,即进行 降级 。限流是互联网应用的常备功能,因为超出负载能力的访问流量在何时会突然到来,你根本无法预料,所以必须提前做好准备,当遇到突发高峰流量时,就可以立即启动限流。而降级通常是为可预知的场景准备的,比如电商的“双十一”促销,为了保障促销活动期间应用的核心功能能够正常运行,比如下单功能,可以对系统进行降级处理,关闭部分非重要功能,比如商品评价功能。
HDFS是如何通过大规模分布式服务器集群实现数据的大容量、高速、可靠存储、访问的。
1文件数据以数据块的方式进行切分,数据块可以存储在集群任意DataNode服务器上,所以HDFS存储的文件可以非常大,一个文件理论上可以占据整个HDFS服务器集群上的所有磁盘,实现了大容量存储。
2HDFS一般的访问模式是通过MapReduce程序在计算时读取,MapReduce对输入数据进行分片读取,通常一个分片就是一个数据块,每个数据块分配一个计算进程,这样就可以同时启动很多进程对一个HDFS文件的多个数据块进行并发访问,从而实现数据的高速访问。关于MapReduce的具体处理过程,我们会在专栏后面详细讨论。
3DataNode存储的数据块会进行复制,使每个数据块在集群里有多个备份,保证了数据的可靠性,并通过一系列的故障容错手段实现HDFS系统中主要组件的高可用,进而保证数据和整个系统的高可用。
问题一:固态硬盘可以用在服务器吗?可以商用吗? 固态硬盘可以使用在服务器上和电脑上 固态硬盘的读写要比普通的硬盘好上很多 1 启动快,没有电机加速旋转的过程。2 不用磁头,快速随机读取,读延迟极小。根据相关测试:两台电脑在同样配置的电脑下,搭载固态硬盘的笔记本从开机到出现桌面一共只用了18秒,而搭载传统硬盘的笔记本总共用了31秒,两者几乎有将近一半的差距。
3 相对固定的读取时间。由于寻址时间与数据存储位置无关,因此磁盘碎片不会影响读取时间。
4 基于dram的固态硬盘写入速度极快。
5 无噪音。因为没有机械马达和风扇,工作时噪音值为0分贝。某些高端或大容量产品装有风扇,因此仍会产生噪音。
6 低容量的基于闪存的固态硬盘在工作状态下能耗和发热量较低,但高端或大容量产品能耗会较高。
7 内部不存在任何机械活动部件,不会发生机械故障,也不怕碰撞、冲击、振动。这样即使在高速移动甚至伴随翻转倾斜的情况下也不会影响到正常使用,而且在笔记本电脑发生意外掉落或与硬物碰撞时能够将数据丢失的可能性降到最小。
8 工作温度范围更大。典型的硬盘驱动器只能在5到55摄氏度范围内工作。而大多数固态硬盘可在-10~70摄氏度工作,一些工业级的固态硬盘还可在-40~85摄氏度,甚至更大的温度范围下工作。
9 低容量的固态硬盘比同容量硬盘体积小、重量轻。但这一优势随容量增大而逐渐减弱。直至256GB,固态硬盘仍比相同容量的普通硬盘轻。
问题二:固态硬盘可以作为服务器硬盘吗? 固态硬盘可以做服务器硬盘的!
现在很多网吧都买品牌服务器然后上固态硬盘做回写!
现恭服务器有25寸和35寸的 以后的趋势应该是向25寸硬盘发展
您说RAID故障 您看下是不是硬盘坏了或者是RAID卡出现故障!
问题三:服务器 可以用固态硬盘吗 可以用,不少对IOPS要求高的项目用PCIE的SSD或者干脆用内存,用传统SSD的现在反倒貌似不太多见,现在主流在用的x86服务器一般都是针对传统磁盘优化的,直接把磁盘换成SSD稳定性不一定很好,也不一定能发挥出SSD的优势,比如传统服务器上的阵列卡会有瓶颈,如果真想用SSD最好去买针对SSD优化过IO结构的新机型,或者成品全闪存存储
问题四:服务器全部用固态硬盘怎么样 服务器的读写一般比台式机要频繁,所以说服务器的ssd不能采用一般家用的tlc或者mlc刻录的固态硬盘,而是使用价格更为昂贵的slc的固态硬盘,一般这样固态硬盘240的都上千,所以说现在服务器大多仍采用的是万转或者1万5千转的服务器专用机械硬盘。
问题五:固态硬盘可以作为服务器硬盘吗 当然可以。不过不建议用固态硬盘作服务器硬盘。
缺点:
固态硬盘在频繁写入的情况下,寿命有限。
目前,可靠性不怎么好。服务器的数据是很重要的,不能出错。
优点:
只有一点,随机访问速度快。顺序访问未必比机械硬盘快很多。
谈谈机械硬盘吧:
缺点:
1随机访问速度慢。
优点:
磁盘盘片无读写寿命限制
可靠性高
即使寿命终结,通常是机械结构寿命终结。盘片还是好的,数据还在,容易做数据恢复。
对于服务器来讲,数据可以分成两部分:
系统数据:
就是软件环境需要的数据。这部分数据通常不会频繁变化。但是也不经常访问。只有启动时才访问。
应用数据
就是与服务器提供的服务相关的数据。这部分数据,会被频繁读写,经常变动。
如果固态硬盘主要用来存储系统数据,唯一的好处就是系统启动比较快。但是,服务器不需要频繁启动。所以,固态硬盘的访问速度优势无法体现。如果固态硬盘用来存储应用数据,虽然访问速度快,但是,寿命将很快终结。
烈奕联 lieyilian dot 为你解答
问题六:固态硬盘可以作为服务器硬盘吗 可以的,服务器对数据安全要求较高,因此一般使用企业级的固态硬盘,如intels3700系列,比较昂贵。
问题七:服务器上SSD固态硬盘作用大吗? 肯定的,上SSD固态硬盘作用很明显,特别是高端的SSD。在性能上已经远远超过了普通硬盘的读写速度,现在SSD最大的读写速度达到1000MB/s以上。这们也是看你自己的实际情况是否真的能用得上,如果你放一个网只有几百人在线,完全就是浪费资源。如果你的网拥有几万在人线,那效果就会比较明显了。其实,现在好像都不用买了,很多租用服 务器都带有,比如华数世纪他们的服 务器都可以选配SSD固态硬盘。
问题八:服务器可以加可以固态硬盘吗? 可以,只要你有相应的接口。。我想说的是,SSD很贵的哦。。。服务器用这个,你话费会很高的
问题九:服务器存储,大家觉得固态硬盘能使用多少年 理论上是按照擦写次数(预计能用10-20年),但是由于电子产品更新太快,一般五年左右就可以进行更换。你可以去服务器存储厂商(正睿)的网上咨询一下和找找相关技术文档参考一下,很快就清楚了。
问题十:网吧服务器固态硬盘使用要注意哪些问题 固态硬盘的安装
1固态硬盘4K对齐
可以使用win7系统盘对固态硬盘分区和格式化,或使用硬盘分区工具Diskgen软件(至少是37版本以上)对固态硬盘进行4K对齐。
2开启硬盘AHCI功能
就目前来说,大部分台式机电脑默认是IDE模式,开启硬盘AHCI模式需要进入Bios里面设置开启。笔记本则大多默认已经采用AHCI模式。
进入Bios开启硬盘AHCI模式的大致步骤是:重新启动电脑,启动电脑时按Del键进入BIOS,依次选择Devices→ATA Drives Setup→Configure SATA as→AHCI,最后按F10键保存并退出BIOS
最有效的提升固态硬盘性能除了以上两项基本重要的知识点外,还有一些影响比较大的其它方面,比如主板开启了节能功能以及误接第三方SATA3接口等等均会对固态硬盘速度有较大的影响,下面分别介绍下。
1)主板开启节能模式导致固态硬盘性能下降
通常开通了主板的节能功能,CPU的频率会有所降低,这也将导致固态硬盘的性能下降,因为在节能时CPU频率减弱10%,发送指令时则会慢了10%,因此测试时理论SSD性能会减弱了10%,因此如果想发挥固态硬盘最佳性能,主板请不要开启节能模式。
2)误接第三方SATA3接口影响性能
现在很多的主流主板均支持SATA30接口,比如Intel的B75以上主板以及AMD的A75以上主板均带有SATA30接口,这些对于固态硬盘也说也是非常重要的,如果我们选用的主板不支持SATA30接口(如H61或A55以下主板就不含有SATA30接口),那么对固态硬盘性能上影响较大。另外一方面,第三方SATA3接口方案的测试成绩几乎完败给原生SATA3的成绩,特别在Starting Applications速度上足足差了20MB/s。(Starting Applications:用IE打开PCMark 7 specification 10 document等待完全有响应的硬盘 *** 作记录。其中有85%都是随机读取。)从而导致分数大大下滑,采用了第三方SATA3芯片方案大大拖累了随机速度,从而导致其性能急剧下降。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)