欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[Binospace] HBase在Facebook Message存储的使用经验总结

程序员文章站 2022-05-16 12:21:14
...

HBase数据存储状况

1、2PB+ of online data in HBase (6PB+ with replication; excludes backups),存储了message data, metadata, search index 等信息。

2、每天大概有8B+Messages,增长到每月大概产生250TB的数据。

3、Traffic to HBase ▪ 75+ Billion R+W ops/day  ▪ At peak: 1.5M ops/sec   ▪ ~ 55% Read vs. 45% Write ops 。

Facebook选择HBase的原因

▪ High write throughput

▪ Good random read performance

▪ Horizontal scalability

▪ Automatic Failover

▪ Strong consistency

▪ Benefits of HDFS

Fault tolerant, scalable, checksums, MapReduce

internal dev & ops expertise

Facebook的HBase架构

Multiple clusters/cells for messaging

▪ 20 servers/rack; 5 or more racks per cluster Controllers (master/Zookeeper) spread across racks

[Binospace] HBase在Facebook Message存储的使用经验总结
            
    
    博客分类: HBaseHBase架构/功能HBase性能 HBaseFacebookMessage 

 

Facebook将消息的存储分成多个HBase集群,每个HBase集群由多个Rack上的节点组成,这样可以减小故障对服务影响的范围。

Facebook消息的schema

1、RowKey:md5sum(userid)+userid。结合preSplit,可以避免HotSpot。

2、借助HBase单行操作的原子性。一个用户的所有信息存储成一行,这包括消息本身、Message Index、Search Index、以及相关Meta Data(Actions:addMessage、markAsRead,etc)。

Example:Facebook如何存储Message Index的结构。

[Binospace] HBase在Facebook Message存储的使用经验总结
            
    
    博客分类: HBaseHBase架构/功能HBase性能 HBaseFacebookMessage 

 

HBase Enhancement

1、HFile V2的架构

[Binospace] HBase在Facebook Message存储的使用经验总结
            
    
    博客分类: HBaseHBase架构/功能HBase性能 HBaseFacebookMessage 

 

  • Open HFile操作
    1) 提供对于V1、V2两种格式的HFile的兼容。这分别对应于org.apache.hadoop.hbase.io.hfile.HFileReaderV1和org.apache.hadoop.hbase.io.hfile.HFileReaderV2
    2) 加载Opening-time Data Section区域的数据。这些操作位于HFileReaderV2或者HFileReaderV1的构造函数中。
  • Write操作
    1)写数据到Data Block。 HFileBlock //本操作暂时忽略MemStore的过程,只是对于HFile文件的操作。
    2)写bloom block和Leaf index block
  • Read操作
    1) 从Root Data Index和Bloom Index检索。
    2)进入Leaf level index ,然后查找Block Cache,如果dismiss,就从hfile把对应DataBlock加载到Cache中。

2、Compaction 优化

  • Major Compaction与Minor Compaction采用不同的队列。
  • 在off-peak负载下预先进行Compactions
  • Compaction多线程执行
  • 算法优化,如下图。
    [Binospace] HBase在Facebook Message存储的使用经验总结
            
    
    博客分类: HBaseHBase架构/功能HBase性能 HBaseFacebookMessage 
    ps(将满足要求的小文件合并,过去was,修改之后的算法,现在Now)

3、监控与Metrics

  • Metrics收集HBase状态信息。▪ block cache usage & hit ratio
    ▪ memstore usage
    ▪ on-disk file sizes
    ▪ file counts
    ▪ bytes returned, bytes flushed, compaction statistics
    ▪ stats by block type (data block vs. index blocks vs. bloom blocks, etc.)
    ▪ bloom filter stats
  • 增加了对于Region、CF statistics的收集和应用。
  • 所有收集的stats数据会单独存储在Data Store中。
 

文章的脚注信息由WordPress的wp-posturl插件自动生成