新書推薦:
《
小白学编织
》
售價:NT$
299.0
《
西班牙内战:秩序崩溃与激荡的世界格局:1936-1939
》
售價:NT$
990.0
《
基于鲲鹏的分布式图分析算法实战
》
售價:NT$
495.0
《
夺回大脑 如何靠自己走出强迫
》
售價:NT$
299.0
《
图解机械工程入门
》
售價:NT$
440.0
《
中文版SOLIDWORKS 2024机械设计从入门到精通(实战案例版)
》
售價:NT$
450.0
《
旷野人生:吉姆·罗杰斯的全球投资探险
》
售價:NT$
345.0
《
希腊人(伊恩·莫里斯文明史系列)
》
售價:NT$
845.0
編輯推薦:
本书以Hadoop和Spark框架为线索,重点介绍了Hadoop技术、Spark技术、大数据存储、大数据访问、大数据采集、大数据管理、大数据分析、大数据开发、大数据环境自动化部署等内容,使读者对大数据技术有个比较全面的了解。
內容簡介:
目前国内大数据市场继续保持高速的发展态势,作者在与地方政府、证券金融公司的项目合作中发现,他们对大数据技术很感兴趣,并希望从大数据技术、采集、存储、访问、安全、分析与开发等方面得到指导和帮助。因此编写了这本大数据技术的入门书。 本书共12章,以Hadoop和Spark框架为线索,比较全面地介绍了Hadoop技术、Spark技术、大数据存储、大数据访问、大数据采集、大数据管理、大数据分析、大数据开发、大数据环境自动化部署(Docker和K8s)等内容。 本书适合大数据技术初学者,政府、金融机构的大数据应用决策和技术人员、IT经理、CTO、CIO等快速学习大数据技术。本书也可以作为高等院校和培训学校相关专业的培训教材。
關於作者:
杨正洪,毕业于美国State University of New York at Stony Brook,在美国硅谷从事AI和大数据相关研发工作 10 多年,华中科技大学和中国地质大学客座教授,湖北省 2013 年海外引进人才,拥有多项国家专利。参与了大数据和人工智能的国家标准的制定,在 2016 年参与了公安部主导的信息安全技术:大数据平台安全管理产品安全技术要求的国家标准制定。作者还是中关村海外智库专家顾问和住建部中规院专家顾问,担任了在美上市公司 CTO、北京某国企 CIO 和上海某国企高级副总裁等职。多年从事人工智能与大数据技术的工作,出版了《智慧城市》等多本书籍。
目錄 :
第1章 大数据时代 1
1.1 什么是大数据 1
1.1.1 四大特征 2
1.1.2 数据监管(Data Governance) 3
1.1.3 数据质量 4
1.1.4 大数据分析 4
1.1.5 大数据平台架构 5
1.2 大数据与云计算的关系 6
1.2.1 云计算产品概述 6
1.2.2 虚拟服务器 7
1.2.3 云存储 11
1.3 Hadoop和云平台的应用实例 12
1.3.1 云平台层面配置 12
1.3.2 大数据平台层面配置 14
1.4 数据湖(Data Lake) 16
1.5 企业如何走向大数据 17
1.5.1 业务价值维度 18
1.5.2 数据维度 18
1.5.3 现有IT环境和成本维度 19
1.5.4 数据治理维度 20
第2章 大数据软件框架 21
2.1 Hadoop框架 21
2.1.1 HDFS(分布式文件系统) 22
2.1.2 MapReduce(分布式计算框架) 23
2.1.3 YARN(集群资源管理器) 28
2.2 Spark(内存计算框架) 30
2.2.1 Spark SQL 31
2.2.2 Spark Streaming 32
2.3 实时流处理框架 34
2.4 云端消息队列 34
2.5 框架的选择 35
2.6 Hadoop发行版 36
2.7 Mac上安装Hadoop 37
2.7.1 在Mac上安装Hadoop 37
2.7.2 安装MySQL和Hive 41
2.8 Linux上安装Hadoop 44
2.8.1 配置Java环境 45
2.8.2 安装ntp和Python 47
2.8.3 安装和配置openssl 47
2.8.4 配置SSH无密码访问 47
2.8.5 安装Ambari和HDP 48
2.8.6 启动和停止服务 52
2.9 AWS云平台上安装Hadoop 54
第3章 大数据集群 57
3.1 集群实例分析 57
3.2 YARN 67
3.2.1 架构组成 68
3.2.2 YARN执行流程 71
3.3 资源的调度器 75
3.3.1 Capacity Scheduler 76
3.3.2 Fair Scheduler 78
3.3.3 资源调度实例分析 81
3.3.4 内存和CPU资源调度 84
3.4 深入研究Resource Manager 88
3.5 集群配置文件总览 91
3.5.1 yarn-site.xml 91
3.5.2 mapred-site.xml 94
3.6 自动伸缩(Auto Scaling)集群 97
3.7 迁移Hadoop集群 97
3.8 增加Instance 99
第4章 大数据存储:文件系统和云存储 100
4.1 HDFS shell命令 100
4.2 配置HDFS 102
4.2.1 配置文件 102
4.2.2 多节点配置 103
4.3 HDFS API编程 104
4.3.1 读取HDFS文件内容 105
4.3.2 写HDFS文件内容 108
4.3.3 WebHDFS 108
4.4 HDFS API总结 110
4.4.1 Configuration类 110
4.4.2 FileSystem抽象类 111
4.4.3 Path类 111
4.4.4 FSDataInputStream类 111
4.4.5 FSDataOutputStream类 112
4.4.6 IOUtils类 112
4.4.7 FileStatus类 112
4.4.8 FsShell类 112
4.4.9 ChecksumFileSystem抽象类 112
4.4.10 其他的HDFS API实例 113
4.4.11 综合实例 115
4.5 HDFS文件格式 118
4.5.1 SequenceFile 118
4.5.2 TextFile(文本格式) 118
4.5.3 RCFile 118
4.5.4 Avro 120
4.6 云存储S3 120
4.6.1 S3基本概念 121
4.6.2 S3管理控制台 122
4.6.3 S3 CLI 126
4.6.4 S3 SDK 127
4.6.5 分区 129
4.6.6 与EBS的比较 129
4.6.7 与Glacier的比较 129
第5章 大数据存储:数据库 130
5.1 NoSQL 130
5.2 HBase概述 131
5.2.1 HBase表结构 132
5.2.2 HBase系统架构 135
5.2.3 启动并操作HBase数据库 136
5.2.4 HBase Shell工具 139
5.3 HBase编程 142
5.3.1 增删改查API 142
5.3.2 过滤器 146
5.3.3 计数器 149
5.3.4 原子操作 149
5.3.5 管理API 149
5.4 其他NoSQL数据库 151
5.4.1 Cassandra 151
5.4.2 Impala 151
5.4.3 DynamoDB 151
5.4.4 Redshift 151
5.5 云数据库 152
5.5.1 什么是RDS 152
5.5.2 创建云数据库 152
5.5.3 查看云数据库信息 156
5.5.4 何时使用云端数据库 159
第6章 大数据访问:SQL引擎层 160
6.1 Phoenix 161
6.1.1 安装和配置Phoenix 161
6.1.2 在Eclipse上开发Phoenix程序 165
6.1.3 Phoenix SQL工具 169
6.1.4 Phoenix SQL语法 170
6.2 Hive 171
6.2.1 Hive架构 172
6.2.2 安装Hive 173
6.2.3 Hive CLI 175
6.2.4 Hive数据类型 175
6.2.5 Hive文件格式 177
6.2.6 Hive表定义 179
6.2.7 Hive加载数据 183
6.2.8 Hive查询数据 184
6.2.9 Hive UDF 186
6.2.10 Hive视图 188
6.2.11 HiveServer2 189
6.2.12 hive-site.xml需要的配置 195
6.2.13 HBase集成 200
6.2.14 XML和JSON数据 200
6.2.15 使用TEZ 201
6.2.16 Hive MetaStore 203
6.2.17 综合示例 204
6.3 Pig 206
6.3.1 Pig语法 207
6.3.2 Pig和Hive的使用场景之比较 210
6.4 ElasticSearch(全文搜索引擎) 211
6.4.1 全文索引的基础知识 211
6.4.2 安装和配置ElasticSearch 213
6.4.3 ElasticSearch API 215
6.5 Presto 217
第7章 大数据采集和导入 218
7.1 Flume 220
7.1.1 Flume架构 220
7.1.2 Flume事件 221
7.1.3 Flume源 221
7.1.4 Flume拦截器(Interceptor) 222
7.1.5 Flume通道选择器(Channel Selector) 223
7.1.6 Flume通道 224
7.1.7 Flume接收器 225
7.1.8 负载均衡和单点失败 226
7.1.9 Flume监控管理 227
7.1.10 Flume实例 227
7.2 Kafka 229
7.2.1 Kafka架构 229
7.2.2 Kafka与JMS的异同 230
7.2.3 Kafka性能考虑 231
7.2.4 消息传送机制 231
7.2.5 Kafka和Flume的比较 232
7.3 Sqoop 232
7.3.1 从数据库导入HDFS 233
7.3.2 增量导入 235
7.3.3 将数据从Oracle导入Hive 235
7.3.4 将数据从Oracle导入HBase 235
7.3.5 导入所有表 236
7.3.6 从HDFS导出数据 236
7.3.7 数据验证 237
7.3.8 其他Sqoop功能 237
7.4 Storm 238
7.4.1 Storm基本概念 238
7.4.2 Spout 240
7.4.3 Bolt 241
7.4.4 拓扑结构 243
7.4.5 Storm总结 244
7.5 Amazon Kinesis 245
7.6 其他工具 246
7.6.1 Embulk 246
7.6.2 Fluentd 247
第8章 大数据安全管控 250
8.1 数据主权和合规性 250
8.2 云端安全 251
8.2.1 身份验证和访问权限 251
8.2.2 角色 253
8.2.3 虚拟网络 254
8.2.4 安全组 255
8.3 云端监控 256
8.3.1 跟踪和审计 256
8.3.2 监控 257
8.3.3 基于Datadog的监控 259
8.4 云端备份和恢复 262
8.5 大数据安全 262
8.5.1 Kerberos 263
8.5.2 Apache Ranger 263
8.5.3 应用端安全 267
第9章 大数据快速处理平台:Spark 268
9.1 Spark框架 268
9.1.1 安装和配置Spark 269
9.1.2 Scala 270
9.2 Spark Shell 271
9.3 Spark编程 273
9.3.1 编写Spark API程序 274
9.3.2 使用sbt编译并打成JAR包 274
9.3.3 运行程序 275
9.4 RDD 276
9.4.1 RDD算子和RDD依赖关系 277
9.4.2 RDD转换操作 278
9.4.3 RDD行动(Action)操作 279
9.4.4 RDD控制操作 280
9.4.5 RDD实例 280
9.5 Spark SQL 282
9.5.1 DataFrame 283
9.5.2 RDD转化为DataFrame 287
9.5.3 JDBC数据源 289
9.5.4 Hive数据源 289
9.6 Spark Streaming 290
9.6.1 DStream编程模型 291
9.6.2 DStream操作 293
9.6.3 性能考虑 295
9.6.4 容错能力 296
第10章 大数据分析 297
10.1 数据科学 298
10.1.1 探索性数据分析 299
10.1.2 描述统计 300
10.1.3 数据可视化 300
10.2 预测分析 303
10.2.1 预测分析实例 303
10.2.2 回归(Regression)分析预测法 304
10.3 机器学习 305
10.3.1 机器学习的定义 306
10.3.2 机器学习分类 307
10.3.3 机器学习算法 308
10.3.4 机器学习框架 310
10.4 算法 312
10.4.1 分类算法 313
10.4.2 预测算法 313
10.4.3 聚类算法 314
10.4.4 关联分析 315
10.4.5 决策树 317
10.4.6 异常值分析算法 320
10.4.7 协同过滤(推荐引擎)算法 320
10.5 大数据分析总体架构 321
10.5.1 大数据平台和大数据分析的关系 321
10.5.2 大数据平台的核心功能 322
10.5.3 DMP 323
10.5.4 CDP 324
10.6 微服务 324
10.6.1 启动和停止Consul 326
10.6.2 服务注册 327
10.6.3 查询服务 329
10.6.4 服务状态检查 329
第11章 大数据环境自动化部署: Docker和Kubernetes 331
11.1 什么是Docker? 332
11.1.1 虚拟机 332
11.1.2 Linux容器 333
11.1.3 Docker的由来 333
11.1.4 Docker的用途 333
11.1.5 Docker和虚拟机的区别 334
11.2 镜像文件 335
11.3 Docker安装 335
11.4 Dockerfile文件 336
11.4.1 什么是Dockerfile 336
11.4.2 使用Dockerfile 338
11.4.3 发布镜像文件 338
11.4.4 仓库(Repository) 339
11.5 Service(服务) 340
11.5.1 yml文件 340
11.5.2 部署服务 341
11.5.3 伸缩(Scale)应用 341
11.6 Swarm 341
11.6.1 什么是Swarm集群 341
11.6.2 设置Swarm 342
11.6.3 在Swarm集群上部署应用 343
11.7 Stack 344
11.8 Kubernetes 346
11.8.1 集群 347
11.8.2 Pod 347
11.8.3 Node(节点) 347
11.8.4 Kubernetes Master 348
11.8.5 Replication Controller 348
11.8.6 Service 348
第12章 大数据开发管理 349
12.1 CICD(持续集成持续发布) 349
12.1.1 CI 349
12.1.2 CD 350
12.2 代码管理工具GitHub 351
12.2.1 仓库(Repository) 351
12.2.2 分支(Branch) 352
12.2.3 提交(Commit)和请求合并(Pull request) 352
12.2.4 开源代码的操作 354
12.2.5 GitHub使用实例 355
12.3 项目管理JIRA 362
12.3.1 敏捷(Agile)开发和Scrum模式 362
12.3.2 Project(项目) 364
12.3.3 Issue(问题) 365
12.3.4 Sprint(冲刺) 367
12.3.5 Backlog(待办事项列表) 368
12.3.6 Priority(事项优先级) 368
12.3.7 状态和流程 368
12.3.8 JIRA常用报表 369
12.3.9 JIRA的主要功能总结 372
12.4 项目构建工具Maven 373
12.4.1 pom.xml 373
12.4.2 安装Maven 374
12.4.3 Maven仓库 374
12.4.4 Maven Java项目结构 375
12.4.5 命令列表 376
12.5 大数据软件测试 379
12.5.1 JUnit 379
12.5.2 Allure 380
附录1 数据量的单位级别 382
附录2 AWS EC2创建步骤 383
附录3 分布式监控系统Ganglia 385
附录4 auth-ssh脚本 386
內容試閱 :
随着本书第1版的出版之后,Hadoop生态圈和大数据领域发生了很大的变化。在本书中,我们包含了最新的信息:
(1)公有云和大数据的关系:我们曾经认为,云软件本身需要消耗资源,增加管理的复杂度,而大数据需要大量的机器,所以,大数据的搭建可以直接在物理机上进行,而不是基于云。在最近3年的工作中,我深刻认识到,大型公有云的弹性分配的能力,是大数据所需要的。我们往往无法估计所需要的资源数量,而大型公有云的弹性能力给了我们这个自动扩展的能力。这无论对创业企业还是大型企业,都是很有必要的。我们有一个企业客户,从3年前每月支付300美元来使用我们的大数据平台到现在每月支付100万美元来使用,这个客户的数据量每年迅猛增长,即使是神仙,也估计不出来资源的这种需求趋势。大型公有云就解决了这个问题。所以,在本书中,我们以AWS为例让读者深刻理解如何在大型公有云上做大数据。对于大数据的开发人员而言,你就不仅仅是一位开发人员那么简单了,而是一个DevOps人员,也就是即:你既必须要懂公有云,又要在云端运维你自己搭建和开发的大数据平台与和大数据分析产品。
(2)YARN 2.92。要想在生产环境中用好Hadoop,必须构建好Hadoop集群。要想构建好Hadoop集群,必须完全弄懂YARN。所以,YARN非常重要。本书基于实际案例来深入讲解YARN的原理、部署和配置,并讲解如何实现多租户模式。越来越多的企业基于云构建大数据系统,而这个大数据系统又要给企业内的多个部门或多个企业客户来使用,怎么使用YARN在一个大的Hadoop集群上实现多租户是一个很现实很迫切的问题。
(3)Hive 3.0。目前市场上比较流行的Hive书籍都是基于Hive老版本,查询语言都是HiveQL。从3.0开始,Hive向其他查询工具靠拢,全面支持ANSI SQL的查询;Hive MetaStore越来越重要,围绕MetaStore出来一些新工具新产品,比如:Ranger,它用于解决Hadoop生态圈中数据安全性的问题;另外还有,从Hive 2.0开始,就不再推荐使用MapReduce计算框架,从前花费大幅章节解释Hive如何把查询计划转换为Map和Reduce任务已经不再适用,从3.0开始,MapReduce框架需要被弃用(deprecated),被Spark或Tez计算框架所替代。
(4)大数据的开发管理体系。大数据开发往往基于开源软件,这就必须充分理解和使用GitHub、JIRA、CICD等开源生态圈中频繁使用的工具和思想。你每天打开Eclipse,按照需求文档编写代码的模式已经不适用于大数据开发了。在实际工作中,开发人员往往是从GitHub上获取源代码,添加自己的代码,推送到GitHub上。产品经理或者开发经理往往使用JIRA创建一个个的开发任务,分配各个任务给每个开发人员,每个开发人员在JIRA上发布开发的状态,询问问题(团队协作),完成整个开发的操作。在笔者所在我的开发团队中,尤其是新加入的同事,对这些工具比较陌生,这极大地影响了工作的效率和团队的协作。在本书新版时,笔者我特地加入这些内容,让大数据开发的管理变得容易一些,标准化一些。
(5)大数据安全管控。欧盟通过了《欧盟数据隐私指令》,我国已将大数据视作战略资源并上升为国家战略,大数据安全成为国家安全的新重点。在本书新版中,新增一章来讲解如何从技术上确保整个大数据安全可控。
在这一版中,我们删除了一些内容,比如:Spark中的GraphX图计算框架、Spark MLlib、环保行业和公安行业的大数据案例分析等。删除的原因是Spark的GraphX和MLlib在实际工作中使用不频繁,两个行业的大数据案例与大数据技术的相关性小,而更多在于行业需求的认知上。
本书内容组织
除了阐述大数据的定义和软件框架,除了新增的大数据集群和大数据安全管控的内容之外,同上一个版本类似,本书主要是按照大数据处理的几个步骤来组织内容:
(1)大数据存储:探究HDFS和HBase作为大数据存储方式的优劣,新加了云存储和云数据库作为大数据存储的选项;
(2)大数据访问:探究SQL引擎层中Hive、Phoenix、Spark SQL等组件的功能,并阐述了全文搜索的ElasticSearch,也探究了Spark的高速访问能力;
(3)大数据的采集:探究了Flume、Kafka、Sqoop等技术,也探究了如何使用Storm和Spark Streaming来对数据进行流式计算,来满足部分业务的实时和准实时计算需求。新加了Embulk、Fluentd、AWS Kinesis等内容;
(4)大数据管理:探究数据模型、安全控制、数据生命周期等数据管理内容;
(5)大数据分析:探究了如何利用分布式计算集群来对存储于其内的海量数据进行统计分析,重点探究了机器学习和算法。
作者与技术支持邮箱
本书作者杨正洪,毕业于美国State University of New York at Stony Brook,在美国硅谷从事AI和大数据相关研发工作 10 多年,华中科技大学和中国地质大学客座教授,湖北省 2013 年海外引进人才,拥有多项国家专利。参与了大数据和人工智能的国家标准的制定,在 2016 年参与了公安部主导的信息安全技术:大数据平台安全管理产品安全技术要求的国家标准制定。作者还是中关村海外智库专家顾问和住建部中规院专家顾问,担任了在美上市公司 CTO、北京某国企 CIO 和上海某国企高级副总裁等职。多年从事人工智能与大数据技术的工作,出版了《智慧城市》等多本书籍。由于我们水平有限,书中难免存在纰漏之处,敬请读者批评指正。杨正洪的邮件地址为yangzhenghong@yahoo.com。
杨正洪
2020年1月于San Jose