本書向科學(xué)家、工程師和學(xué)生介紹云計算,內(nèi)容涵蓋云計算的支撐技術(shù)、解決云技術(shù)問題的新方法,以及將云服務(wù)集成到科學(xué)工作中所需要的概念。具體包括:管理云中的數(shù)據(jù),以及如何對這些服務(wù)進(jìn)行編程;在云計算中,從部署單一虛擬機(jī)或容器到支持基本的交互式科學(xué)實驗,從而收集機(jī)器集群的數(shù)據(jù)以進(jìn)行分析;將云作為自動化分析程序、機(jī)器學(xué)習(xí)和分析流數(shù)據(jù)的平臺;用開源軟件構(gòu)建自己的云;云安全。
文明的進(jìn)步,是不斷增加我們能夠進(jìn)行的重要操作的數(shù)量,而不需要考慮如何進(jìn)行這些操作。
—Alfred North Whitehead,《數(shù)學(xué)簡介》
本書討論云計算以及如何讓讀者—也就是你—把它應(yīng)用在科學(xué)和工程領(lǐng)域。這是一本實用指南,涵蓋了很多動手實踐的案例,這些案例都可以在線獲得,以幫助讀者了解怎樣使用云計算解決技術(shù)計算方面的特定問題,我們還就日常工作中如何使用云計算提出了可行的建議。
云計算作為技術(shù)術(shù)語最早出現(xiàn)在1996年。發(fā)展至今,這一詞匯在機(jī)場的廣告牌上已隨處可見。你可能會困惑于它是一項技術(shù)、一種趨勢還是舊概念的重新包裝,或者僅僅是一個市場宣傳口號。其實它是所有這些的集合而且還不限于此。最重要的是,云計算是一種我們以往多有忽視的處理事務(wù)方式上的重大轉(zhuǎn)變,不論是在科學(xué)方面還是在日常生活的其他方面。就如提姆·布瑞(Tim Bray)在2015年所寫:“計算正轉(zhuǎn)向一個效用模型。你可以在一個公有云里做各種在自己的計算機(jī)房很難完成或者很昂貴的事。公有云可以提供比你自己建造的環(huán)境更加優(yōu)越的在線時間、安全性保障和有效的分配!盵77]
功能強(qiáng)大、隨時在線、可訪問的云設(shè)施的出現(xiàn),已經(jīng)轉(zhuǎn)變了我們作為消費(fèi)者和信息技術(shù)互動的方式,我們可以在Netflix上持續(xù)流暢地觀看視頻(托管在亞馬遜云平臺上),通過谷歌搜尋網(wǎng)站內(nèi)容(使用谷歌云平臺),通過臉書更新朋友圈動態(tài),通過Alexa購買我們的日用品。云技術(shù)讓許多公司得以將其信息技術(shù)外包到云供應(yīng)商,從而削減了成本,提高了速率。大量以前的手工工作通過運(yùn)行在云設(shè)施上的軟件得以自動化,正如1960年McCarthy所設(shè)想的以及20世紀(jì)90年代網(wǎng)格所探索的那樣,現(xiàn)在則通過像亞馬遜、谷歌和微軟這樣的云供應(yīng)商得以大規(guī)模實現(xiàn)。
那么云計算在科學(xué)和工程方面的應(yīng)用是怎樣的呢?許多科學(xué)家和工程師在工作中使用像Dropbox、GitHub、Google Docs、Skype甚至Twitter這樣的云服務(wù)。但是他們還遠(yuǎn)遠(yuǎn)沒有享受到云計算的全面福利。有一些技術(shù)應(yīng)用運(yùn)行在云計算機(jī)上,但是很少有研究人員將其他部分外包到云平臺上。這是一種機(jī)會的浪費(fèi)。畢竟,科學(xué)和工程雖然是令人著迷且開發(fā)心智的專業(yè),但是也包含許多平凡的很花費(fèi)時間的活動。為什么不通過自動化和外包來加速科學(xué)探索(并享有更多樂趣)呢?我們相信對這個問題的答案是肯定的,這就是我們?yōu)槭裁磳戇@本書。
在接下來的章節(jié)里,我們調(diào)研了支撐云的新技術(shù),云所提供的解決技術(shù)問題的新方法,以及在研究方面有效應(yīng)用云的新思考方式。我們不奢望能夠提供一本全面的云計算指導(dǎo),因為主要的云供應(yīng)商運(yùn)行著成百上千的服務(wù),當(dāng)然有許多在科學(xué)和工程方面可以有效應(yīng)用的服務(wù)沒有涵蓋在本書中。但我們確實描述了精華的部分,并給出了把你的工作整合到云服務(wù)中的必要概念。
下面是一些大家常問的問題,我們也將在書中盡力提供答案:我應(yīng)該買一個集群還是使用云?如果使用商務(wù)云,我的基金會為此付費(fèi)嗎?我可以把數(shù)據(jù)導(dǎo)到云里面嗎?那兒安全嗎?我可以和我的同事分享嗎?我怎么在云里計算?云計算可以大規(guī);瘑?如果我想計算大量數(shù)據(jù)會怎樣?我應(yīng)該在工作中使用云平臺服務(wù)嗎? 哪些是對科學(xué)和工程有用的?我怎么建立自己的云服務(wù)?我可以使它們按需規(guī);越鉀Q真正的大問題嗎?在科學(xué)和工程方面使用云有哪些成功的例子?我怎么建立自己的云?等等。
沒有洞察一切的水晶球,我們不能提供這些問題的確切答案。但是我們至少可以提供一些信息和觀點,以幫助你做決定。
一切都在流動,沒有什么是靜止的。就如2500年前Heraclitus所寫的,軟件行業(yè)尤其是這樣。本書中一些技術(shù)細(xì)節(jié)的有效性會比我們所想的更加短暫。但是不要沮喪。你可以幫助我們和你的同仁,請在Cloud4SciEng.org中告訴我們。我們會更新網(wǎng)站,并準(zhǔn)備本書的第2版。
---作者簡介---
伊恩•福斯特(Ian Foster) 知名計算機(jī)科學(xué)家,芝加哥大學(xué)教授,阿貢國家實驗室杰出研究員。他是網(wǎng)格計算理論的創(chuàng)始人和積極倡導(dǎo)者,被尊稱為“網(wǎng)格計算之父”。
丹尼斯·B. 甘農(nóng)(Dennis B. Gannon) 印第安納大學(xué)計算機(jī)科學(xué)系榮譽(yù)退休教授。曾任微軟云研究戰(zhàn)略總監(jiān),向全球的研究和教育機(jī)構(gòu)提供Azure云計算資源。
---譯者簡介【已更新】---
趙勇 清數(shù)科技及融數(shù)鏈創(chuàng)始人,電子科技大學(xué)副教授,曾任職于美國微軟搜索與廣告部,獲微軟杰出員工獎。博士期間師從Ian Foster教授。
黃毅 美國SkyGlue公司總裁兼CTO,圣何塞大學(xué)教授兼大數(shù)據(jù)實驗室主任。曾任職于微軟,擔(dān)任Azure云計算軟件開發(fā)工程師。博士期間師從Dennis Gannon教授。
出版者的話
譯者序
前言
致謝
第1章 在云的宇宙中定位 1
1.1 云:計算機(jī)、助理和平臺 1
1.2 云的概況 2
1.3 本書導(dǎo)讀 5
1.4 獲取云服務(wù)的方式:網(wǎng)站、應(yīng)用編程接口和軟件開發(fā)工具包 6
1.4.1 Web界面、應(yīng)用編程接口、軟件開發(fā)工具包和命令行界面 6
1.4.2 本地應(yīng)用和云應(yīng)用 8
1.5 本書使用的工具 8
1.5.1 Python 8
1.5.2 Jupyter:基于Web的交互式計算工具 9
1.5.3 版本控制系統(tǒng)GitHub 10
1.5.4 Globus 10
1.6 小結(jié) 10
1.7 資源 11
第一部分 管理云中的數(shù)據(jù)
第2章 存儲即服務(wù) 15
2.1 三個啟發(fā)式的例子 15
2.2 存儲模型 16
2.2.1 文件系統(tǒng) 16
2.2.2 對象存儲 17
2.2.3 關(guān)系型數(shù)據(jù)庫 17
2.2.4 NoSQL數(shù)據(jù)庫 18
2.2.5 圖數(shù)據(jù)庫 19
2.2.6 數(shù)據(jù)倉庫 20
2.3 云存儲全景 20
2.3.1 文件系統(tǒng) 20
2.3.2 對象存儲 21
2.3.3 NoSQL服務(wù) 21
2.3.4 關(guān)系型數(shù)據(jù)庫 22
2.3.5 基于數(shù)據(jù)倉庫的數(shù)據(jù)分析 22
2.3.6 圖數(shù)據(jù)庫及其他服務(wù) 23
2.3.7 OpenStack存儲服務(wù)和Jetstream云服務(wù) 23
2.4 小結(jié) 24
2.5 資源 24
第3章 使用云存儲服務(wù) 25
3.1 兩種訪問方式:門戶和API 25
3.2 使用Amazon云存儲服務(wù) 26
3.3 使用Microsoft Azure云存儲服務(wù) 28
3.4 使用Google云存儲服務(wù) 31
3.4.1 Google Bigtable 32
3.4.2 Google Cloud Datastore 33
3.5 使用OpenStack云存儲服務(wù) 34
3.6 用Globus傳輸和共享數(shù)據(jù) 35
3.6.1 用Globus傳輸數(shù)據(jù) 36
3.6.2 用Globus共享數(shù)據(jù) 38
3.7 小結(jié) 38
3.8 資源 39
第二部分 云中的計算
第4章 計算即服務(wù) 43
4.1 虛擬機(jī)和容器 43
4.2 先進(jìn)的計算服務(wù) 45
4.3 無服務(wù)器計算 46
4.4 公有云計算的優(yōu)缺點 46
4.5 小結(jié) 47
4.6 資源 48
第5章 虛擬機(jī)的使用和管理 49
5.1 歷史根源 49
5.2 亞馬遜的彈性計算云 50
5.2.1 創(chuàng)建虛擬機(jī)實例 50
5.2.2 連接存儲 52
5.3 Azure虛擬機(jī) 54
5.4 谷歌云虛擬機(jī)服務(wù) 55
5.5 Jetstream虛擬機(jī)服務(wù) 55
5.6 小結(jié) 56
5.7 資源 57
第6章 使用和管理容器 58
6.1 容器的基礎(chǔ)知識 58
6.2 Docker和Hub 59
6.3 容器用于科學(xué) 61
6.4 構(gòu)建你自己的容器 62
6.5 小結(jié) 63
6.6 資源 63
第7章 彈性部署 64
7.1 云中并行計算的范式 64
7.2 SPMD和HPC風(fēng)格的并行 65
7.2.1 云中的消息傳遞接口 65
7.2.2 云中的GPU 65
7.2.3 在Amazon云上部署HPC集群 67
7.2.4 在Azure上部署HPC集群 70
7.2.5 集群的進(jìn)一步擴(kuò)展 71
7.3 多任務(wù)并行計算 72
7.4 MapReduce和批量同步并行計算 72
7.5 圖數(shù)據(jù)流的執(zhí)行和Spark 73
7.6 代理和微服務(wù) 74
7.6.1 微服務(wù)和容器資源管理器 75
7.6.2 在集群中管理身份 75
7.6.3 簡單的例子 75
7.6.4 Amazon EC2容器服務(wù) 76
7.6.5 Google的Kubernetes 81
7.6.6 Mesos和Mesosphere 84
7.7 HTCondor 86
7.8 小結(jié) 86
7.9 資源 87
第三部分 云平臺
第8章 云中的數(shù)據(jù)分析 91
8.1 Hadoop和YARN 91
8.2 Spark 93
8.2.1 一個簡單的Spark程序 93
8.2.2 一個更有趣的Spark程序:k均值聚類 94
8.2.3 容器中的Spark 95
8.2.4 Spark中的SQL 96
8.3 Amazon Elastic MapReduce 97
8.4 Azure HDInsight和數(shù)據(jù)湖 99
8.4.1 Azure Data Lake存儲 100
8.4.2 數(shù)據(jù)湖分析 101
8.5 Amazon Athena分析 102
8.6 Google云數(shù)據(jù)實驗室 102
8.6.1 華盛頓和印第安納州的風(fēng)疹 103
8.6.2 尋找氣象臺的異常 104
8.7 小結(jié) 107
8.8 資源 107
第9章 將數(shù)據(jù)以流式傳輸?shù)皆贫? 109
9.1 科學(xué)流案例 109
9.1.1 廣域地球物理傳感器網(wǎng)絡(luò) 110
9.1.2 城市信息學(xué) 110
9.1.3 大規(guī)?茖W(xué)數(shù)據(jù)流 111
9.2 流系統(tǒng)的基本設(shè)計挑戰(zhàn) 112
9.3 Amazon Kinesis和Firehose 112
9.3.1 Kinesis Streams架構(gòu) 113
9.3.2 Kinesis和Amazon SQS 114
9.4 Kinesis、Spark和物體陣列 115
9.5 用Azure進(jìn)行流數(shù)據(jù)處理 118
9.6 Kafka、Storm和Heron Streams 121
9.7 Google Dataflow和Apache Beam 124
9.8 Apache Flink 126
9.9 小結(jié) 127
9.10 資源 128
第10章 基于云的機(jī)器學(xué)習(xí) 129
10.1 Spark機(jī)器學(xué)習(xí)庫 129
10.1.1 邏輯回歸 130
10.1.2 芝加哥餐廳案例 130
10.2 Azure機(jī)器學(xué)習(xí)空間 133
10.3 Amazon機(jī)器學(xué)習(xí)平臺 136
10.4 深度學(xué)習(xí)淺析 138
10.4.1 深度網(wǎng)絡(luò) 139
10.4.2 卷積神經(jīng)網(wǎng)絡(luò) 140
10.4.3 遞歸神經(jīng)網(wǎng)絡(luò) 141
10.5 Amazon MXNet虛擬機(jī)鏡像 143
10.6 Google TensorFlow 146
10.7 微軟認(rèn)知工具包 147
10.8 小結(jié) 149
10.9 資源 150
第11章 Globus研究數(shù)據(jù)管理平臺 152
11.1 分布式數(shù)據(jù)的挑戰(zhàn)和機(jī)遇 152
11.2 Globus平臺 153
11.2.1 Globus傳輸和共享 153
11.2.2 rule_data結(jié)構(gòu) 155
11.3 身份和證書管理 155
11.3.1 Globus Auth授權(quán)服務(wù) 156
11.3.2 一個典型的Globus Auth工作流 157
11.3.