
本书是一本专门论述大数据采集与处理相关技术及应用的著作,也是一线研发工程师的实战经验结晶。本书依次介绍了大数据采集、大数据预处理、大数据存储与计算、大数据安全等相关内容,并结合大数据应用各行业背景,介绍了电商、煤炭、教育、医疗、电信、交通等行业的大数据采集与处理。最后,本书以某电商网站数据分析为背景,介绍一个完整的数据采集、清洗、处理的离线数据分析案例,以期给读者展示一个系统的实践操作过程。与本书所述技术相关的论著较少,所著内容新颖、系统全面、实践指导性强。
序言 大数据时代的到来为社会各行各业的发展带来了多方位的影响,在大数据时代背景下,包括航空、金融、电商、政府、电信、电力、医疗、煤炭、教育等各个行业或企业都在纷纷挖掘大数据。大数据的能量是不可估量的,比如在2020年,大数据分析技术在新冠肺炎疫情预测、密切接触者追踪方面都产生了至关重要的作用,大大提升了疫情防控和复工复产的效率。 大数据处理关键技术一般包括大数据采集、大数据预处理、大数据存储及管理、大数据分析及挖掘、大数据展现和应用(大数据检索、大数据可视化、大数据应用、大数据安全等)。然而,调查显示:未被使用的信息比例高达99%,造成这种结果的主要原因是无法采集高价值的信息。如何从大数据中采集有用的信息并合理地存储起来是大数据发展的最关键因素之一,也可以说数据采集与处理是大数据产业的基石。 目前,大数据方面的著作、系列教材很多,但专门论述大数据采集与处理方面的书籍不多。应电子工业出版社米俊萍编辑之邀,我负责组织团队编写本书。考虑到大数据应用与行业及企业的结合紧密,在大数据技术学习和教学中,应更偏向新技术的应用,对工程实践能力要求更高,我邀请中原工学院的杨腾飞、郑州煤机液压电控有限公司的王军峰、河南省职工医院的朱彦霞、郑州天迈科技股份有限公司的孙方金、河南有线电视网络集团有限公司的华南参与编写,他们都是单位大数据应用的一线研发工程师,具有较丰富的大数据技术及应用实战经验。书中部分内容是他们多年研发心血的结晶。产教融合是我们编写团队的目标。 因考虑到目前市场上已有不少关于大数据存储、分析与挖掘的理论及技术的书籍,故本书在大数据存储部分只对目前流行的数据库技术加以介绍,对大数据分析与挖掘技术不再论述。 全书共12章,各章主要内容如下。 第1章 大数据基础。本章主要介绍面向大数据的基础知识体系,学习大数据的概念、基本特征、处理流程及分析应用等。 第2章 开源Hadoop。本章主要介绍Hadoop框架及特性、Hadoop生态系统及其各功能组件,学习Hadoop的安装和使用。 第3章 大数据采集。本章主要介绍大数据采集的分类和方法,学习如何利用Flume、Fluentd、Logstash、Chukwa、Scribe、Forwarder、Scrapy等常用大数据采集平台及网络爬虫技术采集大数据。 第4章 日志采集。本章主要对比分析常用的开源日志采集系统Scribe、Chukwa、Kafka和Flume等,学习如何基于Flume进行日志采集实战。 第5章 大数据预处理。本章主要介绍大数据预处理总体架构及常用的四种数据预处理方法,学习如何使用目前流行的ETL工具Kettle基于Hadoop生态圈进行大数据预处理。 第6章 大数据存储。本章主要介绍HDFS数据库和HBase、MongoDB、Redis等NoSQL数据库及ElasticSearch,学习如何基于Redis进行数据存储实战。 第7章 MapReduce。本章主要介绍MapReduce计算框架、工作流程、原理及Shuffle过程等,以WordCount为例学习实战编程。 第8章 Hive数据仓库。本章主要介绍Hive的体系结构、工作原理、数据模型及其基本操作,从运行结构、执行流程、实际应用操作等方面介绍Impala和Spark SQL,以YouTuBe项目为例进行项目实战。 第9章 流计算。本章主要介绍目前流行的三大流计算框架Spark Streaming、Storm、Flink的基本原理、运行架构及适用场景,通过实例学习三大流计算框架的运行机制及应用实现。 第10章 Pregel图计算。本章主要介绍Pregel图计算模型、工作原理、体系结构及Pregel开源实现Hama,学习图计算应用经典案例PageRank的Pregel和Hama实现。 第11章 大数据安全技术及应用。本章主要介绍大数据安全的定义、常见大数据安全威胁形式、大数据安全管理和应用,通过案例学习大数据安全的重要性及预防措施。 第12章 行业大数据采集与处理。本章主要结合大数据应用各行业背景,介绍电商、煤炭、教育、医疗、电信、交通等行业的大数据采集与处理,并以某电商网站数据分析为背景,介绍了一个完整的数据采集、清洗、处理的离线数据分析案例,以期给读者展示一个系统的实践操作过程。 本书框架和内容由张雪萍规划;第1、3、4章由杨腾飞编写,第2、7章由王军峰和孙方金合写,第6章由王军峰和杨腾飞合写,第5、10章由张雪萍编写,第8章由张雪萍和杨腾飞合写,第9、11章由朱彦霞和华南合写,第12章由上述6人合写;全书由张雪萍统稿润色。 本书既适合大数据、人工智能等领域的工程技术人员学习参考,也非常适合作为高校教材使用。本书涉猎技术领域相关论著较少,所著内容新颖、系统全面、实践指导性强,且每章均有习题,可作为高等院校计算机学科大数据及其相关专业的本科生和研究生教材。高职高专院校也可以选用本书部分内容开展教学。课程教学建议为64学时,其中,上机实验设20~24学时为宜。 感谢我的恩师王家耀院士一路的指导、支持和帮助,他从2003年引领我入门空间数据挖掘研究,到带领研究团队在第三届时空大数据产业技术发展高峰论坛上正式发布“时空大数据通用平台系统”,他高瞻远瞩、与时俱进,时时鞭策我在大数据与人工智能的研究道路上不断前行;感谢我的导师庄雷教授一路亦师亦友的关怀、帮助和鼓励,她严谨治学、孜孜不倦,时时提醒我要以更高的标准写好书;感谢我的研究生团队多年的支持和配合,他们不计名利、通力合作、无私奉献的精神让我感动;感谢信息学院2017—2020级的中外研究生们,他们在《高级数据库系统》和《空间数据库原理》课上的深入讨论、精彩演讲使我收获颇多;感谢书中所引材料的那些不知道真实姓名的学者(书中所引大部分为网上资料,我们尽可能在书中标注文献索引,但有些资料已找不到原文链接或出处,敬请谅解!),他们呕心沥血、不断创新、无私分享,为本书提供很多素材;感谢我的研究生王居正、Azza Abdellatif Siddig Omer为本书实战部分上机验证;感谢云创大数据刘鹏教授及其团队的帮助;感谢诸位审稿专家的不吝赐教。 由于编写时间仓促,水平所限,书中难免会出现一些错误或不准确的地方,恳请读者批评指正。如果您有更多的宝贵意见,可通过微信号zz67789875或邮箱zhang_xpcn@aliyun.com联系我,期待在技术之路上与您互勉共进。 张雪萍 2021年3月16日 于河南工业大学
第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 医疗大数据采集与处理案例 443 12.5 电信大数据采集与处理 447 12.5.1 电信行业大数据概述 448 12.5.2 电信行业大数据采集与处理 450 12.5.3 电信行业大数据案例 452 12.6 交通大数据采集与处理 455 12.6.1 交通大数据概述 456 12.6.2 交通行业大数据采集与处理 461 12.6.3 交通大数据案例 466 习题 476 参考文献 477