第1章 在云的宇宙中定位 1
1.1 云:计算机、助理和平台 1
1.2 云的概况 2
1.3 本书导读 5
1.4 获取云服务的方式:网站、应用编程接口和软件开发工具包 6
1.4.1 Web界面、应用编程接口、软件开发工具包和命令行界面 6
1.4.2 本地应用和云应用 8
1.5 本书使用的工具 8
1.5.1 Python 8
1.5.2 Jupyter:基于Web的交互式计算工具 9
1.5.3 版本控制系统GitHub 10
1.5.4 Globus 10
1.6 小结 10
1.7 资源 11
第一部分 管理云中的数据 15
第2章 存储即服务 15
2.1 三个启发式的例子 15
2.2 存储模型 16
2.2.1 文件系统 16
2.2.2 对象存储 17
2.2.3 关系型数据库 17
2.2.4 NoSQL数据库 18
2.2.5 图数据库 19
2.2.6 数据仓库 20
2.3 云存储全景 20
2.3.1 文件系统 20
2.3.2 对象存储 21
2.3.3 NoSQL服务 21
2.3.4 关系型数据库 22
2.3.5 基于数据仓库的数据分析 22
2.3.6 图数据库及其他服务 23
2.3.7 OpenStack存储服务和Jetstream云服务 23
2.4 小结 24
2.5 资源 24
第3章 使用云存储服务 25
3.1 两种访问方式:门户和API 25
3.2 使用Amazon云存储服务 26
3.3 使用MicrosoftAzure云存储服务 28
3.4 使用Google云存储服务 31
3.4.1 GoogleBigtab le 32
3.4.2 Google Cloud Datastore 33
3.5 使用OpenStack云存储服务 34
3.6 用Globus传输和共享数据 35
3.6.1 用Globus传输数据 36
3.6.2 用Globus共享数据 38
3.7 小结 38
3.8 资源 39
第二部分 云中的计算 43
第4章 计算即服务 43
4.1 虚拟机和容器 43
4.2 先进的计算服务 45
4.3 无服务器计算 46
4.4 公有云计算的优缺点 46
4.5 小结 47
4.6 资源 48
第5章 虚拟机的使用和管理 49
5.1 历史根源 49
5.2 亚马逊的弹性计算云 50
5.2.1 创建虚拟机实例 50
5.2.2 连接存储 52
5.3 Azure虚拟机 54
5.4 谷歌云虚拟机服务 55
5.5 Jetstream虚拟机服务 55
5.6 小结 56
5.7 资源 57
第6章 使用和管理容器 58
6.1 容器的基础知识 58
6.2 Docker和Hub 59
6.3 容器用于科学 61
6.4 构建你自己的容器 62
6.5 小结 63
6.6 资源 63
第7章 弹性部署 64
7.1 云中并行计算的范式 64
7.2 SPMD和HPC风格的并行 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 集群的进一步扩展 71
7.3 多任务并行计算 72
7.4 MapReduce和批量同步并行计算 72
7.5 图数据流的执行和Spark 73
7.6 代理和微服务 74
7.6.1 微服务和容器资源管理器 75
7.6.2 在集群中管理身份 75
7.6.3 简单的例子 75
7.6.4 Amazon EC2容器服务 76
7.6.5 Google的Kubernetes 81
7.6.6 Mesos和Mesosphere 84
7.7 HTCondor 86
7.8 小结 86
7.9 资源 87
第三部分 云平台 91
第8章 云中的数据分析 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 AmazonElasticMapReduce 97
8.4 Azure HDInsight和数据湖 99
8.4.1 AzureDataLake存储 100
8.4.2 数据湖分析 101
8.5 AmazonAthena分析 102
8.6 Google云数据实验室 102
8.6.1 华盛顿和印第安纳州的风疹 103
8.6.2 寻找气象台的异常 104
8.7 小结 107
8.8 资源 107
第9章 将数据以流式传输到云端 109
9.1 科学流案例 109
9.1.1 广域地球物理传感器网络 110
9.1.2 城市信息学 110
9.1.3 大规模科学数据流 111
9.2 流系统的基本设计挑战 112
9.3 Amazon Kinesis和Firehose 112
9.3.1 Kinesis Streams架构 113
9.3.2 Kinesis和Amazon SQS 114
9.4 Kinesis、Spark和物体阵列 115
9.5 用Azure进行流数据处理 118
9.6 Kafka、Storm和Heron Streams 121
9.7 Google Dataflow和Apache Beam 124
9.8 Apache Flink 126
9.9 小结 127
9.10 资源 128
第10章 基于云的机器学习 129
10.1 Spark机器学习库 129
10.1.1 逻辑回归 130
10.1.2 芝加哥餐厅案例 130
10.2 Azure机器学习空间 133
10.3 Amazon机器学习平台 136
10.4 深度学习浅析 138
10.4.1 深度网络 139
10.4.2 卷积神经网络 140
10.4.3 递归神经网络 141
10.5 Amazon MXNet虚拟机镜像 143
10.6 Google TensorFlow 146
10.7 微软认知工具包 147
10.8 小结 149
10.9 资源 150
第11章 Globus研究数据管理平台 152
11.1 分布式数据的挑战和机遇 152
11.2 Globus平台 153
11.2.1 Globus传输和共享 153
11.2.2 rule data结构 155
11.3 身份和证书管理 155
11.3.1 Globus Auth授权服务 156
11.3.2 一个典型的G1obusAuth工作流 157
11.3.3 Globus Auth身份 158
11.3.4 Globus账户 159
11.3.5 使用Globus Auth身份 159
11.3.6 资源服务器使用Globus Auth 160
11.3.7 其他Globus能力 161
11.4 创建一个远程访问服务 162
11.5 数据研究门户设计模式 163
11.5.1 Science DMZ和DTN的至关重要的作用 164
11.5.2 数据研究门户应用 164
11.5.3 用Globus实现设计模式 166
11.6 重新审视门户设计模式 168
11.7 画个闭环:从门户到Graph服务 169
11.8 小结 170
11.9 资源 171
第四部分 构建你自己的云 175
第12章 用Eucalyptus构建你自己的云 175
12.1 实现云基础设施抽象 175
12.2 部署计划 176
12.2.1 控制面板部署流程 176
12.2.2 网络 177
12.2.3 存储 177
12.2.4 计算服务器 178
12.2.5 身份管理 178
12.3 单集群Eucalyptus云 178
12.3.1 硬件配置 179
12.3.2 部署 179
12.3.3 软件依赖关系和配置 180
12.3.4 安装 181
12.3.5 头节点配置 182
12.3.6 工作节点配置 183
12.3.7 引导启动 183
12.3.8 镜像安装 186
12.3.9 用户证书 187
12.4 小结 187
12.5 资源 187
第13章 使用OpenStack搭建云 188
13.1 OpenStack核心服务 188
13.2 OpenStack环境中的高性能计算 188
13.3 对科学负载的考虑 189
13.3.1 网络密集输入或输出 189
13.3.2 紧耦合计算 190
13.3.3 分级存储和并行文件系统 190
13.4 部署OpenStack 191
13.5 部署示例 191
13.5.1 硬件组件 192
13.5.2 OpenStack组件 192
13.5.3 通过RDMA启用块存储 192
13.5.4 启用SR-IOV网络 193
13.6 小结 196
13.7 资源 196
第14章 构建你自己的SaaS 197
14.1 SaaS的意义 197
14.2 SaaS架构 198
14.3 SaaS和科学 200
14.4 Globus Genomics生物信息学系统 200
14.4.1 Globus Genomics架构和实现 201
14.4.2 Globus Genomics作为 SaaS 203
14.5 Globus研究数据管理服务 203
14.5.1 Globus服务架构 204
14.5.2 Globus服务运营 205
14.6 小结 205
14.7 资源 205
第五部分 安全及其他主题 209
第15章 安全和隐私 209
15.1 云计算中的安全 209
15.2 基于角色的访问控制 212
15.3 保障云中数据的安全 212
15.3.1 保障传输中的数据安全 213
15.3.2 控制谁能访问数据 213
15.3.3 加密数据 213
15.3.4 敏感数据的复杂性 214
15.4 保障虚拟机和容器安全 215
15.4.1 含毒的虚拟机或容器镜像 215
15.4.2 对运行虚拟机的非法访问 215
15.4.3 截获通信 216
15.4.4 基于虚拟机镜像的信息泄露 216
15.5 保障云软件服务的访问 217
15.6 小结 217
15.7 资源 217
第16章 历史,批评,未来 219
16.1 历史视角 219
16.2 批评 220
16.2.1 成本 221
16.2.2 锁定 221
16.2.3 教育 221
16.2.4 黑盒算法 222
16.2.5 硬件限制 222
16.3 未来 222
16.3.1 原生云应用程序 222
16.3.2 架构演变 223
16.3.3 边缘计算 224
16.4 资源 225
第17章 Jupyter笔记本 226
17.1 环境 226
17.2 笔记本 226
17.3 资源 228
第18章 后记:科学发现云 229