本书是一本专门论述大数据采集与处理相关技术及应用的著作,也是一线研发工程师的实战经验结晶。本书依次介绍了大数据采集、大数据预处理、大数据存储与计算、大数据安全等相关内容,并结合大数据应用各行业背景,介绍了电商、煤炭、教育、医疗、电信、交通等行业的大数据采集与处理。后,本书以某电商网站数据分析为背景,介绍一个完整的数据采集、清洗、处理的离线数据分析案例,以期给读者展示一个系统的实践操作过程。与本书所述技术相关的论著较少,所著内容新颖、系统全面、实践指导性强。
张雪萍,博士,教授,教育部新世纪优秀人才,河南省高校科技创新人才,河南省教育厅学术技术带头人。长期从事计算机科学与技术、地理信息系统领域的的教学与科研工作,主要研究兴趣包括空间数据挖掘与信息共享、数据库版权保护、软件测试、大数据与人工智能技术及应用等。近年来完成国家"八五、"十五科技攻关、"十一五科技支撑计划、教育部新世纪优秀人才支持计划等20余项科研项目,其中获地厅级科学技术进步一等奖4项、二等奖3项、三等奖1项;在LNAI、LNCS等国内外重要学术期刊上发表论文60余篇,其中被EI收录30余篇;出版学术著作6部,其中获河南省信息技术优秀一等奖1项,二等奖1项。
第1章 大数据基础 1
1.1 大数据概念及特征 1
1.2 大数据采集与处理基本流程 2
1.2.1 大数据采集 3
1.2.2 大数据预处理 3
1.2.3 大数据处理 4
1.3 大数据分析 5
1.4 大数据应用 6
1.4.1 大数据应用行业分类 6
1.4.2 大数据分析在商业上的应用 7
习题 9
参考文献 9
第2章 开源Hadoop 10
2.1 Hadoop概述 10
2.1.1 Hadoop简介 10
2.1.2 Hadoop起源及发展史 11
2.1.3 Hadoop发行版本 12
2.1.4 Hadoop特性 13
2.2 Hadoop生态系统 13
2.2.1 HDFS 14
2.2.2 MapReduce 15
2.2.3 Hive 15
2.2.4 ZooKeeper 16
2.2.5 Flume 17
2.2.6 Kafka 17
2.2.7 Spark 18
2.2.8 Storm 19
2.2.9 Flink 20
2.2.10 YARN 20
2.3 Hadoop的安装与使用 21
2.3.1 环境准备 22
2.3.2 单机模式 24
2.3.3 伪分布式 25
2.3.4 完全分布式安装 38
习题 44
参考文献 45
第3章 大数据采集 46
3.1 数据采集与大数据采集 46
3.1.1 数据采集 47
3.1.2 大数据采集及数据来源 47
3.1.3 传统数据采集与大数据采集的区别 48
3.1.4 大数据采集分类 48
3.2 大数据采集方法 49
3.2.1 数据库采集 50
3.2.2 系统日志采集 50
3.2.3 网络数据采集 51
3.2.4 传感器采集 51
3.2.5 众包采集 51
3.3 常用采集工具及平台 52
3.3.1 Flume 52
3.3.2 Fluentd 53
3.3.3 Logstash 55
3.3.4 Chukwa 56
3.3.5 Scribe 57
3.3.6 Splunk 58
3.3.7 Scrapy 59
3.4 网络爬虫 61
3.4.1 网络爬虫分类 61
3.4.2 网络爬虫发展现状 62
3.4.3 网络爬虫使用技术 63
3.5 实战 64
3.5.1 项目准备 64
3.5.2 架构设计 65
3.5.3 代码实现 66
3.5.4 结果展示 73
习题 78
参考文献 78
第4章 日志采集 79
4.1 日志采集概述 79
4.1.1 系统日志分类 79
4.1.2 日志分析系统架构及日志采集方式 80
4.1.3 日志采集应用场景与日志分析应用场景 81
4.1.4 日志采集系统关键技术 82
4.2 Scribe 83
4.2.1 Scribe概述 83
4.2.2 Scribe全局配置 83
4.2.3 Scribe的存储类型配置 84
4.3 Chukwa 88
4.3.1 Chukwa概述 88
4.3.2 Chukwa架构 88
4.3.3 Chukwa数据收集应用 89
4.4 Kafka 90
4.4.1 Kafka概述 90
4.4.2 Kafka架构 91
4.4.3 Kafka日志采集 93
4.5 Flume 94
4.5.1 Flume概述 94
4.5.2 Flume架构 95
4.5.3 Flume的优势 95
4.6 实战 95
4.6.1 Flume安装部署 96
4.6.2 环境测试 98
4.6.3 采集目录到HDFS 99
4.6.4 采集文件到HDFS 100
习题 101
参考文献 101
第5章 大数据预处理 102
5.1 为什么要进行数据预处理 102
5.2 大数据预处理总体架构 104
5.3 大数据预处理方法 105
5.3.1 数据清洗 105
5.3.2 数据集成 108
5.3.3 数据转换 109
5.3.4 数据消减 110
5.4 ETL工具Kettle 116
5.4.1 ETL介绍 116
5.4.2 Kettle介绍 119
5.4.3 Kettle安装与配置 142
5.5 实战 151
5.5.1 基于Python的数据预处理 151
5.5.2 基于Hadoop生态圈的Kettle应用 155
习题 179
参考文献 180
第6章 大数据存储 182
6.1 大数据存储概述 183
6.1.1 大数据存储面临的问题 183
6.1.2 大数据存储方式 184
6.1.3 大数据存储技术路线 184
6.2 HDFS 185
6.2.1 HDFS架构 186
6.2.2 HDFS存储机制 187
6.2.3 NameNode和DataNode工作机制 190
6.3 NoSQL 193
6.3.1 NoSQL数据库概述 193
6.3.2 HBase 198
6.3.3 MongoDB 206
6.3.4 Redis 214
6.4 ElasticSearch 220
6.4.1 ElasticSearch概述 220
6.4.2 ElasticSearch基本概念 221
6.4.3 ElasticSearch工作原理 223
6.4.4 ElasticSearch存储机制 224
6.4.5 ElasticSearch分布式存储 226
6.4.6 ElasticSearch安装与运行 229
6.5 实战 231
6.5.1 主从模式搭建 231
6.5.2 Sentinel模式搭建 235
6.5.3 Cluster模式搭建 238
习题 245
参考文献 245
第7章 MapReduce 246
7.1 概述 246
7.2 MapReduce计算框架 247
7.2.1 MapReduce模型 247
7.2.2 MapReduce函数 249
7.2.3 MapReduce资源管理 250
7.2.4 MapReduce生命周期管理 251
7.3 MapReduce工作流程及原理 253
7.3.1 MapReduce工作流程 253
7.3.2 MapReduce工作原理 254
7.4 深入Shuffle过程 255
7.4.1 Map端Shuffle 256
7.4.2 Reduce端Shuffle 260
7.5 实战 262
7.5.1 任务准备 262
7.5.2 编写Map程序 262
7.5.3 编写Reduce 程序 263
7.5.4 编写main函数 265
7.5.5 核心代码包 265
7.5.6 运行代码 266
习题 266
参考文献 267
第8章 Hive数据仓库 268
8.1 数据仓库简介 269
8.1.1 数据仓库概念 269
8.1.2 数据仓库的结构 269
8.1.3 传统数据仓库的问题 271
8.1.4 数据仓库的发展 271
8.2 Hive 272
8.2.1 Hive简介 272
8.2.2 Hive与传统数据库的对比 273
8.2.3 Hive系统架构 275
8.2.4 Hive体系结构 276
8.2.5 Hive工作原理 277
8.2.6 Hive的数据模型 283
8.2.7 Hive基本操作 284
8.3 Impala 288
8.3.1 Impala简介 288
8.3.2 Impala架构 290
8.3.3 Impala执行过程 292
8.3.4 Impala与Hive比较 294
8.3.5 Impala基本操作 294
8.4 Spark SQL 296
8.4.1 Spark SQL简介 296
8.4.2 Spark SQL系统架构 297
8.4.3 HiveContext和SQLContext的运行过程 298
8.4.4 Shark和Spark SQL 299
8.4.5 Spark SQL基本操作 303
8.5 案例 305
8.5.1 大数据仓库设计案例 305
8.5.2 YouTuBe项目实战 307
习题 318
参考文献 318
第9章 流计算 319
9.1 流计算简介 319
9.1.1 流计算的概念及特点 320
9.1.2 流计算的适用范围与应用场景 321
9.2 Spark Streaming 321
9.2.1 Spark Streaming 概述 321
9.2.2 Spark Streaming基本原理 322
9.2.3 Spark Streaming 运行架构 322
9.2.4 实战 323
9.3 Storm 325
9.3.1 Storm概述 326
9.3.2 Storm基础架构 326
9.3.3 Storm运行流程 327
9.3.4 实战 328
9.4 Flink 332
9.4.1 Flink概述 333
9.4.2 Flink运行架构 335
9.4.3 实战 336
9.5 案例 341
9.5.1 任务目标 341
9.5.2 实验环境 341
9.5.3 数据准备 341
9.5.4 业务(任务)实现 344
9.5.5 结果展示 350
习题 351
参考文献 351
第10章 Pregel图计算 352
10.1 Pregel图计算简介 353
10.1.1 图结构数据 353
10.1.2 传统图计算解决方案的不足 353
10.1.3 图计算通用软件 353
10.1.4 Pregel简介 354
10.2 Pregel图计算模型 355
10.2.1 有向图和顶点 355
10.2.2 顶点之间的消息传递 355
10.2.3 Pregel计算过程 356
10.3 Pregel工作原理 358
10.3.1 Pregel的C API 358
10.3.2 消息传递机制和Combiner 358
10.3.3 Aggregator机制 359
10.3.4 拓扑改变 360
10.3.5 输入和输出 360
10.4 Pregel体系结构 360
10.4.1 Pregel的执行过程 360
10.4.2 容错性 362
10.4.3 Worker 363
10.4.4 Master 363
10.4.5 Aggregator 364
10.5 Pregel应用实例 365
10.5.1 单源短路径 365
10.5.2 PageRank算法实现及比较 367
10.6 Hama 371
10.6.1 Hama介绍 371
10.6.2 Hama体系结构 371
10.6.3 Hama实现PageRank算法 372
习题 374
参考文献 374
第11章 大数据安全技术及应用 375
11.1 大数据安全概述 376
11.2 大数据安全威胁形式 376
11.2.1 大数据基础设施安全威胁 376
11.2.2 大数据生命周期安全威胁 377
11.2.3 大数据隐私安全威胁 379
11.3 大数据安全关键路径 380
11.3.1 大数据性能安全保障 380
11.3.2 大数据安全关键技术 387
11.4 大数据安全管理及应用 391
11.4.1 大数据安全管理 392
11.4.2 大数据安全应用 394
11.5 大数据安全案例分析 398
11.5.1 安全性能案例如何自行搭建大数据计算平台 398
11.5.2 生命周期安全分析案例大数据内网的硬件漏洞安全分析 400
习题 403
参考文献 403
第12章 行业大数据采集与处理 404
12.1 电商大数据采集与处理 404
12.1.1 电商行业大数据概述 404
12.1.2 大数据采集与处理 404
12.1.3 某电商网站完整离线数据分析案例 410
12.2 煤炭大数据采集与处理 423
12.2.1 煤炭行业大数据概述 423
12.2.2 煤炭行业大数据采集与处理 424
12.2.3 煤炭行业大数据平台案例 425
12.3 教育大数据采集与处理 432
12.3.1 总体技术架构 432
12.3.2 Hadoop与Spark集成平台 433
12.3.3 数据采集方案设计 434
12.3.4 数据清洗方案设计 435
12.3.5 数据存储方案设计 436
12.3.6 学生学业预警系统需求分析 437
12.3.7 系统体系结构设计 438
12.4 医疗大数据采集与处理 439
12.4.1 医疗大数据概述 439
12.4.2 医疗行业大数据采集与处理 441
12.4.3 医疗大数据采1