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

Facebook使用HBase存储消息数据,每日处理超过750亿次读写操作,月新增数据达250TB。通过水平扩展、自动故障转移等功能实现高吞吐量与良好随机读取性能。针对HBase进行了增强,如引入HFile V2、优化合并策略并加强监控。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

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的结构。

 

HBase Enhancement

1、HFile V2的架构

 

  • 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多线程执行
  • 算法优化,如下图。

    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插件自动生成

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值