文档详情

海量数据的高效存储_---_淘宝云梯极限存储的原理和实践

hjk****65
实名认证
店铺
2024-12-10
PPT
2.15MB
约31页
海量数据的高效存储_---_淘宝云梯极限存储的原理和实践_第1页
1/31
海量数据的高效存储_---_淘宝云梯极限存储的原理和实践_第2页
2/31
海量数据的高效存储_---_淘宝云梯极限存储的原理和实践_第3页
3/31

单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,1,极限存储设计原理及实践,淘,宝,-,数据平台与产品部 图海,2024年12月10日,2,场景,方案,效果,优化,云梯,1,前端,RDBMS,其他集群,点击流日志,LogServer,everyday,everytime,云梯的存储职责,DataX,TimeTunnel,DBSync,怎么办,?,怎么办,?,怎么办,?,删除历史数据,立竿见影,省力又省事,怎么办,?,20080101,20080102,20080103,20110720,商品表,500G,502G,505G,G,1000G,“,21,世纪核心的竞争是数据的竞争,”,“谁拥有更多数据,谁就拥有未来”,前端交易系统、商品中心、用户中心等出于效率的考虑,不会长期保存大量历史数据,而数据,平台,作为企业数据分析及挖掘的基础设施,天生具有保存历史数据的职责,非但如此,如何快速、高效的获取历史上任意一天的快照数据也成为设计历史数据存放方式时的重要考量数据分类,商品表,:,商品,ID,商品名,商品状态,创建时间,所属类目,交易表,:,订单,ID,支付,ID,物流,ID,支付时间,订单状态,典型操作,:,新增商品,/,订单,(new),商品,/,订单状态变更,(update),商品下线,/,订单撤销,(delete),典型,的数据库增删改操作,数据特点,:,有业务主键,确保记录唯一性,全量快照数据量巨大,(1TB),,数据分析需要全量快照数据,每日变更量占比很少,(,远低于,5%),数据记录冗余度非常高,注,:,变更指发生增删改的记录,当时存量数据中,7,0%,属于此类特征的业务数据,且记录冗余度高,数据分类,评价增量表,:,评价,ID,用户星级,用户昵称,评价记录,商品名称,点击流日志,:,记录时间,IP,地址,引用链接,机器,ID,用户,ID,数据特点,:,没有业务主键,属于日志流水,每日新增数据,数据记录重复程度非常低,每条都基本唯一,数据记录冗余度基本,为,0,存储总体占比不高,且数据冗余度较低,优化空间有限,数据特点,:,有业务主键,确保记录唯一,数据只有新增操作,不会变更或删除,每天只需保留当天新增评价,数据记录冗余,度,基本为,0,思考,&,讨论,20100906,消失记录,(,包括被删除及被变更记录,),,占,2%,左右,20100906,和,20100907,未发生变更部分,占总体的,95%,以上,正是这部分的重复存储过多的消耗了存储成本,20100907,新增记录,(,包括纯新增及变更后记录,),,占,3%,左右,20100906,20100907,问题,:,如,何,设计方案达到以下效果,?,减少,/,去除冗余数据,降低存储成本,保证快照数据的快速访问,对业务应用透明或降低应用改造成本,参考方案,增量数据,2010,年,4,月,2,日全量,latest,分区,2010,年,4,月,2,日失效分区,2010,年,4,月,1,日全量,2010,年,4,月,2,日,2010,年,4,月,1,日,2010,年,4,月,3,日全量,latest,分区,2010,年,4,月,3,日失效分区,2010,年,4,月,3,日,2010,年,4,月,30,日全量,latest,分区,2010,年,4,月,30,日失效分区,2010,年,4,月,30,日,增量数据,增量数据,注,:,类似于数据库系统中常见的增量备份或周期备份策略,优点,:,易于理解,在数据库备份中广泛应用,实现较为简单,缺点,:,访问快照数据成本太高,无法直接反应删除,/,被变更数据,需要额外设计,应用改造成本较高,记录生命周期,数据天生以行进行分割,行数据在数据库中称为一条数据记录,(Record).,一,条记录对应可能有,Insert/Update/Delete,操作,Insert,通常对应一条全新的记录,意味着记录的新生,Delete,通常是原有的记录被删除,意味着记录的死亡,Update,是在原有的记录上修改某些字段,一条,Update,操作可以拆分为,Delete/Insert,原子对操作,即从记录的维度来看,相当于前一条记录死亡,后一条记录新生,因此,我们可以认为,任何一条记录,(,行数据,),必定在历史上某天新生,(start),,并在其后的某一天死亡,(end),,而这个,start-end,对就定义为该记录的生命周期。

活跃数据和死亡数据,活跃数据,一条记录,在其产生之后直至当天仍旧存活,(,未被,Delete/Update),,那么我们认为它是一条活跃数据,对于活跃数据,其产生,(start),日期已经明确,但死亡,(end),日期并不确定,数据标签,:start-INFINITY(,无穷大,),如,20110401-INF,死亡数据,一条记录,,在当天以前就被更改,(,被,Delete/Update),,那么我们认为它是一,条死亡了的数据,对于死亡数据,,其产生,(start,),和死亡,(end),日期都已经明确,数据标签,:start-end,如,20110401-200110423,INF,目录存放在某一天新增并且一直未曾被删除或修改的记录,(,即活跃数据,),此处省略一万字,0901-0902,0901-0903,0901-0904,0901-09.,0901-0930,0901-INF,0902-0903,0902-0904,0902-09.,0902-0930,0902-INF,0903-0904,0903-09.,0903-0930,0903-INF,09n-09(n+1),09n-0930,09n-INF,0929-0930,0929-INF,0930-INF,极限存储,极限存储原理,三,个,结论,:,任意,一,条记录,由于其生命周期确定,必定对应唯一的一个数据标签,一,个数据标签对应符合该生命周期的记录集合,(,该记录集合有为空的可能性,),历史上出现的所有记录,必然可以成功的划分到不,同,的生命周期数据标签里去,历史快照,原理,TimeLine,0413,0414 0415,0416 INF,INF,0414 ,INF,0201 0413,0313,0314 INF,0313,0314 0415,0416 INF,0413,0414 0416,0417 INF,0413,0414 0417,0418 INF,0414 INF,0201 0413,0313,0314 0414,0415 INF,0310,0311 0421,0422 INF,所有被蓝色线条经过的数据标签,其数据内容组合起来即为,0414,这天的数据全量快照,同理,历史上任意一天的数据快照均可以该方式获得,历史区间快照,原理,TimeLine,0413,0414 0415,0416 INF,INF,0414 ,INF,0201 0413,0313,0314 INF,0313,0314 0415,0416 INF,0413,0414 0416,0417 INF,0413,0414 0417,0418 INF,0414 INF,0201 0413,0313,0314 0414,0415 INF,0310,0311 0421,0422 INF,所有在两条蓝色线条以内以及穿过任意一条蓝色线条的数据标签,其数据内容组合起来即为,0314-0415,的数据全量快照,方案,主体,逻辑,包含以下主要步骤:,1.通过主键关联对比昨天全量和今天全量的数据差异,并将这些,数据,区,分为,活跃,(Lived),或,过期,(Expired),数据。

2.对于对比的结果数据进行统计,获得每个生命周期下实际的数据条,数,,统计结果用来产生不同生命周期的记录到文件目录的映射3.使用mapreduce数据对第1步结果进行分发,相同生命周期的数据会被写入到对应的唯一的生命周期目录,下,(,依赖,2,的统计结果,),4.使用hive的双重分区映射生命周期目录,这样用户可以通过灵活的hive分区过滤来获得期望的数据,5.数据验证,为了保证应用极限存储后结果的正确性,因此增加了数据条数对比的验证规则方案,主体,逻辑,记录生命周期标签云,0401-0402,0401-0403,0401-0404,0402-0403,0402-0404,2010,年,4,月,23,日全量,2010,年,4,月,22,日全量,(,极限存储,),20100401-20100423,20100402-20100423,2010,0,408-20100423,2010,0,422-20100423,2010,0,423-INF,2010,0,409-20100423,数据分拣,Hive,介绍,全文对比,数据统计,数据分拣,分区映射,数据验证,遇到的问题,产生的目录,/,文件数,非常多,产生目录数及文件数按日呈级数增长,一个月产生,465,个目录,一年产生,66795,个目录,文件数,=,目录数,*reduce,数,(,如,1000),对,NameNode,压力非常,大,对应分区非常多,,Hive,元数据库压力也很大,文件大小不均匀,如何快速访问任意一天,/,一段时期的快照数据,分拣中运行出错会导致数据损坏或丢失,不同月份数据并行运行丢失数据问题,单个数据标签内数据损坏,/,丢失导致一段时期内快照不准,其他的一些保护机制,应用效果,迄今为止已有,30,余种业务数据完成应用,累积节省存储达,15PB,。

极限,存储,使用方法,Hive:,取某天快照,:,select,*from,tb_users_exst,where,pt_start20100410,取某天快照,(UDF,方式,):,select,*from,tb_users_exst where,exst_pt,(pt_start,pt_end,20100410),取一段时间快照,:,select,*from,tb_users_exst,where pt_start,20100410,Hadoop:,在调用,setInputDir,之前通过提供的方法获得生命周期目录列表,如下,:,List dateLists=DateListGenerator.generateExStoreListDirs(/,group/taobao/taobao/hive/tb_users_exst,20100410);,极限,存储,应用场景,查看一件商品,2011,年的变更历史,:,不使用极限存储,:,select*from tb_auctions where,pt=20110101 and pt=20110731,扫描数据量,:450G*7*30=92TB,使用极限存储,:,s,elect*from tb_auctions_exst where,pt_start,20110731,扫描数据量,:450G*7*2,膨胀率,=6TB(,当前实现,),450G*2,膨胀率,=900G(,理想情况,),获取某天增量,(delta),数据,:,select*from,tb_auctions where pt_start=20110105,注,:,月头不适用,,1,号增量需要额外计算,极限,存储,方案优化,性能优化,:,支持从极限存储全量,&,当天增量产生极限存储数据,计算时间从,2,个小时下降至,1,个小时,计算成本下降了,5,0%,优化调整运行参数,:,set io.sort.spill.percent=0.80;set io.sort.mb=512;set io.sort.factor=32;set io.sort.record.percent=0.04;set mapred.reduce.parallel.copies=8;set mapred.job.shuffle.input.buffer.percent=0.70;,易用性,优化,:,Hive,层增加,hook,,实现,SQL,自动替换,对用户及上层业务透明。

下载提示
相关文档
正为您匹配相似的精品文档