|
本帖最后由 gaolu1234 于 2012-10-23 16:41 编辑
hbase 构成 :
api + master + region server( hfile + memstore+writer-ahead-log)
hdfs + zookeeper .
主节点 负载 处理 跨region server 的 region的 负载平衡。从负载压力大的 server 上 把region 移动到 压力小的server上。主节点 不是数据存储的一部分,也不是搜索路径。 主节点协调 负载平衡 ,管理 cluster 的状态, 不提供数据 , 因此压力是很轻的。 附带的,也管理 schema 改变 和 其他的元数据操作, 如果表建立 ,cf管理等。
region server 负责 在其上的所有的 region(真正保存数据的)所有的 读/ 写要求 . 也在region 超过配置大小阈值的时候 , 负责 分割 region 。 客户端直接与 region server 通讯 ,处理 所有数据相关的操作 .
总结:
数十亿 行 , 数百万的 列, 数千的 version = tb 或者pb的数据
我们已经知道google的Bigtable 存储架构 是如何使用 很多服务器来 ,通过 key 来 将记录行分布, 达到负载平衡 和 扩展到 pb 的数据,在数千台服务器上 。 使用的存储格式 是理想的 用来 读 临近的 key /value 数据对 ,和 优化的 IO block操作 , 能够饱和的使用 磁盘的IO能力 。
表扫描在线性的时间, rowkey 查询 , 转换 能在 对数级 性能良好的运行。 在极端的例子,在常量顺序 ,使用 bloom filter , 设计 schema 用这样的方法, 避免 明确锁定 , 使用 行级别原子操作组合, 给了系统 扩展能力,而不影响读写性能。
列导向结构, 大的宽的,稀疏的表, null存储没有代价。因为每行记录都由确定的一个 服务器管理 , hbase是一个强一致性, 使用多版本的 ,避免冲突的 ,使用并发去耦过程, 获得历史变化。
实际上Bigtable 已经在google里面上线 在2005开始了, 可以在不同的应用情况下使用, 从批导向的处理,到实时数据处理。 保存的数据从很小 例如 url 到 很大 , 例如 网页内容 和 卫星地图 , 已经成功地提供了 灵活的 高性能的 解决方案, 例如 google earth , google reader , google finance , google analytics 。
|
|