本书将为大家全面而深入地介绍Hadoop、Spark和NoSQL平台的构建,深入浅出地讲解Hadoop、Spark和NoSQL的基础知识、架构方案与实战技巧等。通过阅读本书,读者可以对大数据平台架构有一个明确、清晰的认识,掌握Hadoop、Spark、NoSQL平台的使用技巧,从而搭建一个安全可靠的大数据集群平台,来满足企业的实际需求。 本书共15章,可分为五大部分。第一部分(第1章)为大数据平台架构概述,讲述大数据平台的基本概念与实际应用;第二部分(第2章~第6章)主要讲解Hadoop的基本使用方法,以及Hadoop生态圈的其他组件;第三部分(第7章)主要介绍NoSQL;第四部分(第8章~第10章)主要介绍Spark生态圈与Spark实战案例;第五部分(第11章~第15章)讲解如何构建大数据平台,阐述大数据平台的几个核心模块,以及大数据平台的未来发展趋势。 本书可作为各类IT企业和研发机构的大数据工程师、架构师、软件设计师、程序员,以及相关专业在校学生的参考书。
数据库专家,数据分析专家,有丰富的IT领域、数学领域的知识经验。知名数据库网站ITPUB创始人,知名数据分析网站炼数成金创始人。ITPUB在其十几年历史中为中国IT业特别是数据库行业输送了大量人才,其中不乏今天在行业里叱咤风云的佼佼者,因此被誉为数据库业的黄埔军校。后来创建炼数成金,言传身教,亲自讲授大数据,数据库,数据分析,人工智能等方面的几十门课程,身也在华南著名学府中山大学任教多年,桃李满天下。引领无数弟子进入业界,朋友圈遍及业界重要人士,广受尊重。
第1章 大数据平台架构概述 1
1.1 大数据平台的产生与应用 1
1.1.1 大数据平台的产生 1
1.1.2 大数据平台的应用 2
1.2 大数据平台架构 4
1.3 大数据处理系统经典架构 7
1.3.1 什么是Lambda架构 7
1.3.2 Lambda架构 8
1.3.3 Kappa架构 10
1.3.4 适用场景 10
第2章 大数据与Hadoop 12
2.1 Hadoop简介 12
2.1.1 Hadoop起源 12
2.1.2 Hadoop特点 13
2.1.3 Hadoop版本 13
2.2 Hadoop生态系统 14
2.2.1 Hadoop生态系统概况 15
2.2.2 Hadoop生态系统组成详解 16
2.3 Hadoop应用案例 21
2.3.1 Hadoop应用案例1:全球最大超市沃尔玛 21
2.3.2 Hadoop应用案例2:全球最大拍卖网站eBay 21
2.3.3 Hadoop应用案例3:全球最大信用卡公司Visa 22
2.4 Hadoop在国内的现状与未来 22
2.4.1 国内最早的Hadoop交流平台:Hadoop in China 22
2.4.2 国内Hadoop发展现状 22
2.4.3 国内Hadoop前景展望 25
第3章 开始使用Hadoop集群 26
3.1 Hadoop初探 26
3.1.1 使用Hadoop的先决条件 26
3.1.2 安装环境 27
3.1.3 安装并运行Hadoop 29
3.1.4 运行模式 30
3.1.5 Hadoop单机模式 31
3.1.6 Hadoop伪分布式模式 32
3.1.7 Hadoop完全分布式模式 36
3.1.8 Hadoop命令手册解读 39
3.2 HDFS基础和权限管理 45
3.2.1 HDFS特点 45
3.2.2 HDFS基本构成 46
3.2.3 HDFS使用原理 47
3.2.4 HDFS权限管理 48
3.3 MapReduce Job开发、运行与管理 49
3.3.1 为什么需要 MapReduce 49
3.3.2 MapReduce 1.X和MapReduce 2.X 49
3.3.3 MapReduce开发 55
3.3.4 MapReduce运行与管理 58
3.4 YARN管理 62
3.4.1 YARN简介 62
3.4.2 主要组件 64
3.4.3 ResourceManager组件 65
3.4.4 NodeManager组件 65
3.4.5 ApplicationMaster组件 66
3.4.6 Container组件 66
3.4.7 应用提交过程分析 66
第4章 Hadoop集群性能优化和维护 69
4.1 集群常用配置文件解读 69
4.1.1 配置文件 70
4.1.2 Hadoop核心配置文件core-site.xml 71
4.2 HDFS配置优化 78
4.2.1 dfsadmin 81
4.2.2 SecondaryNameNode 82
4.2.3 Rebalance与机架感知 83
4.2.4 安全模式、fsck、升级与回滚 84
4.2.5 集群与环境优化 85
4.3 MapReduce配置优化 86
4.3.1 Job配置 86
4.3.2 其他 91
4.4 YARN配置优化 91
4.4.1 YARN 91
4.4.2 Capacity Scheduler 92
4.4.3 Queue Properties 94
第5章 高可用配置 97
5.1 架构 97
5.2 使用NFS共享存储 98
5.3 Quorum-based存储+ZooKeeper 99
5.4 QJM 100
5.5 使用ZooKeeper进行自动故障转移 101
5.6 部署与配置 102
第6章 Hadoop其他组件 106
6.1 HBase介绍 106
6.1.1 概述 106
6.1.2 特点 107
6.1.3 架构 108
6.1.4 工作原理 108
6.1.5 安装与运行 110
6.1.6 基础操作 112
6.2 Hive介绍 113
6.2.1 概述 113
6.2.2 特点 114
6.2.3 数据结构 114
6.2.4 架构 115
6.2.5 工作原理 116
6.2.6 安装与运行 116
6.3 Pig介绍 118
6.3.1 概述 118
6.3.2 特点 119
6.3.3 运行模式 119
6.3.4 安装与运行 120
6.4 Sqoop介绍 121
6.4.1 概述 121
6.4.2 版本介绍 122
6.4.3 特点 122
6.4.4 安装与运行 123
6.4.5 工作原理 123
第7章 NoSQL 125
7.1 NoSQL介绍 125
7.2 NewSQL介绍 126
7.3 NoSQL应用场景 127
7.4 能承受海量压力的键值型数据库:Redis 128
7.5 处理非结构化数据的利器:MongoDB 128
7.6 图数据库:Neo4j 130
7.6.1 什么是图 130
7.6.2 什么是图数据库 130
7.6.3 Neo4j简介 130
第8章 Spark生态系统 132
8.1 Spark在大数据生态中的定位 132
8.1.1 Spark简介 132
8.1.2 Spark系统定位 135
8.1.3 基本术语 136
8.2 Spark主要模块介绍 138
8.2.1 Spark Core 138
8.2.2 Spark SQL 146
8.2.3 Spark Streaming 149
8.2.4 GraphX 150
8.2.5 MLlib 154
8.3 Spark部署模型介绍 156
第9章 Spark SQL实战案例 158
9.1 Spark SQL前世今生 158
9.1.1 大数据背景 158
9.1.2 Spark和Spark SQL的产生 159
9.1.3 版本更迭 159
9.2 RDD、DataFrame及Dataset 160
9.2.1 Spark SQL基础 161
9.2.2 Dataset、DataFrame、RDD的区别 167
9.3 使用外部数据源 168
9.3.1 读写文件 168
9.3.2 .parquet文件 169
9.3.3 ORC文件 174
9.3.4 JSON Dataset 174
9.4 连接Metastore 174
9.4.1 Hive table 174
9.4.2 和不同版本的Hive Metastore交互 175
9.4.3 JDBC连接其他数据库 176
9.5 自定义函数 178
9.5.1 聚合函数——非标准化类型(UnTyped)UADF开发 178
9.5.2 类型安全的自定义聚合函数——Type-safe的UDAF 180
9.6 Spark SQL与Spark Thrift server 183
9.6.1 分布式SQL引擎 183
9.6.2 HiveServer2服务 184
9.7 Spark SQL 优化 185
9.7.1 内存缓存数据 185
9.7.2 SQL查询中的Broadcast Hint 186
9.7.3 持久化RDD,选择存储级别 186
9.7.4 数据序列化选择 188
9.7.5 内存管理 189
9.7.6 其他考虑 192
第10章 Spark Streaming 195
10.1 Spark Streaming架构 195
10.2 DStream的特点 196
10.3 DStream的操作 197
10.3.1 DStream的输入操作 197
10.3.2 DStream的转换操作 199
10.4 StatefulRDD和windowRDD实战 201
10.4.1 StatelessRDD无状态转化操作 201
10.4.2 StatefulRDD有状态转化操作 206
10.5 Kafka+Spark Steaming实战 212
10.5.1 搭建Kafka环境 212
10.5.2 代码编写 213
10.6 Spark Streaming的优化 220
第11章 数据同步收集 224
11.1 从关系数据库同步数据到HDFS 224
11.1.1 Sqoop 225
11.1.2 DataX 226
11.2 Sqoop的使用 228
11.2.1 安装 228
11.2.2 MySQL环境驱动配置 229
11.2.3 导入数据 230
11.3 数据清洗 234
第12章 任务调度系统设计 239
12.1 初识任务调度 239
12.2 几种相对成熟的Java调度系统选择 242
12.2.1 Timer和TimerTask 242
12.2.2 ScheduledThreadPoolExecutor 244
12.2.3 Quartz 245
12.2.4 jcrontab 245
12.2.5 相对成熟的调度工具和开源产品 246
12.3 Quartz的介绍 250
12.3.1 Quartz的储备知识 251
12.3.2 Quartz的基本使用 251
12.3.3 Trigger的选择 252
12.3.4 JobStore 255
12.3.5 完整的例子 257
12.4 开源工具XXL-Job 258
12.4.1 搭建项目 258
12.4.2 运行项目 260
12.4.3 项目简单使用 263
12.4.4 高级使用和使用建议 267
第13章 调度系统选择 274
13.1 常用调度系统及对比 274
13.1.1 Oozie简介 274
13.1.2 Azkaban简介 275
13.1.3 Airflow简介 276
13.1.4 调度系统对比 277
13.2 Airflow基本架构设计 278
13.2.1 设计原则 278
13.2.2 Airflow的服务构成 278
13.2.3 依赖关系的解决 280
13.2.4 工作原理 280
13.3 Airflow任务调度系统的安装配置及使用 281
13.3.1 安装 281
13.3.2 配置 282
13.3.3 使用 285
13.4 Airflow自定义DAG的使用 286
第14章 数据安全管理 292
14.1 HDFS层面的访问权限及安全模式 292
14.1.1 HDFS权限管理 292
14.1.2 HDFS安全模式 293
14.1.3 ACL概念介绍 294
14.2 保障敏感数据的安全性 295
14.3 应用层面的安全性保障 297
第15章 大数据面临的挑战、发展趋势及典型案例 300
15.1 大数据面临的问题与挑战 300
15.1.1 大数据潜在的危害 300
15.1.2 开放与隐私如何平衡 301
15.1.3 大数据人才的缺乏 302
15.2 大数据发展趋势 302
15.2.1 大数据与电子商务 303
15.2.2 大数据与医疗 303
15.2.3 大数据与人工智能 304
15.2.4 工业大数据云平台 304
15.3 典型大数据平台案例 304
15.3.1 阿里云数加 304
15.3.2 华为Fusion Insight大数据平台 305
15.3.3 三一重工Witsight工业大数据平台 307