Jeff 和 Sanjay 共同主导这一举措。2000 年 11 月,曾在苹果公司研究苹果电脑的 Wayne Rosing 加入谷歌,运营百人工程团队。「他们是领导。」他说。工程师每周工作九十个小时,如果不把代码输入整体系统,则单个硬盘肯定会出现故障。于是工程师为网页抓取过程添加了检查点。通过开发新的编码和压缩机制,他们有效地使系统容量翻倍。他们是不懈的优化者。汽车拐弯时,外轮覆盖的地面面积更大;类似地,运转着的硬盘的外边缘(outer edge)比内边缘更快,但内部处于半空状态。Jeff 和 Sanjay 使用该空间存储常见搜索查询的预处理数据。2001 年 1 月 4 日,他们证明谷歌的 index 可以使用快速随机存取存储器(RAM)来存储,而不用相对缓慢的硬盘,这一发现重塑了谷歌的经济状况。Page 和 Brin 知道用户会乐于使用一项能够提供即时答案的服务,问题在于速度(即时性)需要算力,而算力需要钱。Jeff 和 Sanjay 完成了这一艰巨任务。
这两位顶级程序员就像一个大脑的两个半球
「那是 120,000 个堆栈调用,不是 KB。」
不久,他们达到了一个小的里程碑,Sanjay 键入了一个命令来测试他们的进展。他在运行时检查了一下 e-mail。看起来很疲惫。测试结束了,他没有注意到。
Jeff 和 Sanjay 一起写代码来补偿硬件的问题。很快新 index 就完成了,作战室宣告解散。Silverstein 曾陷入困境。他是一个很好的调试员,但解决的关键是找到问题的根源,最新网页传奇开服,Jeff 和 Sanjay 走得更深。
三月的一个周日,Jeff 和 Sanjay 一起去库比蒂诺城外远足。天气清爽、干冷,但在太阳底下还是有些热。Jeff 开着一辆蓝色的特斯拉 Roadster 抵达山口,车的保险杠上贴着 Bernie 2016 贴纸。Sanjay 开着自己的红色特斯拉 Model S 紧随其后。Sanjay 整个早上都在读书。Jeff 则选择踢足球(绑在小腿上的设备提醒他已经跑了 7.1 英里)。在创造「March index」20 年后,Jeff 像一名退休的耐力运动员,他的皮肤受到太阳灼晒。但 Sanjay 看起来却年轻得多。
Sanjay 看着 Jeff。几个月以来,谷歌正在经历越来越多的硬件故障。当时的问题是,谷歌正在成长,所以它的计算基础设施也在扩张。计算机硬件很少出错,直到问题积累爆发——然后就会一直无法运转。线路磨损、硬盘坏道、主板过热。很多机器从一开始就没有工作过,有些则速度慢的让人无法接受。各种奇特的环境因素也必须考虑在内——当超新星爆发时,爆炸会产生向所有方向散发的高能粒子。科学家认为有很小的几率,一种被称为宇宙射线的粒子可以击中计算机芯片,让 0 和 1 翻转。所以,世界上最鲁棒的计算机系统,比如 NASA、金融公司的系统,会使用可以接受单比特翻转的特殊硬件。但此时的谷歌仍然更像一家初创公司,使用的是缺乏这种功能的廉价计算机。这家公司已经到了发展的拐点,它的计算集群变得无比巨大,大到无法忽视这种硬件故障。
Jeff 咬了一口他买的披萨。他长着像水手一样的手指,指节粗大还有点粗糙;相比之下,Sanjay 看起来似乎有点脆弱,他也不知道当初是怎么和 Jeff 成为搭档的。「我也不知道当初是怎么决定在一起合作的。」他说。
他们依然可以看见南边的圣克鲁斯山和东边的使命峰(Mission Peak)。「Sanjay,那是你的办公室!」Jeff 说道。他们并肩而立,视线穿越山谷。
2005 年 Rosing 离开谷歌后,Alan Eustace 成为工程团队的新领导。Eustace 称,「荒谬的是,要想解决大规模问题,你必须先了解最微末的细节。」Jeff 和 Sanjay 对计算机有非常深入的了解。Jeff 曾经写过一份清单《Latency Numbers Every Programmer Should Know》。实际上,这是一份数字清单,几乎没有程序员了解。而这些数字已经嵌在 Jeff 和 Sanjay 的大脑中。他们带头对谷歌的核心软件践行了几次重写,该系统的容量扩展了几个数量级。同时,谷歌的数据中心专家按照软件生成的指令来设置硬盘、电源供给和记忆条。这样即使某个部件坏了,整个系统仍然能够运转。
事实证明,AI 依赖于规模,而系统工程师 Jeff 提供了规模。他的一项努力是领导了 TensorFlow 项目的开发——目标是为 AI 创造出类似 MapReduce 的东西。TensorFlow 简化了将神经网络分配到多台计算机的任务,从而可将它们变成一个巨大的脑。2015 年,TensorFlow 公开发布,变成了 AI 的通用语言。谷歌 CEO Sundar Pichai 近期还宣布谷歌是一家「AI 优先」公司,并让 Jeff 领导该公司的 AI 计划。
他们又走进了一片丛林。在一个之字形的爬坡路段,Jeff 瞥了一眼树后。「我们可以在某个点好好眺望一下。」他说道。
在喝完卡布奇诺之后,他们走到电脑前。Jeff 将一把椅子从自己凌乱的桌子前转到 Sanjay 的桌子上,Sanjay 的桌子一尘不染。他把一只脚放在文件柜上,向后靠,Sanjay 在他面前查看屏幕。他打开了四个窗口:左侧是 Web 浏览器和终端,用于运行分析工具;右边是文本编辑器 Emacs 中的两个文档,一个是组合待办事项列表和 notebook,另一个是色彩斑斓的代码。Sanjay 的 Mead 笔记本放在电脑旁边。
2004 年,因为 Jeff 和 Sanjay 认为这些技术对天文学家、遗传学家和其他有大量数据需要处理的科学家很有用,所以他们写了一篇论文《MapReduce: Simplified Data Processing on Large Clusters》,并将其公开。这篇 MapReduce 论文真乃一场及时雨。廉价硬件以及网络服务和互连设备的增长带来了巨量数据,但只有很少的公司拥有处理这些信息的软件。Mike Cafarella 和 Doug Cutting 这两位工程师坚信 MapReduce 的重要性,以至于他们决定从头开始创建一个该系统的免费克隆版本——在此之前,他们一直在艰难地扩展一个小型搜索引擎 Nutch。他们最终将自己的项目命名为 Hadoop,得名于 Cutting 的儿子喜欢的一个毛绒小象玩具。Hadoop 日趋成熟,已经得到了半数「财富 50 强(Fortune 50)」公司的采用。Hadoop 几乎已成为「大数据」的同义词。众所周知,Facebook 使用了 Hadoop MapReduce 来存储和处理用户元数据——关于用户点击、喜欢、广告查看等行为的信息。Facebook 曾有一段时间拥有世界上最大的 Hadoop 集群。Hadoop MapReduce 还帮助驱动了 LinkedIn 和 Netflix。前美国国家安全局(NSA)技术主管 Randy Garrett 记得曾向 NSA 局长 Keith Alexander 上将演示过这项技术。Hadoop 执行分析任务的速度是之前系统的 18000 倍。它成了一种新的情报收集方法的基础,某些观察家称之为「collect it all」。
今天,谷歌的工程师处于一个「存在锁链」中,从 Level 1 开始。最底层一级即 Level 1 是 IT 支持人员,Level 2 是应届大学毕业生,Level 3 通常有硕士文凭。到达 Level 4 需要几年工作经验,或者有博士文凭。大部分工程师停留在 Level 5。Level 6 工程师(top 10%)能力非常强悍,他们可以是一个项目成功的关键。Level 6 工作经验逐渐增长到一定程度会升成 Level 7,而 Level 8 和主要产品或基础架构相关。Level 9 是 Distinguished Engineer。Level 10 是 Google Fellow,该荣耀一旦得到将伴随一生,Google Fellow 通常是其领域内的世界级顶级专家。而 Jeff 和 Sanjay 是 Google Senior Fellow——谷歌唯二的 Level 11。

