标点符(钱魏 Way)

Hadoop在腾讯数据仓库TDW的实践

多数据存储格式

1、结构化存储+列存储+压缩

table

  • 结构化存储
    • 更高的存储和解析效率
    • 提供了一些DB特性(获得表的行数,支持修改表结构)
    • 为随机访问提供基础设施
  • 列存储
    • 支持列簇存储
    • 大规模减小磁盘
    • 集群平均处理能力可得到10~20倍的提升(与hadoop本身的文本存储相比)
  • 压缩
    • 采用lzo压缩,兼顾IO和CPU
    • 行存储压缩比1:2,列存储1:4
    • 平均节省集群60%的存储空间

2、ProtocalBuffer

ProtocalBuffer

  • PB优势
    • 良好的协议扩展能力
    • 描述能力强、解析效率高
    • 编码格式节省存储空间
  • 腾讯广告业务统一采用PB为存储协议,更多其他业务也开始逐步使用
  • TDW支持PB格式
    • 早于开源版本实现
    • 可根据接口文件自动创建表结构

hash join 和 colocation

  • Hash Join
    • 90%的数据关联都是基于用户id的
    • 实现了hash分区入库
    • 优化器自动使用hash join(join key=hash key)
    • 省略了reduce阶段,大大节省计算时间
  • Colocation
    • 修改了namenode的block摆放策略,使同一hash分区的数据存放在同一台机器上
    • 用一致性hash环存放hash分区数据
    • 基于colocation的hash join只需要访问本地磁盘即可完成计算,节
    • 省参与join计算总数据量80%网络IO

基于负载感知的公平调度策略

taskTracker

基于负载感知的公平调度策略

  • 调度策略的特点
    • 资源分组,保证重要用户得到资源保障
    • 用户隔离,保证用户之间不互相影响
    • 允许重要紧急的任务立即获得集群全部资源
    • 小任务友好,小任务不会被大任务堵塞
    • 负载感知,不下发任务给内存/磁盘空间不足的子节点
  • 效果:集群稳定,总资源不变的情况下效率上升
    • 任务平均等待时长从24秒下降到19秒
    • 任务平均耗时降低10%
    • 集群CPU负载保持不变
    • 没有再出现过任务互相影响或者负载过高造成的故障

差异化多级存储策略

  • 结构化压缩
    • 平均2倍的压缩率
    • 读写效率和存储空间平衡
    • TDW中默认的压缩策略
  • 差异化压缩
    • 平均5倍的压缩率
    • 可与结构化压缩混用
    • 主要针对TDW中的冷数据
  • 差异化副本策略
    • hadoop raid
    • 节约存储和不降低数据安全
    • 更激进的副本策略
  • 存储成本可有50%的节省

分时计算框架

  • 问题提出
    • 白天集群负载低
    • 凌晨集群负载非常高,集群压力大
    • 无法按时完成计算任务
  • 解决思路:将某一时间段的计算压力分散到全天
  • 分时计算框架
    • 由框架完成分时计算,用户不感知,程序不需修改
    • 平峰填谷,集群资源得到充分利用,集群稳定性得到保证
    • 业务SLA得到更好保证

SQL/MED

med

  • MED = Management of External Data
  • SQL/MED is ISO/IEC 9075-9
  • 通过普通SQL可以访问到外部数据

友好丰富的用户界面

  • 过程语言
  • Window function
  • Cube,Rollup
  • CTE
  • ……

参考链接:

码字很辛苦,转载请注明来自标点符《Hadoop在腾讯数据仓库TDW的实践》

评论