查看原文
其他

【大数据专栏】李明宇:大数据的分布式存储系统

2014-07-29 李明宇 科技杂谈
科技杂谈keji_zatan

新谈友,请点击题目下蓝字关注我

中国通信行业影响力最大的自媒体


【这是“大数据专栏”的推送文章,本专栏由中关村大数据产业联盟与科技杂谈合作提供】


文 / 李明宇 ,本文为李明宇在中关村大数据产业联盟“大数据100分”论坛上的交流探讨实录


  主讲嘉宾:李明宇


  主持人:中关村大数据产业联盟 学术委员会主任委员 阮彤


  承办:中关村大数据产业联盟


  嘉宾介绍


  李明宇:中国科学院软件研究所综合信息系统技术重点实验室云计算与大数据系统研究组负责人。


  以下为分享实景全文:


  李明宇:


  现在这个系列分享的目的主要是考虑针对目前去IOE的现实需求,我希望更多的是探讨性质,欢迎大家随时拍砖和提问。


  我的分享中的技术分析的例子主要以开源的东西为主,因为我本人毕竟来自学术界,开源的东西接触的稍微多些。鉴于国内厂商也有做得很好的商用存储系统,也欢迎大家在群规允许的前提下,一起探讨一下国内存储厂商的产品和成果。


  这个系列主要由五个部分组成:


  首先是概述,即今天的内容;后面会分别介绍分布式块存储、分布式文件系统、分布式对象存储;然后会结合OpenStack、Hadoop聊一聊;最后会讨论一些关于计算存储融合等一些扩展话题。


  今天的概述主要分为以下几个小节:


  1. 简单介绍一下这里说的分布式存储系统的概念


  2. 存储介质


  3. 分布式系统的CAP原则;


  4. 存储的成本问题


  一、分布式存储的概念


  因为昨天在另一个群里大家对“云存储”的概念发生了一点小的争论,所以提一下概念还是满有必要的。其实一个术语,来自不同领域的甚至同一领域不同方向的人往往有不同的理解,这很正常,只要在讨论的时候把概念的范围界定一下,让参与讨论的人达成一致就好了:)


  “分布式存储”这个概念本身比较有争议,wikipedia上有很多关于分布式系统的词条,但是却没有“distributed storage”。这里探讨的“分布式存储”主要指的是通过网络将多个节点的存储能力/存储资源整合在一起,构成一个统一整体的数据存储方式、技术和系统。


  这里讨论的主要有块设备、文件系统和对象存储三种形态。另外还有分布式数据库,也可以视为一种分布式存储系统,但是这里讨论的东西更偏底层一些,分布式数据库我并不太了解,群里有一些专家,如刚才发言的刘总@Dowson Liu (刘睿民) 和云人科技的@YunTable吴朱华,他们做了杰出的工作,为国产数据仓库赶超HANA做出了很多贡献:)关于分布式数据库方面的问题可以向上述两位专家请教。


  存储系统当前正处于前所未有的变革时期,一方面,大数据的发展对于数据存储的需求与日俱增;另一方面,传统存储厂商的出货量却增长并不明显,甚至有下滑的倾向。


  这其中很大的因素就是分布式存储逐步受到用户的青睐,这和分布式存储的特点是相关的,例如在大数据时代,很多企业的数据都是逐步积累的,这就要求存储系统有很好的横向扩展能力;而要对传统存储设备进行横向扩展,会带来很高的成本,但是分布式存储却能够比较好的解决这样的问题。


  软件定义存储概念的提出和需求的涌现,也给存储系统架构的变革提出了要求。关于软件定义存储,后续分享中会再详细展开。


  而对于我国来说,还有国情的特殊性所带来的变革,去IOE的大潮,也给分布式存储带来机会,如果不用EMC等国外厂商的设备,分布式存储(包括国内厂商的产品和开源方案)不失为一种很好的选择。


  上面是我对分布式存储的概念及其目前在整个业界中所处位置的个人观点。下面说一说存储介质。


  二、存储介质


  不论什么样的存储系统,再花哨前卫的架构,离开存储介质也是无米之炊。


  存储介质主要是磁介质和闪存。这一块在张广彬老师@狒哥 的报告《数据中心2013 软件定义和硬件重构》(http://www.valleytalk.org/wp-content/uploads/2014/01/Datacenter2013.pdf)的存储部分中有比较详细的介绍,虽然是半年前的作品,但是由于当时写了很多最新的东西,而且具有一定的超前性,所以现在读起来也有很高的参考价值。


  我在这里就简单说一下,具体的可以参考上面那篇报告:


  1.磁介质主要是磁盘HDD


  磁盘的特点是容量大性能低单价便宜。


  2.闪存主要是SSD


  闪存的主要特点是容量较低性能高同时单价也较高。


  目前普遍的认识是HDD比较适用于冷存储,SSD比较适用于关系型数据库这种对于性能有较高要求的场合。


  但实际上并不能一概而论,举两个例子:


  对于一些提供公网上HTTP访问的云存储来说,例如七牛和AWS S3,即便用户在上面存的是“热数据”,底层使用SSD也不是很有必要,因为这里访问速度的瓶颈在于网速,WAN的传输速率远低于磁盘IO性能的极限。


  另一个例子,对于使用了内存数据库和内存数据仓库的场合。内存数据库和内存数据仓库能提供高性能的关键在于对内存的利用,查询、分析等操作在内存中完成,底层的存储介质主要是提供持久化功能,所以,只要数据分布算法设计合理,做适当的条带化,使用磁盘也能够满足多数用户的需求。


  这里似乎在说很多通常认为需要用闪存的时候用磁盘更好,但后面说到成本的时候我也会举一个相反的例子,有个通常认为磁盘便宜的时候用SSD反而更省钱。


  对于介质的探讨暂时到这里。下面聊一下在分布式存储中,经常被用户忽视但是我认为却是不得不说的一个东西——CAP原则。


  三、CAP原则


  CAP原则又称为CAP定理、CAP理论,又被称作布鲁尔定理(Brewer’s theorem)。


  UC Berkeley的计算机科学家埃里克·布鲁尔(Eric Brewer)在2000年的分布式计算原则研讨会(Symposium on Principles of Distributed Computing(PODC))上提出了一个猜想。在2002年,麻省理工学院(MIT)的赛斯·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)发表了布鲁尔猜想的证明,使之成为一个定理。(这句话引自维基百科)


  对于分布式计算机系统来说,有三个很重要的特性:


  1. 一致性(Consistency):系统中分布的多份数据在同一时刻是相同的;


  2. 可用性(Availability):对每个请求都有响应;


  3. 分隔容忍(Partition tolerance):信息的丢失或节点故障不会影响系统的继续运行


  请注意,因为分布式系统要作为一个整体来运作并相应外界请求,所以这三个特性理所当然是很重要的,但是,事实上,就算是最美的分布式系统,也不可能同时满足这三个特性


  在硬件存在极限的情况下,一个分布式系统往往需要在这三个特性中做出权衡和折衷,后面会介绍具体系统和方案的时候,会展开说各个系统具体是如何做出权衡或者折衷的,以及优良的性能和成本之间的取舍关系。


  正好这里补充说一下三类分布式存储的典型代表:


  1. 分布式块存储:Ceph;


  2. 分布式文件系统:GlusterFS、HDFS;


  3. 分布式对象存储:OpenStack Swift。


  其中,分布式块存储的一致性要求最强。


  下面简单说一下存储系统的成本问题


  四、存储系统的成本


  存储系统的成本主要分为两个方面:


  1.CAPEX:简单来说就是购置成本;


  2.OPEX:则指运维成本,包括电费、人工等支出。


  概念很容易理解,这里主要谈谈实践中可能会遇到的一些问题吧,都是我个人的理解,欢迎拍砖。


  先从一个比较简单直观的事情说起:即用不用开源软件


  对于单机软件来说,开源软件往往没有太多问题,比如说用CentOS做服务器、用MySQL做数据库等,事实上,对于小规模Web服务来说,LAMP架构应用之广、成本之低已经是不争的事实。


  但是对于分布式系统来说,特别是具有中等以上规模的分布式系统来说,这个事情变得有点复杂了,开源软件能够节省购置成本CAPEX,因为软件是免费的,但是往往伴随着较高的运维成本,主要是运维人员的开销。


  这个事情现在已经是众所周知的了,但是我想说:


  1. 这并不是开源软件本身的问题,一方面,分布式系统,特别是具有一定规模的分布式系统,本身比较复杂,另一方面,开源软件为了应对各种情况,提供了较多的配置选则,所以对使用人员的专业水平要求较高,造成了较高的成本。所以企业在选用开源软件的时候,一定要做好在这块填坑的准备。


  2. 有没有其他办法,让企业即能够获得开源软件低CAPEX的同时,又不至于付出较高的OPEX?


  有需求有痛点就一定会衍生出商业模式。所以上面这个问题的答案是肯定的。开源软件的商业模式,除了卖发行版产品、做服务以外,在美国现在已经有第三种广为接受的玩法,就是托管。


  这里的托管和服务器托管到IDC不太一样,做的是更高一个层次的托管。比如说,某企业A为了节省一次性投资成本,想采用开源存储软件XXStore,但是又很难招到高水平的运维团队,这时候他可以把这套系统托管给企业B。


  企业B在XXStore方面有最优秀的工程师,甚至XXStore中大量的源代码都是企业B的人所贡献的。他们非常熟悉XXStore的德行,有丰富的经验,能够迅速的解决系统运行中遇到的各种问题。


  B企业向A企业收取托管费用,这种费用不是一次性收取的,也不是按系统收取的,而是按节点数量、数据量收取。由于B企业的专业性,他们人均能够维护的节点数量远高于业界平均水平,因此能够很好地控制运维成本。这样就给希望使用开源软件来降低成本的企业提供了一条真正可行的道路。(言下之意以前那种传统做法实际上是很难通过使用开源软件来降低总体成本的,这个也被很多企业的现实情况证明了)


  另外一个和成本相关的例子,又回到SSD和HDD的故事上来了,通常认为HDD比较省钱,但是,实际上HDD发热量大、耗电多,实际上运行成本可能比SSD高,时间长了,并不一定HDD就省钱。SSD在运行成本上主要体现在频繁写入造成的损坏。所以对于某些读比较频繁的场合,用SSD可能反而比较省钱。前些天有一家公有云厂商在产品发布会上提到了类似的观点,当然,这个观点是存在争议的。


  李明宇:


  以上就是今天分享的主要内容,后面会逐步对各种分布式存储系统和技术展开进行讨论,欢迎大家持续关注。届时阮老师会通知大家。


  交流互动:


  @华理-王昊奋 @钟合 蒲公英+B 等群友提出了一些关于托管模式的问题,主要可归纳为三个问题:


  1.托管模式是否适用于对数据敏感度要求高或者隐私保护要求高的地方,如医院?


  李明宇:对于中小企业,如果自己招人,组建高水平运维团队的难度非常大,如果不采用托管方式,由于没有采取适当的防护措施导致数据泄漏的信息安全风险更大,所以仍然是适用于托管模式的。


  2.托管模式是否能够被企业接受?


  李明宇:既然用户愿意把服务器从自己机房里拿出来放到IDC去托管,将来也会逐渐接受系统层面的托管。用户接受这种模式会需要一个过程,时间早晚的问题,需要大家一起去推动。


  3.托管模式是否会影响行业用户对分布式存储技术的创新?


  李明宇:我个人认为存储技术革新基本上指望不上传统行业用户,还是得靠专业的机构做专业的事情才能真正推动社会进步,现实情况是中小企业招个小团队做运维,运维人员天天疲于应付各种问题,根本没有精力深入研究在用的系统。


  【入中关村大数据产业联盟500人微信群指南】


  您只需在中关村大数据产业联盟500人微信群中分享一次大数据思想、案例,即可进入500人微信群,与众多大数据朋友沟通、交流、合作!(入联盟500人微信群,请把代表您能力和水平的PPT及姓名、单位、职务、联系方式发chenxinhe2020@126.com。详情请订阅微信公众号:软件定义世界(SDX)后,查询500)


  【中关村大数据产业联盟主旨与目标】


  落实国家战略,聚合产业势能,促进商学互动,


  助力企业成长,倡导数据伦理,探寻数字文明


  【中关村大数据产业联盟活动】


  〖大数据100分〗以500人圈大数据技术、资本、专家和政策专业人士为依托,每晚9点进行的线上活动。


  〖大数据地平线〗以大数据执委会和中关村大数据产业联盟成员为依托,进行的走入企业现场调研活动。


  〖大数据香山汇〗以“运动、分享、进步”为宗旨的爬山、PPT分享、研讨活动。


  〖大数据沙龙〗以“数据驱动,创新未来”为主题的高端大数据沙龙活动。


  【中关村大数据产业联盟联盟网站】


  http://www.zgc-bigdata.org/


  【大数据媒体方阵】


  〖软件定义世界(SDX)〗、〖大数据文摘〗、〖大数据栋察〗、〖科技杂谈〗、〖CSDN〗、〖天云融创〗、〖大数据邦〗、〖199IT〗、〖大数据实验室〗、〖云里数里〗、〖中云网〗、〖云华时代〗、〖大数据问答〗等,目前已覆盖20多万订阅用户。


  欢迎加入大数据媒体方阵,第一时间获得〖大数据100分〗等中关村大数据产业联盟提供的独家信息,请在公众号留言或加入个人微信号沟通。


  【联系方式】


  地址:北京市海淀区东北旺西路8号中关村软件园软件广场C座3层


  电话:010-56380808


  电子邮件:sdxtime@gmail.com


  个人微信号:sdxtime



  欢迎大家加入科技杂谈菁英汇,交流思想、分享信息。仅限行业商端人士参与。参与方式:点击左下方“阅读原文”填写您的加入信息,科技杂谈通过审核后,会添加入群。


本文仅代表作者观点,科技杂谈授权刊登。

转载必须注明作者与科技杂谈,侵权必究。

科技杂谈文章,均同步发布于犀牛财经网。

已入驻搜狐新闻客户端,网易阅读客户端。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存