`

HBase Versus Bigtable(comparison)

 
阅读更多

below views are all from hbase's guide(maybe with my some comments fonted by deferent size)

 

Overall, HBase implements close to all of the features described in Chapter 1. Where it differs, it may have to because either the Bigtable paper was not very clear to begin with, or it relies on other open source projects to provide various services and those simply work differently.

 

 

HBase stores timestamps in milliseconds—as opposed to Bigtable, which uses micro- seconds. This is not much of an issue and can possibly be attributed to C and Java having different preferred timer resolutions.

( i have saw that someone were talking about using 'us' instead of ms a few weeks ago,maybe this feature will be refenenced)

 

While we have not yet addressed the specific details, it should be pointed out that both also use different compression algorithms. HBase uses those supplied in Java, but can also use LZO (with a bit of work; we will look into this later).* Bigtable has a two-phase compression using BMDiff and Zippy(the father of snappy).

 

HBase has coprocessors that are different from what Sawzall, the scripting language used in Bigtable to filter or aggregate data, or the Bigtable Coprocessor framework,provides. The details on Google’s coprocessor implementation are rather sketchy, so if there are more differences, they are unknown. On the other hand, HBase has support for server-side filters that help reduce the amount of data being moved from the server to the client.

 

HBase does primarily work with the Hadoop Distributed File System (HDFS), while Bigtable uses GFS. But HBase can also work on other filesystems thanks to the pluggable FileSystem class provided by Hadoop. There are implementations for Amazon S3 (raw or emulated HDFS), as well as EBS.

 

HBase cannot map storage files into memory, something that is available in Bigtable. There is ongoing work in HBase to optimize I/O performance, and with the addition

 

 

* While writing this book, Google made Zippy available under the Apache license and the name Snappy. The work to integrate it with HBase is still in progress. See the project’s online repository for details.

† Jeff Dean gave a talk at LADIS ’09 (pages 66-67) mentioning coprocessors.

of more widespread use of Java’s New I/O (NIO), it may be something that could be enhanced.

 

Bigtable has a concept called locality groups, which allow the client to group specific column families together and apply shared features, such as compression. This is also useful when the contained columns are accessed together, as all the data is stored in the same storage files. Column families in Bigtable are used for accounting and access control. In HBase, on the other hand, there is only the concept of column families, combining the features that Bigtable has in two distinct concepts.

 

Apart from the block cache that both systems have, Bigtable also implements a key/ value cache, probably for cells that are accessed a lot.

 

The handling and implementation of the commit log also differs slightly. Bigtable has two commit logs to handle slow writes and is able to switch between them to com- pensate for that. This could be implemented in HBase, but it does not seem to be a topic for discussion, and therefore is omitted for the time being.

In contrast, HBase has an option to skip the commit log completely on writes for per- formance reasons and when the possibility of not being able to replay those logs after a server crash is acceptable.

 

 

The METADATA table in Bigtable is also used to store secondary information such as log events related to each tablet. This historical data can be used to analyze tablet transi- tions, splits, and/or merges. HBase had the notion of a historian in earlier versions that implemented the same concept, but its performance was not good enough and it has been removed.

 

While splitting regions/tablets is the same for both, merging is handled differently. HBase has a tool that helps you to merge regions manually, while in Bigtable this is handled automatically by the master. Merging in HBase is a delicate operation and currently is left to the operator to decide what is best.

 

Another very minor difference is that the master in Bigtable is doing the garbage collection of obsolete storage files. One reason for this could be the fact that, in Bigtable, the storage files are tracked in the METADATA table. For HBase, the cleanup is done by the region server that has done the split and no file location is recorded explicitly.

 

Bigtable can memory-map entire storage files and use them to perform lookups without a single disk seek. HBase has an in-memory option per column family and uses its LRU cacheto retain blocks for subsequent use.

 

There are also some differences in the compaction algorithms. For example, a merging compaction also includes a memtable flush. Mostly, though, they are the same and simply use different names.

‡ See Cache algorithms on Wikipedia. 498 | Appendix F:

 

 

Region names, as stored in the meta table in HBase, are a combination of the table name, the start row key, and an ID. In Bigtable, the corresponding tablet names consist of the table identifier and the end row. This has a few implications when it comes to locating data in the storage files (see “Read Path” on page 342).

 

 

Finally, it can be noted that HBase has two separate catalog tables, -ROOT- and .META., while in Bigtable the root table, since in both systems it only ever consists of one single region/tablet, is stored as part of the meta table. The first tablet in the METADATA table is the root tablet, and all subsequent ones are the meta tablets. This is just an implementation detail. 

分享到:
评论

相关推荐

    基于matlab平抑风电波动的电-氢混合储能容量优化配置【含Matlab源码 期】.zip

    CSDN海神之光上传的全部代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,可私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博主博客文章底部QQ名片; 4.1 CSDN博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    dynamic_unet-0.0.2-py3-none-any.whl

    dynamic_unet-0.0.2-py3-none-any.whl

    基于Java语言的动态二维码生成与绘制设计源码

    该项目是一款基于Java语言的动态二维码生成与绘制设计源码,包含126个文件,包括64个JAR包、24个PNG图片、17个GIF动画、10个XML配置、7个Java源文件、2个Markdown文件、1个Idea项目配置文件和1个JPG图片文件。该项目通过图像生成动态二维码,适用于需要动态二维码绘制的场景。

    go1.23.1.linux-amd64.tar.gz

    golang linux amd63 sdk

    JavaScript高分作品《微信小程序-图书馆管理系统》+源代码+文档说明

    <项目介绍> - 微信小程序—图书馆管理系统 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

    Win实现Mac一样的流畅丝滑

    ψx60wyycaqwin25rψ Win实现Mac一样的流畅丝滑

    Java2Top -「Java学习+面试指南+编程资源」

    Java2Top |「Java学习+面试指南+编程资源」一份涵盖 Javacoder 从零基础到进阶大厂的全面学习与面试指南~。

    基于Springboot和Vue的疫情管理系统源码 疫情管理系统代码(程序,中文注释)

    疫情管理系统-疫情管理系统-疫情管理系统-疫情管理系统-疫情管理系统-疫情管理系统-疫情管理系统-疫情管理系统-疫情管理系统-疫情管理系统-疫情管理系统-疫情管理系统 1、资源说明:疫情管理系统源码,本资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 2、适用人群:计算机相关专业(如计算计、信息安全、大数据、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工等学习者,作为参考资料,进行参考学习使用。 3、资源用途:本资源具有较高的学习借鉴价值,可以作为“参考资料”,注意不是“定制需求”,代码只能作为学习参考,不能完全复制照搬。需要有一定的基础,能够看懂代码,能够自行调试代码,能够自行添加功能修改代码。 4. 最新计算机软件毕业设计选题大全(文章底部有博主联系方式): https://blog.csdn.net/2301_79206800/article/details/135931154 技术栈、环境、工具、软件: ① 系统环境:Windows ② 开发语言:Java ③ 框架:SpringBoot ④ 架构:B/S、MVC ⑤ 开发环境:IDE

    基于matlab粒子群综合能源系统优化【含Matlab源码 期】.zip

    CSDN海神之光上传的全部代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,可私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博主博客文章底部QQ名片; 4.1 CSDN博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    af4fff13f6f2a7594ca86979127f5212.JPG

    af4fff13f6f2a7594ca86979127f5212.JPG

    德国大陆24GHz短距宽角毫米波雷达ARS408,SRR308技术资料含DBC

    德国大陆24GHz短距宽角毫米波雷达ARS408,SRR308技术资料含DBC

    基于Springboot和Vue的大学生一体化服务平台源码 大学生一体化服务平台代码(程序,中文注释)

    大学生一体化服务平台-大学生一体化服务平台-大学生一体化服务平台-大学生一体化服务平台-大学生一体化服务平台-大学生一体化服务平台-大学生一体化服务平台-大学生一体化服务平台-大学生一体化服务平台-大学生一体化服务平台-大学生一体化服务平台-大学生一体化服务平台 1、资源说明:大学生一体化服务平台源码,本资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 2、适用人群:计算机相关专业(如计算计、信息安全、大数据、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工等学习者,作为参考资料,进行参考学习使用。 3、资源用途:本资源具有较高的学习借鉴价值,可以作为“参考资料”,注意不是“定制需求”,代码只能作为学习参考,不能完全复制照搬。需要有一定的基础,能够看懂代码,能够自行调试代码,能够自行添加功能修改代码。 4. 最新计算机软件毕业设计选题大全(文章底部有博主联系方式): https://blog.csdn.net/2301_79206800/article/details/135931154 技术栈、环境、工具、软件: ① 系统环境:Window

    基于asp.net的语言课程网设计与实现.docx

    基于asp.net的语言课程网设计与实现.docx

    基于Java语言的lib-android-PermissionHelper封装Android M运行时权限申请设计源码

    该项目为Java语言编写的Android运行时权限申请封装库,名为lib-android-PermissionHelper,源码包含59个文件,涵盖20个XML配置文件、14个Java源文件、7个PNG资源文件、5个Gradle构建脚本文件、3个Git忽略规则文件以及若干其他辅助文件。此库专注于Android M及以上版本的权限申请流程封装,旨在简化开发者对运行时权限的申请处理。

    基于Vue框架的hao123程序员网址导航设计源码

    该项目是一款基于Vue框架构建的程序员网址导航系统源码,包含136个文件,包括56个PNG图片、49个ICO图标、11个Vue组件文件、5个JavaScript文件以及少量JSON、YAML和其他配置文件。该系统以简洁明了的界面,为程序员提供便捷的网址导航服务。

    基于c语言的力学相关的流体源码.zip

    基于c语言的力学相关的流体源码.zip

    基于c语言的自创军旗游戏源码.zip

    基于c语言的自创军旗游戏源码.zip

    基于 OpenCV 构建的基于边缘的车道线检测器

    该程序对帧率很敏感,因此需要针对不同的视频进行进一步的参数调整。 当前参数针对 CULane 数据集进行了调整,该数据集的帧速率非常低(我猜,它们每秒只挑选一小部分录制的帧以减小数据集的大小)。它在 上运行得相当不错,这是一个 24 FPS 视频,但如果置信度指数的降低率和容忍范围较低,那就更好了。如果您尝试 60 FPS 的视频,除非您知道如何调整参数,否则这种现象会更严重。

    基于Html+JavaScript+Java的相机租赁系统设计源码

    该项目是一款基于Html、JavaScript和Java的相机租赁系统源码,综合运用前端与后端技术,包含265个文件,其中HTML文件31个,JavaScript文件56个,Java文件45个,CSS文件23个,PNG图片53个,以及其他类型的文件如XML、properties等。该系统旨在提供相机租赁管理的便捷解决方案,支持用户交互和数据处理。

    windows qt 实现守护进程 监控 子进程状态 demo

    1、守护进程启动子进程 2、子进程异常退出,守护进程自动重启子进程 3、子进程正常退出,守护进程退出 4、守护进程退出,子进程退出 5、模拟子进程崩溃闪退情况

Global site tag (gtag.js) - Google Analytics