写点什么

百度技术沙龙第 2 期回顾:分布式与服务扩展(含演示文档下载)

  • 2010-05-19
  • 本文字数:1634 字

    阅读完需:约 5 分钟

在百度技术沙龙第 2 期(5 月 15 日)的活动上,我们邀请到了百度分布式高级工程师马如悦以及 FreeWheel 的核心系统技术总监王迪分别分享了关于分布式以及服务扩展两个话题,本文将对他们的演讲内容进行一下简单的总结,并为大家提供了演示文档的下载

为 Hadoop 的发展贡献自己的力量

在马如悦的演讲中,他主要介绍了百度的大规模数据存储、数据分析以及数据索引,主要包括以下内容点:

  • 大规模数据存储
    • Lustre 和 HDFS
    • 系统结构
    • HDFS 优势、不足
  • 大规模数据分析
    • MPI 和 MapReduce
    • MapReduce 概念模型、实现模型
    • MapReduce-Hadoop 实现
  • 大规模数据索引
    • MySQL 和 HBase 对比
    • HBase 详解
  • 在以上三方面百度遇到的问题、对策和原则

其中,马如悦提到,百度现在要处理的数据量非常庞大:存储 20PB+ 数据,每日新增数据 10TB+,每天处理的数据 1PB+,每天提交 10K+ 次作业。现在使用的文件系统是 HDFS,数据存储是 HBase,有超过 2K 台服务器节点,每个节点为 2*4 core。现在遇到的一个棘手问题便是 namenode 的瓶颈问题:因为要存储大量的(小)文件,使 namenode 的压力非常大,他们刚刚采购了 48GB 的内存,但是这 48GB 的内存,预计只能坚持到今年年底,到时候,可能会采购 96GB 的内存来紧急应对这个问题。所以百度在 namenode 的分布式方面,进行了很多研究。马如悦建议大家:

如果对这方面感兴趣的话,可以参考 Linux 2.6.34 中的 Ceph 文件系统,它就是一个基于 PB 规模的分布式文件系统。

最后,马如悦提到了百度目前正在重点研究 / 解决的几个问题 / 方向,他建议如果大家想对 Hadoop 做出一些成绩的话,这几个方向也是现在的热点:

  • HDFS namenode 的分布式改进
  • HDFS datanode 的读写异步化
  • MapReduce 的 jobtracker 的分布式改进
  • MapReduce 的新作业和任务调度器
  • MapReduce 的 Hadoop C++ 扩展框架

有读者对 Hadoop C++ 的扩展非常感兴趣,马如悦对此阐述了一下百度 Hadoop 的使用方式:

我们会定期在 Hadoop 的官方版本上找到一个稳定版本,然后进行自定义开发。过一段时间,当我们发现官方的版本如果增加了很多新增加的功能,比我们好很多,我们再开一个新的分支,把我们的功能移上去。我们的工程师在开发 Hadoop 的 C++ 扩展,我们大概是在 0.19 版分出来的,至今我们发现 chunk 版本仍然跑不过百度自己的版本,所以我们不会去做移植。HCE 在我们的版本上开发的,所以如果转移到 chunk 上,会有些难度,需要做一些调整,这会花费一些时间。上周我们工程师刚完成了一个版本,马上就可以为大家贡献出一个链接去试用。

以数据驱动为中心

王迪是 FreeWheel 核心系统的技术总监,从 07 年 FreeWheel 创立起,他全程参与到其广告核心系统的架构设计,也见证了 FreeWheel 从最初的的只有 20 台广告服务器、日均几十万的访问量、不到 1G/ 天的日志量,发展到现在拥有 60 台广告服务器、日均广告请求 5000 万次、日志处理服务器 8 台、日均 4 小时处理日志 200G 这么一个规模。3 年之间,流量增长 20 倍。他主要谈到了以下的一些经验和原则:

  • 应用服务扩展
    • 无状态应用服务
    • 复制与多层次 Cache
  • 数据仓库扩展
    • De-normalization/Pivot
    • Roll up/Data Availability
    • Benchmarking 与查询优化
    • Split-Loading/Sharding
  • 运营原则
    • 50% 运行负载上限 & N+1 Data Center
    • 监控和响应
    • 多阶段部署

很多具体的实践方法,都是针对他们具体的商业模式以及实际工作中摸索出来的,它不一定是“最好”的,但却是最适合的,比如对系统的负载当达到 50% 的时候,就是一个优化和扩容的信号了;再比如,以自动化回归测试为核心,但并未使用 TDD 单元测试,等等等等。

在提问环节,有读者对如何在回归测试中组织测试用例很感兴趣,王迪解释到:

比如我们有 700 个测试用例,需要 QA 做一些数据,可以用 SQL 文件的方式存在本地,然后把请求和预期也同样以文件的方式存在本地,然后在框架运行的时候,把它们载入到数据库当中,然后再服务结束后,再从数据库中取出来。

演讲资料下载

本次百度技术沙龙的演讲资料现在已经可以下载

相关内容

百度技术沙龙(第 1 期)活动总结演讲资料下载

2010-05-19 03:517405

评论

发布
暂无评论
发现更多内容

从设计模式理解Vue响应式(多图警告)

coolFish(呔呆)

JavaScript vue.js 响应式 大前端 设计模式

工具介绍 | 百度开源Server-Agent:高性能、高效率的任务调度执行引擎

百度开发者中心

开源

幕后故事 | YRCloudFile助力顶级视效制作公司MORE VFX打造视觉盛宴

焱融科技

高性能 存储 焱融科技 3D渲染 影视制作

重温亮剑-感悟

superman

顺利拿到OPPO公司Android架构师offer,Android跨进程通信导论,全套教学资料

欢喜学安卓

android 程序员 面试 移动开发

Invalid bound statement (not found)

任广印

Java MyBatisPlus

每日知识总结

country

技术赋能教育,浅谈教育机构转型的制胜关键

华为云开发者联盟

音视频 在线教育

15道类和对象面试题,快看看自己会几道

田维常

类集

区块链有望被主流接纳的四个场景

CECBC

区块链

java中的类和object,其实没那么难~

田维常

类集

硬核!我花5小时肝出这篇Redis缓存解决方案,带你起飞!

数据库 redis 缓存架构

区块链如何帮助联合国支持全球教育?

CECBC

区块链

Java 读写锁 原来这么简单

Java架构师迁哥

扎根CNCF社区贡献五年是怎样的体验?听听华为云原生开源团队的负责人怎么说

华为云开发者联盟

容器 Volcano cncf kubeedge 代码开发

一文带你解读Volcano架构设计与原理

华为云开发者联盟

架构 Kubernetes 负载 Volcano 集群

宅米网技术架构演进分析

Andy

太牛了!美团Android开发工程师岗位职能要求,大厂面试题汇总

欢喜学安卓

android 程序员 面试 移动开发

为什么强烈推荐 Java 程序员使用 Google Guava 编程!

沉默王二

Java Guava

怎么理解Kafka消费者与消费组之间的关系?

李尚智

Java 架构 消息队列 消息中间件

个人web分享92道JavaScript面试题附加回答

我是哪吒

程序员 面试 大前端 程序媛

数字货币写进多地“十四五”规划纲要草案 专家建议扩大数字人民币试点范围

CECBC

数字经济

2021最新Windows10环境下安装MacOS系统(黑苹果)亲测有效!!(VM安装黑苹果)

Z.

macos 黑苹果 windows vmware

认识Nacos注册中心

登风

nacos

5G机遇 | 如何解决在核心场景的高并发、超低延迟需求?

VoltDB

数据库 5G 通信 VoltDB

企业项目迁移go-zero全攻略(二)

万俊峰Kevin

微服务 microservice Go 语言

音视频传输协议众多, 5G时代不同业务应该如何选择?

华为云开发者联盟

5G 音视频 直播 流媒体

666666666666666666666

Paul

大数据

Appium下的WDA使用个人开发者证书配置

行者AI

自动化测试

Kubernetes生产环境最佳实践

xcbeyond

Kubernetes 容器 28天写作

12.4G阿里巴巴面经公开:技术笔记+视频讲解+简历模板,绝了!

996小迁

Java 架构 面试 程序人生

百度技术沙龙第2期回顾:分布式与服务扩展(含演示文档下载)_架构_刘申_InfoQ精选文章