前言
我目前在Google担任的角色使我可以与很多领域的数据科学家和数据工程师共同 工作,将数据处理和分析流程迁移到公有云上。对于很多工作来说,与在本地部署
上所做的都一样,方法也相同,区别只是将环境换成了租用的计算资源。尽管如此,目光长远的用户依然会重新思考他们的系统设计,改变使用数据的方式,从而能够更快地推动创新。
早在 2011 年,《哈佛商业评论》(Harvard Business Review)的一篇文章就提到, 云计算最大的收益之一,是帮助组织和机构以前所未有的方式共同工作。现在,这 一观点已得到广泛认可。麻省理工学院2017年的一项调查发现,通过向公有云转移, 更多受访者(45%)表示提高了敏捷性,而不是节约成本(34%)。
在本书中,我们将用示例向你展示这种全新、具有变革性,且更具协作性的数据科学实践方法。通过本书,你将学习如何实现端到端的数据管道。首先,我们会以无服务器的方式摄取数据,然后介绍数据探索、仪表板、关系型数据库、流数据,并最终展示如何训练并运行一个机器学习模型。本书涵盖了数据服务的所有方面,因为对于数据工程师来说,他们不仅要参与服务设计、开发统计和机器学习模型,还要掌握如何在大规模生产环境中实时部署和实施。
这本书适合谁
如果你使用计算机处理数据,那么这本书会适合你。本书针对的读者可以是数据分析师、数据库管理员、数据工程师、数据科学家,也可以是系统程序员。即使你现在的工作范围比较有限(也许只进行数据分析或构建模型,或者只是DevOps), 但只要你想进一步提升自己,那么就应该了解如何实现数据科学建模,以及如何在
生产系统下规模化实施。
Google 云计算平台旨在让你忽略基础架构的存在。无论是 Google BigQuery、Cloud Dataflow、Cloud Pub/Sub,还是 Cloud ML引擎,所有这些受欢迎的数据服务都是 无服务器且支持自动缩放的。你在 BigQuery 上提交的查询会在成千上万的节点上运 行,然后返回处理结果,你也无需启动群集或安装任何软件。同样,当你在Cloud Dataflow 中提交数据管道,或是在 Cloud Machine Learning Engine 中提交机器学习 任务时,你可以对数据进行大规模处理,并实现大规模模型训练,且无需担心集群 管理或故障恢复。Cloud Pub/Sub 是一项全球消息服务,该服务可以在无需人工干预 的情况下自动对订阅者和发布者的吞吐量和数量进行缩放。即使是开源解决方案(如 Apache Spark),Google云计算平台也可以轻松满足你的要求。你可以将数据保存 在 Google Cloud Storage上,而不是保存在 HDFS中,然后专门针对你的 Spark任 务启动一个群集即可。当任务执行完成,你可以毫无顾虑地删除该群集。由于这些群集的基础架构专门针对特定任务,因此你无需担心硬件会过度配置,也不必担心 性能不足等问题。另外,在 Google 云计算平台上,无论是存储中还是传输中的数据 都会被加密,以确保数据安全。这种能够让数据科学家从基础设施管理工作中得以解放的工作方式,无疑是令人难以置信的。
在 Google云计算平台上执行数据任务时,我们之所以能忘记虚拟机和群集的原因 是云计算平台上的网络连接性能。Google云计算平台数据中心内的网络单向带宽为 1 PBps,因此可以持续、高速地读取 Cloud Storage 中的数据。这就意味着你不需要 像传统的 MapReduce作业那样分割数据。相应的,Google云计算平台可以根据需 要将数据移动到新的计算节点,从而实现对计算任务的自动伸缩。因此,在 Google 云计算平台上开展数据科学工作时,你可以从群集管理中解放出来。
这些自动缩放、全面托管的云服务使大规模实施数据科学模型变得更加容易,这就是数据科学家不再需要将模型交给数据工程师的原因。相反,他们可以自己编写数据科学任务、提交到云端,然后这些任务就能以自动伸缩的方式自动执行。这种方式同时也让数据科学软件包变得越来越简单。因此,对于工程师来说,利用唾手可得的数据,结合预先准备好的模型来实现并运行自己的原始(通常已经是非常高质量的)模型已经变得非常容易。通过精心设计的软件包和易于使用的API,你无需 了解数据科学算法的深奥细节,所有你需要知道的,只有每种算法的作用以及如何将这些算法连接起来解决实际问题。通过对数据科学和数据工程进行这种融合,你就可以将自己的翅膀伸展到目前角色之外了。
在阅读本书时,我强烈建议你尝试使用示例代码,而不是简单地阅读文字内容。本 书提供了用于构建端到端管道的完整代码,你可以在 GitHub(https://github.com/ GoogleCloudPlatform/data-science-on-gcp)上获取。你可以创建一个 Google云计 算平台项目,在阅读完每一章之后,尝试参考示例代码和每个文件夹下的说明文件 README.md 注 1 来重复我们在书中所做的操作。
本书内容约定
本书使用以下排版约定:
斜体(italic) 表示新术语、网址、电子邮件地址、文件名和文件扩展名等。
等宽字体(constant width) 表示程序代码以及段落内用于引用的代码内容,如变量或函数名、数据库、数
据类型、环境变量、声明语句和关键字等。
等宽粗体(constant width bold)
表示应由用户逐字输入的命令或其他文本。
等宽斜体(constant width italic) 表示应由用户提供的值或根据上下文确定的值而替换的文本。
使用代码示例 更多补充资料(包括示例代码、练习等)可以从这里下载https://github.com/ GoogleCloudPlatform/data-science-on-gcp。
本书的目的是帮助你完成工作任务。通常,对于书中提供的示例代码,你可以直接在自己的程序和文档中使用,无需联系我们获取授权,除非你要再次分发大量示例代码。举例来说,如果你在编写程序时使用了本书提供的一部分代码,不用担心授 权问题;但如果你要以CD-ROM等方式销售或分发O’Reilly系列图书中的示例代码, 则需要获得我们的授权;在解答问题时如需引用本书提供的代码,你不需要取得授权;但如果你在自己的产品文档中使用本书的任意代码,则必须获得授权。
我们不强制要求版权声明,但我们感谢你能够引用本书。引用格式一般包含书 名、作者、出版商和 ISBN,例如:“Data Science on the Google Cloud Platform by Valliappa Lakshmanan (O’Reilly). Copyright 2018 Google Inc.,978-1-491-97456-8”。
如果你认为在使用示例代码时超出了合理范围或上述许可范围,请随时与我们联系:
permissions@oreilly.com。
联系我们
任何有关本书的意见或疑问,请按照以下地址联系出版社。
美国:
O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472
中国:
北京市西城区西直门南大街 2 号成铭大厦 C 座 807 室(100035) 奥莱利技术咨询(北京)有限公司
我们为本书提供了专门的网页,用于发布内容勘误、范例和其他相关信息。你可以 通过这里访问 http://bit.ly/datasci_GCP。
有关本书的任何评论或技术问题,请发送电子邮件至 bookquestions@oreilly.com。
了解与本书相关的更多信息、课程、会议和新闻,请访问我们的网站http://www. oreilly.com。
我们的 Facebook:http://facebook.com/oreilly。
我们的 Twitter:http://twitter.com/oreillymedia。
我们的 YouTube: http://www.youtube.com/oreillymedia。
致谢
大约一年前,我在 Google 工作时,我曾经简单地使用公有云作为租赁基础设施的一 种方式,配置自己的虚拟机,并在虚拟机上安装我要用的软件,然后跟平时的工作 流程一样运行我的数据处理任务。幸好,我意识到Google的大数据技术栈与众不同, 所以我开始学习如何充分利用 Google 云计算平台提供的数据和机器学习工具。
对我来说,最好的学习方法是编写代码,我也的确在这么做。在一次 Python小组聚 会上,大家让我讲一讲 Google 云计算平台,当时我用自己的代码做了展示和介绍。 后来的事实证明,在数据科学领域,在对比不同解决方法时,对听众来说,使用代码来展示如何构建端到端系统是颇具教育意义的。后来,我就把那次演讲的主要内 容写成本书的出版计划,并发给了 O’Reilly Media。
当然,本书的内容会比 60 分钟的代码演示深入许多。想象这样的场景,有一天在你 上班时收到了一封来自公司新员工发来的电子邮件,他在你们公司工作的时间还不 到 6 个月,但不知何故,他决定将你负责构建的一套复杂的系统平台写成一本书, 并寻求你的帮助。他和你既不在同一个团队,帮助他也不属于你的工作职责,你们
甚至不在同一个办公室工作。你会如何回应?你愿意吗?
Google之所以能成为理想的工作场所,都是因为这里的同事。这也是 Google公司 文化的一个证明,这里的许多人,无论是工程师、技术主管、产品经理、解决方案
架构师、数据科学家、法律顾问,还是总监,他们都可以跨越不同团队,愉快地将自己的专业知识分享给他们从未见过的人(实际上我也从未见过其中很多人)。这本书也因为他们的贡献而变得更好,让本书受益无穷,这些人包括(按字母顺序排 列)William Brockman、Mike Dahlin、Tony Diloreto、Bob Evans、Roland Hess、 Brett Hesterberg、Dennis Huo、Chad Jennings、Puneith Kaul、Dinesh Kulkarni、 Manish Kurse、Reuven Lax、Jonathan Liu、James Malone、Dave Oleson、Mosha Pasumansky、Kevin Peterson、Olivia Puerta、Reza Rokni、Karn Seth、Sergei Sokolenko 及 Amy Unruh。同时,我还要特别感谢 Mike Dahlin、Manish Kurse和 Olivia Puerta 对本书每章内容的精心校对。在本书预览时,我收到了来自 Anthonios Partheniou和 David Schwantner的错误报告,这些报告很有价值。不用多说,任何 遗留的错误都由我负责。
在写作本书时,我曾一度陷入困境。有时候,遇到的是技术问题,对此我要感谢 (按字母顺序排列)Ahmet Altay、Eli Bixby、Ben Chambers、Slava Chernyak、 Marian Dvorsky、Robbie Haertel、Felipe Hoffa、Amir Hormati、Qi-ming (Bradley) Jiang、Kenneth Knowles、Nikhil Kothari 和 Chris Meyers 为我指引了前进方向。而 在有些时候,我需要搞清楚公司的政策或需要与正确的团队建立联系,获取所需的文档或统计数据。对此,我感谢那些在关键时刻为我提供帮助的同事,如果没有 他们,本书会逊色很多(也是按字母顺序排列):Louise Byrne、Apurva Desai、 Rochana Golani、Fausto Ibarra、Jason Martin、Neal Mueller、Philippe Poutonnet、 Brad Svee、Jordan Tigani、William Vampenebe和Miles Ward。谢谢大家的帮助和鼓励。
同时,我还要感谢 O’Reilly 团队的 Marie Beaugureau、Kristen Brown、Ben Lorica、 Tim McGovern、Rachel Roumeliotis 和 Heather Scherer 对我的信任,从而让本书从 草稿到出版没有遇到问题。
最后,也是最重要的,我要感谢 Abirami、Sidharth和 Sarada的理解和耐心,当我 专注于写作和编码时,他们亦是如此。是你们,让这一切变得有价值。