infoQ 百度技术沙龙第25期回顾:海量数据处理技术解析

来源:互联网 发布:上古卷轴5优化字体 编辑:程序博客网 时间:2024/05/17 08:58

百度技术沙龙第25期回顾:海量数据处理技术解析(含资料下载)

作者 贾国清 发布于 2012年4月8日

领域 
运维 & 基础架构, 
架构 & 设计, 
语言 & 开发 
主题 
HBase , 
MySQL , 
大数据 , 
数据库设计 , 
关系型数据库 , 
云计算 , 
Hadoop , 
数据库 , 
百度
分享到        

在4月7日由 @百度 主办、 @InfoQ 策划组织和实施的第25期百度技术沙龙活动上,来自百度数据流计算系统DStream项目负责人杨栋( @Sherlock__Yang)、58同城(58.com)云平台技术负责人,58同城技术中心架构部架构师徐振华( @浊者)分别分享了各自在海量数据存储和处理上取得的成果及经验,话题涉及“Hypertable Goes Realtime at Baidu”,以及“58同城在分布式存储方面的架构实践”等。本文将对他们各自的分享做下简单的回顾,同时提供相关资料的下载。

主题一:Hypertable Goes Realtime at Baidu(微盘下载讲稿)

来自百度数据流计算系统DStream项目负责人杨栋第一个为大家分享,本次演讲的主要内容包括:Hypertable能够满足应用的哪些需求、实际应用中遇到的挑战有哪些、可靠性or性能、如何应对这些挑战以及Hypertable和HBase有哪些异同。杨栋提到,在Noah系统最初建设时,主要遇到了以下的问题:

  • MySQL 
    Not inherently distributed(数据的无序增长、频繁地手工分配数据);表大小的限制;不够灵活的结构
  • Hadoop 
    不支持随机写入;随机读取的支持也不理想

由此,Hypertable+Hadoop的组合成为了最终的理想方案,在此基础上S,不仅从系统的角度有了足够多的灵活性,数据写入的高吞吐量、高可用的灾难恢复特性、错误隔离机制以及随机扫描等特性都得以大大增强。在详细介绍了模型设计和评估方法之后,杨栋对主要的设计关键点进行了总结:

  • 应用层面
    • 表设计
    • 加载策略
    • 去重处理
  • 高可用层面
    • 数据集中化
    • 日志与数据隔离
    • 负载均衡
  • 内存使用
    • 内存池
    • 简洁策略
  • 读/写性能
    • 内存/SSD/SAS/SATA
    • 块/队列缓存
    • 压缩策略
    • 资源隔离

最后,杨栋从多个角度对Hypertable和HBase进行了对比:

  • 社区(Hypertable:Hypertable;HBase:Apache)
  • 实现语言(Hypertable:Boost C++;HBase:Java)
  • 内存管理(Hypertable:详尽的内存管理;HBase:垃圾回收)
  • 缓存管理(Hypertable:动态的缓存管理;HBase:Java堆栈缓存)
  • 性能(Hypertable:高;HBase:一般)
  • 编译配置(Hypertable:容易;HBase:复杂)
  • 压缩机制(Hypertable:直接的Native压缩;HBase:基于JNI方式)

主题二:58同城在分布式存储方面的架构实践(微盘下载讲稿)

58同城(58.com)云平台技术负责人,58同城技术中心架构部架构师徐振华第二个为大家分享,徐振华主要从理论、分析和实践三个层次分享了58同城在分布式存储领域的思考和实践。首先,通过Draw Something成功和C10K问题,引出分布式系统的目标是提高资源利用率,做到线性扩展;同时分享了分布式存储的主要存储模型,分布式hash表和分布式B+树,以及常用的用空间换时间,用错误率换空间,用查询性能换插入性能等思想

  • Consistent hash(去中心化)
  • B+ tree(实时、随机)
  • LSM tree(批量、顺序)

接着,和大家分享了58同城做为一个创业公司,如何根据自身业务的特点,选择适合自己的技术和架构,用最小的成本获得最大的回报:

  • 分析需求,做好平衡
  • 使用Kiss原则,做到RAS(可靠、可用、可扩展)
  • 设计和充分利用硬件,分级存储

然后,和大家分享了58同城在分布式存储方面的实践:

  • 信息系统 :Search engine(index) +MySQL(shard + M/S)+ memcached
  • 统计数系统 :MongoDB + Auto sharding
  • 图片系统 :CDN+Nginx+simple GFS(master-slave)
  • 统计分析:Hadoop + HBase

最后,徐振华提到58同城在使用开源软件的同时,也在积极参与和回报开源社区,推动开源社区的发展。

Open Space(开放式讨论环节)

和以往的环节一样,​为了让参会者能够有更多的时间进行相互的交流,本次活动依然设置了Open ​Space(开放式讨论)环节。除了讲师杨栋、徐振华外,新浪微博唐福林、阿里云王乐珩也参与了小组讨论。在Open Space的总结环节,几位话题小组长​分别对讨论的内容进行了总结。

杨栋:主要分享了“如何构建一套完整的数据分析平台”的话题,包括如何构建分布式的存储系统、如何构建分布式的计算系统以及如何构建分布式的数据仓库,此外还讨论了关于实时计算和数据量方面的问题,并与个别参会者就如何处理压缩的问题进行了细节的讨论。

徐振华:主要分享了“如何构建一个弹性计算平台”的话题,并就Hadoop的使用经验与大家进行了讨论。

唐福林:主要分享了“最简单的大数据实现(微博计数器)”的话题,从微博计数器出发,引出每种大数据解决方案在特定限制条件下都有不足,并就如何选择和开发适合自己的大数据解决方案工具进行了讨论。

王乐珩:主要分享了“Offline 大数据处理”的话题,并就云平台上数据分析的工具和方法进行了讨论。

会后,一些参会者也通过新浪微博分享了他们的参会感受:​​

@genstoneV:即时心得:云集算服务需要满足很多业务特点,所以什么边界条件都要研究。

@gqgl_work:58实现计算资源的统筹,任务与计算不绑定,灵活部署。

@Andy平安:Draw Something为什么可以这么火?出色的产品创意不可否认,另外一方面是Zynga早在用户膨胀之前就提前做了Couchbase方面的技术储备。兵马未动,粮草先行,用户数据量的增长是难以准确hold的,我们不能总是被动升级现有系统。

@genstoneV:刚听完#百度技术沙龙# 的Hypertable的分享,对分布式系统的搭建过程,需要面临的细节问题提了些,很有心得。不过分享时能否尽量不要用e文呢,毕竟大家都是说中文,理解有些慢。

@Baidu朱涛:百度需要的是持续创新,永葆活力,这样才能赢得更多百度用户的好评和网民的认可。

@solochar:#百度技术沙龙#hypertable高可用,内存,读写优化。Hypertable很多思想与HBase很一致,优化的想法也很一致。C++的优势在于操控性,用于较苛刻的场景。

@赵国栋TMT:百度技术沙龙,讨论大数据技术。主题是海量数据处理技术。人非常多,许多人席地而座。我们准时到达,也只能站边上。

@ujnjing:#百度技术沙龙# 诺亚最开始使用MySQL存储数据量确实太大了,而且数据格式无规律。

此外,在本次的沙龙活动中,还特别邀请到中科院计算所副研究员、大规模数据计算专家查礼(@solochar)来与大家分享在大数据领域的研究成果。

有关百度技术沙龙的更多信息,可以通过新浪微博关注@百度技术沙龙,或者加入百度技术沙龙微群,InfoQ上也总结了过往24期所有百度技术沙龙的演讲视频和资料等,感兴趣的读者可以直接浏览阅读。