谷歌经典论文BigTable翻译.docx

谷歌经典论文BigTable翻译.docx

ID:50473761

大小:31.48 KB

页数:6页

时间:2020-03-09

谷歌经典论文BigTable翻译.docx_第1页
谷歌经典论文BigTable翻译.docx_第2页
谷歌经典论文BigTable翻译.docx_第3页
谷歌经典论文BigTable翻译.docx_第4页
谷歌经典论文BigTable翻译.docx_第5页
资源描述:

《谷歌经典论文BigTable翻译.docx》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、前记几年前在读Google的BigTable论文的时候,当时并没有理解论文里面表达的思想,因而囫囵吞枣,并没有注意到SSTable的概念。再后来开始关注HBase的设计和源码后,开始对BigTable传递的思想慢慢的清晰起来,但是因为事情太多,没有安排出时间重读BigTable的论文。在项目里,我因为自己在学HBase,开始主推HBase,而另一个同事则因为对Cassandra比较感冒,因而他主要关注Cassandra的设计,不过我们两个人偶尔都会讨论一下技术、设计的各种观点和心得,然后他偶然的说了一句:Cassa

2、ndra和HBase都采用SSTable格式存储,然后我本能的问了一句:什么是SSTable?他并没有回答,可能也不是那么几句能说清楚的,或者他自己也没有尝试的去问过自己这个问题。然而这个问题本身却一直困扰着我,因而趁着现在有一些时间深入学习HBase和Cassandra相关设计的时候先把这个问题弄清楚了。SSTable的定义要解释这个术语的真正含义,最好的方法就是从它的出处找答案,所以重新翻开BigTable的论文。在这篇论文中,最初对SSTable是这么描述的(第三页末和第四页初):SSTableTheGoog

3、le SSTable fileformatisusedinternallytostoreBigtabledata.An SSTable providesa persistent,orderedimmutablemapfromkeystovalues,wherebothkeysandvaluesarearbitrarybytestrings. Operationsareprovidedtolookupthevalueassociatedwithaspecified key,andtoiterateoverallkey

4、/valuepairsinaspecifiedkeyrange.Internally,eachSSTablecontainsasequenceofblocks(typicallyeachblockis64KBinsize,butthisisconfigurable).Ablockindex(storedattheendoftheSSTable)isusedtolocateblocks;theindexisloadedintomemorywhentheSSTableisopened.Alookupcanbeperfo

5、rmedwithasinglediskseek:wefirstfindtheappropriateblockbyperformingabinarysearchinthein-memoryindex,andthenreadingtheappropriateblockfromdisk.Optionally,anSSTablecanbecompletelymappedintomemory,whichallowsustoperformlookupsandscanswithouttouchingdisk.简单的非直译:SST

6、able是Bigtable内部用于数据的文件格式,它的格式为文件本身就是一个排序的、不可变的、持久的Key/Value对Map,其中Key和value都可以是任意的byte字符串。使用Key来查找Value,或通过给定Key范围遍历所有的Key/Value对。每个SSTable包含一系列的Block(一般Block大小为64KB,但是它是可配置的),在SSTable的末尾是Block索引,用于定位Block,这些索引在SSTable打开时被加载到内存中,在查找时首先从内存中的索引二分查找找到Block,然后一次磁盘

7、寻道即可读取到相应的Block。还有一种方案是将这个SSTable加载到内存中,从而在查找和扫描中不需要读取磁盘。这个貌似就是HFile第一个版本的格式么,贴张图感受一下:在HBase使用过程中,对这个版本的HFile遇到以下一些问题(参考这里):1.解析时内存使用量比较高。2.BloomFilter和Block索引会变的很大,而影响启动性能。具体的,BloomFilter可以增长到100MB每个HFile,而Block索引可以增长到300MB,如果一个HRegionServer中有20个HRegion,则他们分别

8、能增长到2GB和6GB的大小。HRegion需要在打开时,需要加载所有的Block索引到内存中,因而影响启动性能;而在第一次Request时,需要将整个BloomFilter加载到内存中,再开始查找,因而BloomFilter太大会影响第一次请求的延迟。而HFile在版本2中对这些问题做了一些优化,具体会在HFile解析时详细说明。SSTable作为存储使用

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。