本书提供了学习大数据技术及架构的一站式解决方案,覆盖了大数据生态圈中的完整技术体系,包括数据采集、数据存储、分布式资源管理、数据计算、数据分析、任务调度、数据检索、大数据底层基础技术和大数据集群安装与管理。本书还介绍了多个企业级大数据应用案例(包括海量数据采集、“双十一”数据大屏、海量数据全文搜索系统等)和大数据平台架构案例(包括离线数据仓库架构、实时数据仓库架构、批流一体化数据仓库架构、数据中台架构、直播大数据平台架构、电商大数据平台架构等),可以帮助读者从全局角度理解大数据。在本书中,技术内容基本上都是从零讲起的,结合原理和架构,以“图解+实战”的形式帮助读者轻松理解复杂的知识。
徐葳中科院大数据研究院大数据技术专家,曾就职于北京猎豹移动科技有限公司,出版了《Flink入门与实战》
基 础 篇
●第1章 大数据的前世今生 2
1.1 什么是大数据 2
1.2 大数据产生的背景 3
1.3 大数据的4V特征 3
1.4 大数据的典型应用场景 4
1.5 大数据生态圈核心技术总览 7
技 术 篇
●第2章 海量数据采集 9
2.1 为什么需要数据采集 9
2.2 数据形态 9
2.3 数据来源 11
2.4 数据采集规则 11
2.5 日志数据采集工具 13
2.5.1 对比常见的日志数据采集工具 13
2.5.2 Flume的原理及架构分析 14
2.5.3 Flume的应用 17
-安装Flume 17
-Hello World 17
-【实战】日志汇总采集 23
2.5.4 Logstash的原理及架构分析 28
2.5.5 Logstash的应用 30
-安装Logstash 31
-【实战】Hello World案例 31
-【实战】采集异常日志案例 34
2.5.6 Filebeat的原理及架构分析 38
- Filebeat的由来 38
-原理及架构分析 39
2.5.7 Filebeat的应用 42
- 安装Filebeat 42
-【实战】采集应用程序日志 43
2.6 数据库数据采集工具 46
2.6.1 对比常见的数据库数据采集工具 46
-数据库离线数据采集工具 46
-数据库实时数据采集工具 47
2.6.2 Sqoop的原理及架构分析 49
2.6.3 DataX的原理及架构分析 53
2.6.4 Sqoop的应用 55
-安装Sqoop 55
-Sqoop常见参数 57
-【实战】导入数据 59
-【实战】导出数据 61
-【实战】封装Sqoop脚本 63
2.6.5 Canal的原理及架构分析 64
2.6.6 Maxwell的原理及架构分析 65
2.6.7 Maxwell的应用 66
-安装Maxwell 66
-【实战】采集MySQL数据库的实时数据 67
2.7 网页数据采集工具 71
2.7.1 常见的网页数据采集工具 71
2.7.2 网页数据采集工具的原理及架构分析 71
2.8 物联网数据采集工具 73
2.8.1 什么是物联网数据采集 73
2.8.2 如何实现物联网数据采集 73
2.9 消息队列中间件 73
2.9.1 为什么需要消息队列中间件 73
2.9.2 对比常见的消息队列中间件 75
2.9.3 Kafka原理及架构分析 75
2.9.4 Kafka的应用 77
-安装Zookeeper集群 77
-安装Kafka集群 79
-【实战】生产者的使用 81
-【实战】消费者的使用 82
2.9.5 Filebeat + Flume + Kafka的典型架构分析 82
-数据采集聚合层 83
-数据分发层 83
-数据落盘层 84
● 第3章 海量数据存储 85
3.1 海量数据存储的演进之路 85
3.2 分布式文件存储之HDFS 86
3.2.1 HDFS的前世今生 86
3.2.2 HDFS的原理及架构分析 87
3.2.3 常见的分布式文件系统 90
3.2.4 安装Hadoop集群 91
3.2.5 安装Hadoop客户端 102
3.2.6 HDFS的应用 104
-HDFS常用命令的使用 105
-【实战】统计HDFS中的文件 107
3.3 NoSQL数据库之HBase 108
3.3.1 HBase的前世今生 108
3.3.2 HBase的原理及架构分析 108
3.3.3 HBase的典型应用场景 115
3.3.4 安装HBase集群 116
3.3.5 HBase的应用 120
-【实战】使用Shell命令行操作HBase 121
-【实战】使用Java API操作HBase 132
3.4 NoSQL数据库之Redis 136
3.4.1 Redis的产生背景 136
3.4.2 Redis的发展历程 137
3.4.3 Redis的原理及架构分析 137
3.4.4 Redis的应用 142
-安装Redis 142
-【实战】Redis常见命令的使用 144
-【实战】存储一个班的学员信息 154
-【实战】使用Java代码操作Redis 155
●第4章 离线数据计算 158
4.1 离线数据计算引擎的发展之路 158
4.2 离线计算引擎MapReduce 160
4.2.1 MapReduce的前世今生 160
4.2.2 MapReduce核心原理及架构分析 161
4.2.3 【实战】MapReduce离线数据计算——计算文件中每个单词出现的总次数 170
4.3 离线计算引擎Spark 176
4.3.1 Spark可以取代Hadoop吗 176
4.3.2 Spark核心原理及架构分析 177
4.3.3 【实战】Spark离线数据计算——计算文件中每个单词出现的总次数 184
4.3.4 Spark中核心算子介绍及使用 189
●第5章 实时数据计算 207
5.1 从离线数据计算到实时数据计算 207
5.2 实时数据计算引擎的演进之路 208
5.3 实时数据计算引擎的技术选型 209
5.4 实时计算引擎Storm 211
5.4.1 Storm的原理及架构分析 211
5.4.2 安装Storm集群 216
5.4.3 【实战】Storm实时数据计算 220
-实时清洗订单数据(实时ETL) 220
-向Storm集群中提交任务 224
-停止Storm集群中正在运行的任务 226
5.5 实时计算引擎Spark Streaming 227
5.5.1 Spark Streaming的原理 227
5.5.2 对比Spark Streaming和Structured Streaming 229
5.5.3 【实战】Spark Streaming实时数据计算 230
5.6 新一代实时计算引擎Flink 237
5.6.1 Flink的原理及架构分析 237
5.6.2 Flink中核心算子的使用 244
5.6.3 【实战】Flink实时数据计算 251
5.6.4 【实战】利用Flink + DataV实现“双十一”数据大屏 261
●第6章 OLAP数据分析 274
6.1 OLAP起源及现状 274
6.2 OLAP引擎的分类 278
6.2.1 从数据建模方式分类 278
6.2.2 从数据处理时效分类 279
6.3 常见OLAP引擎的应用场景 280
6.4 常见离线OLAP引擎 282
6.4.1 Hive的原理及架构分析 282
6.4.2 Impala的原理及架构分析 284
6.4.3 Kylin的原理及架构分析 287
6.4.4 对比Hive、Impala和Kylin 290
6.5 常见实时OLAP引擎 290
6.5.1 Druid的原理及架构分析 290
6.5.2 ClickHouse的原理及架构分析 297
6.5.3 Doris的原理及架构分析 299
6.5.4 对比Druid、ClickHouse和Doris 302
6.6 Hive快速上手 303
6.6.1 Hive部署 303
6.6.2 Hive核心功能使用 307
- Hive的使用方式 307
-【实战】Hive中数据库和表的操作 310
-【实战】Hive中的数据类型 314
-【实战】Hive中的表类型 318
-【实战】Hive中的视图 324
-【实战】Hive中的高级函数 324
-【实战】Hive中的排序语句 327
6.7 【实战】Hive离线数据统计分析 329
6.7.1 需求及架构分析 329
6.7.2 核心步骤实现 330
●第7章 海量数据全文检索引擎 336
7.1 大数据时代全文检索引擎的发展之路 336
7.1.1 全文检索引擎的发展 337
7.1.2 全文检索引擎技术选型 338
7.2 全文检索引擎原理与架构分析 340
7.2.1 Lucene的原理及架构分析 340
7.2.2 Solr的原理及架构分析 343
7.2.3 Elasticsearch的原理及架构分析 345
7.3 Elasticsearch快速上手 351
7.3.1 Elasticsearch集群安装部署 351
-安装Elasticsearch集群 351
-安装Elasticsearch集群的监控管理工具 356
7.3.2 Elasticsearch核心功能的使用 359
-Elasticsearch的常见操作 359
-【实战】Elasticsearch集成中文分词器 371
-【实战】Elasticsearch自定义词库 379
-【实战】Elasticsearch查询详解 383
-【实战】Elasticsearch SQL的使用 387
7.4 【实战】基于Elasticsearch + HBase构建全文搜索系统 390
7.4.1 全文搜索系统需求分析 390
7.4.2 系统架构流程设计 391
7.4.3 开发全文搜索系统 394
●第8章 分布式任务调度系统 411
8.1 任务调度系统的作用 411
8.2 传统任务调度系统Crontab的痛点 411
8.3 分布式任务调度系统原理与架构分析 412
8.3.1 常见的分布式任务调度系统 413
8.3.2 Azkaban的原理及架构分析 414
8.3.3 Ooize的原理及架构分析 417
8.3.4 DolphinScheduler的原理及架构分析 420
8.4 Azkaban快速上手 422
8.4.1 安装Azkaban 422
8.4.2 【实战】配置一个定时执行的独立任务 424
8.4.3 【实战】配置一个带有多级依赖的任务 432
8.5 【实战】Azkaban在数据仓库中的应用 435
8.5.1 创建Job文件并进行压缩 436
8.5.2 在Azkaban中创建项目并上传gmv_calc.zip 441
8.5.3 给Azkaban中的任务设置定时执行 441
●第9章 分布式资源管理 444
9.1 分布式资源管理 444
9.2 YARN的原理及架构分析 445
9.3 YARN中的资源调度器 448
9.4 【实战】配置和使用YARN多资源队列 450
●第10章 大数据平台搭建工具 456
10.1 如何快速搭建大数据平台 456
10.2 了解常见的大数据平台工具 457
10.2.1 大数据平台工具HDP 457
10.2.2 大数据平台工具CDH 458
10.2.3 大数据平台工具CDP 460
架 构 篇
●第11章 数据仓库架构演进之路 463
11.1 什么是数据仓库 463
11.2 为什么需要数据仓库 464
11.3 数据仓库的基础知识 465
11.3.1 事实表和维度表 465
11.3.2 数据库三范式 466
11.3.3 数据仓库建模方式 467
11.3.4 维度建模模型 468
11.4 数据仓库分层 469
11.4.1 数据分层设计 470
11.4.2 数据仓库命名规范 471
11.5 数据仓库架构设计 471
11.5.1 离线数据仓库架构 472
11.5.2 实时数据仓库架构 472
●第12章 数据中台架构演进之路 475
12.1 什么是中台 475
12.2 什么是数据中台 477
12.3 数据中台演进过程 478
12.4 数据中台架构 479
12.4.1 采 480
12.4.2 存 480
12.4.3 通 481
12.4.4 用 481
●第13章 典型行业大数据架构分析 482
13.1 直播大数据平台架构分析 482
13.2 电商大数据平台架构分析 483
13.3 金融大数据平台架构分析 484
13.4 交通大数据平台架构分析 485
13.5 游戏大数据平台架构分析 486