打字猴:1.700509577e+09
1700509577
1700509578
1700509579
1700509580 图13-17 RAID10模式
1700509581
1700509582 RAID0、RAID1、RAID5、RAID10的磁盘使用率、可靠性等工作指标如表13-1所示。假设每块磁盘的可靠性为Pdisk,RAID卡的可靠性为Praid,每块磁盘的读写速度为V,用n块磁盘组成阵列(为了讨论方便,n取大于2的偶数,并假设RAID卡读写性能的上限为无穷大)。
1700509583
1700509584 表13-1 磁盘工作指标
1700509585
1700509586
1700509587
1700509588
1700509589 从这些值上来看,通常我们都会认为RAID10除了使用率不理想以外,其他方面的表现都还不错。一般情况下,可能除了能从磁盘厂商处拿到V的数据以外,Pdisk和Praid这类数据是拿不到的。所以,只要注意在同一个RAID组里的磁盘尽量不要选择同一批次的就好,以免由于同一批次生产的磁盘失效时间相近导致整体失效概率升高。
1700509590
1700509591 数据科学家养成手册 [:1700503631]
1700509592 13.7.2 软冗余
1700509593
1700509594 除了RAID这种在单机上做冗余的方案以外,现在业界使用比较多且性价比比较高的存储介质是HDFS或者Ceph。这两种方案都是基于网络的分布式存储方案,而且兼有读写分散和冗余的功能。
1700509595
1700509596 HDFS默认在配置文件hdfs-site.xml中有dfs.replication配置项,默认值是3,也就是将一个HDFS数据块在整个网络节点中保存3份。这个选项也可以修改,通常以单台主机的有效性Phost来计算,在NameNode充分高可用的情况下,数据的可靠性就是1-(1-Phost)3。这种设置一般被认为是在生产环境中性价比比较高的方案。如果每台主机的磁盘都已经做过RAID10,也可以适当降低dfs.replication配置项的值。
1700509597
1700509598
1700509599 HDFS的写入速度也是比较快的。由于和数据库相比,HDFS单纯面向数据文件进行读写操作,所以其中没有锁存在。而且在大量的写操作中,NameNode会将数据写分散到每台DateNode中去。理论上,在由单台读写速度为V的主机组成的n个节点3冗余环境中,写速度能够达到;读速通常就无法提升了,因为这涉及Client端的瓶颈问题。
1700509600
1700509601
1700509602
1700509603
1700509604 数据科学家养成手册 [:1700503632]
1700509605 数据科学家养成手册 13.8 本章小结
1700509606
1700509607 这一章主要讨论了数据存储时需要注意的可靠性和性能问题,以及存储介质是否便于未来统计工作的开展。这些讨论对业务中的存储选型会有一定的提示作用。
1700509608
1700509609 Oracle数据库被认为是计算机商用发展过程中存储技术的集大成者。对Oracle数据库产品存储特性的研究,对做好存储架构设计有着非常重要的指导作用,即使是在对事务不敏感的场景中也有极高的借鉴价值。除此之外,互联网公司在面对大型的数据存储需求时,通常会考虑使用HDFS with LZO压缩的方案。因为在存储环境中,大多数时候CPU是比较空闲的,而磁盘上存储的信息中大部分是文本信息,所以压缩率(6)很高,在一些情况下几乎可以达到20%。这种方案还能带来一个好处,就是节省宝贵的磁盘I/O资源。这种用富余的CPU资源换取存储空间的方案是不错的选择。
1700509610
1700509611 无独有偶,这种思路在一些提供云服务的公司还有其他玩法。在很多社交软件中都有这样的用例:先将用户上传的高清照片裁剪成512×512像素的正方形大尺寸头像,再调整(Resize)成128×128、64×64、32×32等尺寸。为了充分利用CPU资源,节省存储空间,服务器上只存储512×512像素的大尺寸头像,每次请求头像时调用这个服务商提供的URL,参数为大尺寸头像的ID和请求尺寸,实时进行Resize操作,延迟很低。
1700509612
1700509613 本章涉及的所有查找性能指标都是近似理论值,在实际的生产环境或测试环境中很难观察到这样的测量数据。由于在实际环境中的CPU指令流和I/O吞吐的随机性很高,因此在数据存储环节的各种性能观测都混杂着一定的未知干扰。除此之外,不同的系统软件(尤其是那些非开源的软件)及其不同版本对这些存储和查找的算法实现也有不同程度的优化。这样一来,观测值就与理论值有了差异。在真实环境中进行测试时,还是建议用真实场景中的读写特性作为测试样例进行测试,以逼近实际生产环境的性能。
1700509614
1700509615 (1) Oracle自动存储管理(Automatic Storage Management)。
1700509616
1700509617 (2) NoSQL是指非关系型数据库。
1700509618
1700509619 (3) 基于笛卡尔乘积(Cartesian Product)的查询与过滤。
1700509620
1700509621 (4) 包括插入(Insert)、更新(Update)和删除(Delete)。
1700509622
1700509623 (5) Skew(Skewness)。
1700509624
1700509625 (6) 压缩率(Compresson Ratio)由压缩后占用空间大小除以压缩前占用空间大小得出。
1700509626
[ 上一页 ]  [ :1.700509577e+09 ]  [ 下一页 ]