
本书分为5篇,包括11章和3个附录。大数据基础篇包括第1章(绪论);大数据存储篇包括第2~3章(HDFS分布式文件系统、NoSQL及其HBase分布式数据库系统);大数据计算篇包括第4~7章(MapReduce分布式计算、大数据的Spark内存计算、大数据的流计算、大数据的图计算);大数据管理、查询分析及可视篇包括第8~10章(Hadoop的数据整合、集群管理与维护,大数据的查询分析技术,R语言与可视化技术);大数据发展及应用篇包括第11章(大数据应用——人工智能深度学习)。本书体现了校际联盟、校企合作的建设成果,将理论与实践相结合,突出实践应用。本书配套的教学资源丰富,包括PPT、教学大纲、实验指导书、习题、模拟考试试卷等,读者在可以登录华信教育资源网(www.hxedu.com.cn)注册后免费下载。本书可以作为应用型本科院校、高等职业院校计算机专业、大数据专业、人工智能专业的教材,也可以作为相关培训机构的教材,还可以作为软件开发和应用从业人员的参考书。
前言 大数据是互联网发展的必然产物,其技术已被广泛应用于当今的人工智能、数字技术(DT)等领域。 本书的主要特点如下。 本书是集大数据原理、技术、开发、存储、管理、计算、分析、安全、发展及应用于一体的教程,全面介绍了大数据的关键技术,注重数据挖掘、高级分析及开源可视化统计工具的应用,在系统性和实用性两方面寻求平衡。 理论与实践相结合,突出实践。本书推荐使用Hadoop开源大数据平台,主要介绍其基于Ambari的集群安装与部署、操作与运维。此外,本书安排了大数据的存储(HDFS、HBase)技术实验,MapReduce分布式计算、查询和分析(Hive、Pig)实验,数据整合与集群管理(Sqoop、HCatalog ZooKeeper)实验,大数据挖掘(Mahout)、高级分析及可视化技术(R语言)实验等,培养学生的创新精神,提高学生的实践能力,特别适合应用型本科院校的学生学习。 本书介绍了其他大数据教材中较少出现的查询和分析(Hive、Pig)、整合及集群管理(Sqoop、ZooKeeper、Ambari)、可视化技术(R语言)等内容。 紧跟前沿技术。除了新版本的Hadoop和Spark(可取代MapReduce)外,在大数据发展及应用篇中,介绍了人工智能深度学习技术、开源流计算用Flink代替Storm等。 校企合作、多校协作。本书的编写团队与中科院成都计算机应用研究所、中科院成都信息技术股份有限公司等机构开展合作,按照行业标准和企业标准组织本书内容。本书是全国部分理工类地方本科院校联盟(G12)课程教材建设项目成果之一。 强调以“以必需、够用为度”为原则进行讲解,压缩内容、降低难度,力求深入浅出。 本书配套的教学资源丰富,包括PPT、教学大纲、实验指导书、习题、模拟考试试卷等,便于学生学习和教师教学。 本书由刘甫迎、刘焱担任主编,谭宁波、孙毓方、杜毅、谢春担任副主编。刘甫迎编写第1章和附录A,刘焱编写第2章、第3章、第5章和第7章,谭宁波编写第11章、附录B(B.11、B.12),孙毓方编写附录B(除B.11、B.12外的其他部分),杜毅编写第4章、第8章和附录C,谢春编写第6章、第9章、第10章,全书由刘甫迎教授和刘焱老师统稿。在编写和出版的过程中,对薛华强等编辑给予的帮助表示感谢! 由于作者水平有限,书中的疏漏和不妥之处在所难免,恳请各界专家和读者朋友不吝赐教、批评指正。 编者
目录 第一篇 大数据基础篇 第1章 绪 论 2 1.1 大数据概述 2 1.1.1 三次信息化浪潮、大数据的兴起与影响 2 1.1.2 大数据的概念及特征 5 1.1.3 大数据的计算模式 9 1.1.4 大数据的关键技术 11 1.2 大数据的Hadoop解决方案 13 1.2.1 Hadoop的由来与发展 13 1.2.2 Hadoop的特性、运行原理和生态环境 14 1.2.3 Hadoop的企业级开发架构、技术与落地应用 18 1.3 大数据各时期的热点与数据使用发展趋势 21 1.3.1 数据架构各时期的演变 22 1.3.2 Hadoop的YARN计算框架 24 1.3.3 大数据的实时交互式分析 25 1.3.4 数据使用发展趋势 25 习题 29 第二篇 大数据存储篇 第2章 HDFS分布式文件系统 32 2.1 HDFS及其设计思路和架构 32 2.1.1 HDFS及其设计思路 32 2.1.2 HDFS的架构与基本存储单元 33 2.1.3 HDFS的存/取流程 34 2.2 HDFS Shell的基本操作 38 2.3 HDFS的命令行操作 41 2.3.1 HDFS文件访问权限 41 2.3.2 通过Web浏览HDFS文件 42 2.3.3 HDFS的接口(API)使用 44 习题 46 第3章 NoSQL及其HBase分布式数据库系统 48 3.1 大数据环境中的NoSQL 48 3.1.1 NoSQL应运而生 48 3.1.2 NoSQL的类型 49 3.1.3 NoSQL的三大基石 51 3.2 HBase的设计思路与架构 54 3.2.1 HBase的系统架构与组件 54 3.2.2 HBase的数据模型、物理存储与查找 56 3.2.3 HBase的数据读/写流程 60 3.3 HBase的操作与数据管理 61 3.3.1 HBase的Shell操作 61 3.3.2 Java API 与非Java访问 64 3.3.3 HBase的编程实例 65 3.4 从RDBMS到HBase 67 3.5 为应用程序选择合适的Hadoop数据存储机制 69 习题 70 第三篇 大数据计算篇 第4章 MapReduce分布式计算 74 4.1 MapReduce的架构与源码分析 74 4.1.1 MapReduce的架构与执行过程 74 4.1.2 MapReduce的输入与输出 75 4.1.3 MapReduce的Job类 78 4.2 MapReduce任务的异常处理与失败处理 79 4.2.1 MapReduce任务的异常处理方式 79 4.2.2 MapReduce任务的失败处理方式 80 4.3 在HBase上运行MapReduce 80 4.4 MapReduce程序开发实例 82 4.5 基于MapReduce的数据挖掘应用 88 4.5.1 数据挖掘与高级分析库Mahout 88 4.5.2 矩阵乘法 90 4.5.3 相似度计算 93 习题 96 第5章 大数据的Spark内存计算 99 5.1 Spark概述 99 5.1.1 Spark及其架构 99 5.1.2 Spark的特点及性能 100 5.1.3 Spark的基本原理及计算方法 101 5.1.4 Spark与MapReduce、Hive对比 102 5.1.5 Spark在国内的现状以及未来的展望 103 5.2 Spark的RDD 103 5.2.1 Spark的核心概念——RDD 103 5.2.2 RDD基本操作 104 5.2.3 Spark提供的Transformation实现与Action实现 104 5.3 Spark的运行模式 105 5.3.1 Spark的程序框架 105 5.3.2 独立(Standalone)模式 107 5.3.3 Spark YARN的模式 108 5.4 Spark应用程序 109 5.4.1 Scala语言简介 109 5.4.2 Spark程序设计 111 5.5 Spark SQL 116 5.5.1 Spark SQL简介 116 5.5.2 DataFrame 117 5.5.3 Datasets 122 5.5.4 使用数据源 124 习题 127 第6章 大数据的流计算 129 6.1 流计算概述 129 6.1.1 无界数据及流数据 129 6.1.2 流计算概念 131 6.1.3 流计算框架 132 6.1.4 流计算的价值与应用 137 6.2 流计算处理流程 138 6.2.1 概述 138 6.2.2 数据实时采集 138 6.2.3 数据实时计算 139 6.2.4 实时查询服务 140 6.3 开源流计算框架Flink 141 6.3.1 Flink简介 141 6.3.2 Flink的基本架构 142 6.3.3 Flink编程 144 习题 148 第7章 大数据的图计算 149 7.1 大数据的图计算概述 149 7.2 Spark GraphX 150 7.2.1 Spark GraphX简介 150 7.2.2 Spark GraphX的实现分析 151 7.2.3 Spark GraphX实例 152 7.3 Pregel 155 7.3.1 Pregel简介 155 7.3.2 Pregel图计算模型 156 7.3.3 Pregel的体系结构 159 7.3.4 PageRank算法及其实现 161 习题 165 第四篇 大数据管理、查询分析及可视篇 第8章 Hadoop的数据整合、集群管理与维护 168 8.1 Hadoop数据整合 168 8.1.1 Hadoop计算环境中的数据整合问题 168 8.1.2 数据库整合工具Sqoop(导入、导出数据) 168 8.1.3 Hadoop平台内部数据整合工具——HCatalog 172 8.2 Hadoop集群管理与维护 175 8.2.1 云计算平台的管理体系 175 8.2.2 集群中的配置管理与协调者——ZooKeeper 177 8.2.3 Hadoop集群部署与监控集成工具——Ambari 179 8.2.4 基于Kerberos的Hadoop安全管理 181 8.2.5 Hadoop集群管理工具分析 183 习题 184 第9章 大数据的查询分析技术 185 9.1 大数据对传统分析处理的挑战 185 9.2 查询(SQL on Hadoop) 185 9.3 使用Hive和Pig处理数据 188 9.3.1 Hive与HiveQL命令 188 9.3.2 Pig与Pig Latin 192 9.3.3 实例 193 9.3.4 Hive与Pig对比 195 9.4 实时互动的SQL:Impala和Drill 195 9.4.1 Cloudera Impala 195 9.4.2 Apache Drill 196 习题 205 第10章 R语言与可视化技术 206 10.1 开源可视化统计绘图工具——R语言 206 10.1.1 R语言概述 206 10.1.2 R软件资源 207 10.1.3 函数、运算符、数据表和数据框 208 10.1.4 数据存/取及脚本语言 209 10.1.5 绘图及实例 210 10.2 可视化技术 213 10.2.1 可视化技术及分类 213 10.2.2 入门级工具 214 10.2.3 互动图形用户界面控制 215 10.2.4 地图工具 216 10.2.5 可视化设计工具 216 10.2.6 专家级可视化分析工具 217 习题 218 第五篇 大数据发展及应用篇 第11章 大数据应用——人工智能深度学习 220 11.1 理解大数据深度学习 220 11.1.1 机器学习、感知器与大数据深度学习 220 11.1.2 人工神经网络与深度学习 221 11.2 深度学习的编程基础 222 11.2.1 环境配置 222 11.2.2 Python入门 227 11.2.3 NumPy 229 11.2.4 机器学习实践 232 11.3 大数据深度学习实践 240 11.3.1 卷积神经网络 240 11.3.2 深度学习在图像中的应用 240 习题 245 附录A 《大数据原理与技术》教学大纲 246 附录B 实验指导书 247 B.1 实验一:Hadoop平台安装环境配置(Ambari) 247 B.2 实验二:Hadoop集群配置及HDFS的使用 252 B.3 实验三:HBase的安装与实例运行 257 B.4 实验四:MapReduce计算 263 B.5 实验五:基于MapReduce的大数据挖掘实例 264 B.6 实验六:认识Spark 265 B.7 实验七:Spark编程 268 B.8 实验八:初步体验大数据流计算框架Flink 270 B.9 实验九:数据库整合工具Sqoop与查询分析(Hive、Pig) 273 B.10 实验十:R语言与可视化技术 278 B.11 实验十一:认识深度学习(PyCharm、Python、NumPy、 Keras) 280 B.12 实验十二:深度学习实例 284 附录C 模拟考试 288 C.1 模拟考试试卷(一) 288 C.2 模拟考试试卷(二) 290 参考文献 293