
本书从初学者的角度详细介绍大数据的核心技术。全书共11章,包括绪论、Linux的基础操作、Hadoop大数据处理架构、HDFS分布式文件系统、MapReduce分布式计算框架、ZooKeeper分布式协调服务、YARN资源管理器、HBase分布式数据库、Hive数据仓储、PySpark数据处理与分析及综合案例。此外,本书还提供了相应的示例代码,以帮助读者进一步理解相关方案的实现过程。
前 言 大数据(Big Data)一词最早由美国航空航天局提出,用来描述海量数据,指一般的软件工具难以捕捉、管理和分析的大容量数据。在数字经济时代,数据已逐渐成为驱动经济发展的新的生产要素,而大数据从计算领域萌芽,逐步延伸到科学和商业领域,给人们提供了一种认识复杂系统的全新思维和探究客观规律的全新手段。对大数据的处理和分析也正成为新一代信息技术融合应用的热点。 在阅读本书前,读者应该具有如下基础:有一定的计算机网络基础知识,了解Linux的基本原理,对Java语言有一定的了解,了解传统的数据库理论知识。 本书定位为大数据从入门到应用的简明系统教材,特色是理论和实践相结合,全面、深入浅出地讲解每个知识点,内容通俗易懂。本书共11章,各章主要内容如下。 第1章主要介绍大数据的基本概念和特征,涉及大数据采集、预处理、存储与管理、分析与挖掘等关键技术,同时阐述大数据领域对专业人才的要求。 第2章主要介绍Linux的基础操作,包括使用Linux操作系统中的常用命令进行文件与目录操作、文件权限管理、归档与压缩等,以及用vim或vi编辑器进行文本编辑。 第3章主要介绍Hadoop大数据处理架构,包括Hadoop的概念、生态系统、集群环境搭建、安装和验证等。 第4章主要介绍HDFS分布式文件系统,包括分布式文件系统的发展、HDFS的基本概念和特点、HDFS的存储架构和文件的读/写原理、HDFS的Shell操作和HDFS的Java API。 第5章主要介绍MapReduce分布式计算框架,包括MapReduce的工作原理、MapReduce应用中涉及的组件,以及MapReduce的相关案例等。 第6章主要介绍ZooKeeper分布式协调服务,包括ZooKeeper的基本概念和特性、数据模型、相关机制,以及ZooKeeper典型应用等。 第7章主要介绍YARN资源管理器,包括YARN的基本组成、工作流程、调度器和常用命令等。 第8章主要介绍HBase分布式数据库,包括HBase的基本组成结构、数据模型、系统架构、安装部署,以及HBase的 Shell操作和HBase的Java API。 第9章主要介绍Hive数据仓储,包括Hive的体系结构、数据类型、安装配置,以及使用数据定义语言DDL和数据操纵语言DML对表与数据的操作。 第10章主要介绍PySpark数据处理与分析,包括Spark的基本组成与架构、Spark编程模型与Spark集群结构、PySpark与Spark的关系、PySpark部署与快速启动DataFrame,以及Spark Pandas API的相关内容。 第11章通过构建搜索引擎这一典型案例系统地讲解如何开发一个基于Hadoop平台的大数据系统,让读者在实践中学习并掌握大数据相关技术和大数据系统的开发原理。 本书内容条理清晰,讲解循序渐进,理论与实践相结合,使读者在学习中持续保持浓厚的兴趣,以加深对大数据技术的理解和应用;同时,使用大量直观的图表、真实环境截图和案例,使读者快速地了解和掌握大数据开发知识。本书所用软件及相关资源可通过华信教育资源网(www.hxedu.com.cn)注册后免费下载。 本书得到了2021年河南省高等教育教学改革研究与实践重点项目(2021SJGLX167)的支持。 本书的第1、2章由吴慧欣编写,第3、11章由韩珂编写,第4、8章由谢昊洋编写,第5~7章由乔亚琼编写,第9、10章由魏富鹏编写。 虽然编者在编写本书的过程中力求叙述准确、完善,但由于编者水平和能力有限,书中难免有不当之处,希望广大读者给予指正,不吝赐教。编者邮箱:wuhuixin@ncwu. edu.cn。 编 者
目 录 第1章 绪论 1 1.1 大数据的形成和发展 1 1.2 大数据的基本概念 3 1.2.1 什么是大数据 3 1.2.2 大数据的特征 3 1.3 大数据关键技术 5 1.3.1 大数据采集技术 5 1.3.2 大数据预处理技术 6 1.3.3 大数据存储与管理技术 7 1.3.4 大数据分析与挖掘技术 8 1.3.5 大数据展现与应用技术 10 1.4 大数据的行业应用 11 1.4.1 水利领域 11 1.4.2 生物医学领域 13 1.4.3 智慧城市领域 14 1.4.4 商业领域 15 1.4.5 信息安全领域 15 1.5 大数据领域的主要职位及其能力要求 16 1.5.1 首席数据官 16 1.5.2 数据科学家 17 1.5.3 大数据开发工程师 17 1.5.4 大数据运维工程师 18 1.6 本章小结 18 1.7 习题 18 第2章 Linux的基础操作 19 2.1 Linux概述 19 2.1.1 Linux系统的发行版本及特点 19 2.1.2 Linux与Windows系统对比 19 2.2 Linux命令 20 2.2.1 命令行技巧 20 2.2.2 Linux帮助命令 22 2.2.3 Linux文件类型及查看操作 24 2.2.4 文件与目录操作 27 2.2.5 文本编辑 34 2.2.6 文本过滤器与处理 39 2.2.7 用户与用户组管理 43 2.2.8 文件权限管理 49 2.2.9 归档与压缩 53 2.2.10 进程管理 56 2.3 本章小结 57 2.4 习题 57 第3章 Hadoop大数据处理架构 59 3.1 Hadoop简介 59 3.1.1 Hadoop的概念 59 3.1.2 Hadoop的发展史 59 3.1.3 Hadoop版本介绍 61 3.2 Hadoop的特性 61 3.3 Hadoop生态系统 62 3.3.1 Hadoop集群的架构 62 3.3.2 Hadoop生态系统的组件 62 3.4 部署Hadoop集群 64 3.4.1 Hadoop集群的部署方式 64 3.4.2 虚拟机的创建和配置 64 3.4.3 安装JDK 91 3.4.4 安装Hadoop 92 3.4.5 验证 98 3.5 本章小节 104 3.6 习题 104 第4章 HDFS分布式文件系统 105 4.1 HDFS简介 105 4.1.1 分布式文件系统的发展 105 4.1.2 HDFS的基本概念 107 4.1.3 HDFS的特点 108 4.2 HDFS的存储架构和工作原理 109 4.2.1 HDFS的存储架构 109 4.2.2 HDFS文件的读取原理 110 4.2.3 HDFS文件的写入原理 111 4.3 HDFS的Shell操作 112 4.4 HDFS的Java API介绍 114 4.4.1 HDFS Java API概述 114 4.4.2 使用Java API操作HDFS 114 4.5 本章小结 123 4.6 习题 123 第5章 MapReduce分布式计算框架 124 5.1 MapReduce简介 124 5.1.1 分布式并行编程 124 5.1.2 MapReduce模型简介 125 5.1.3 MapReduce的优/缺点 125 5.1.4 Map和Reduce函数 126 5.2 MapReduce的工作原理 127 5.2.1 工作原理概述 127 5.2.2 MapReduce的工作过程 127 5.2.3 Map任务的工作原理 129 5.2.4 Shuffle的工作原理 130 5.2.5 Reduce任务的工作原理 133 5.3 MapReduce编程组件 134 5.3.1 InputFormat组件 135 5.3.2 Mapper组件 139 5.3.3 Reducer组件 140 5.3.4 Partitioner组件 140 5.3.5 Combiner组件 141 5.3.6 OutputFormat组件 142 5.4 MapReduce案例 142 5.4.1 本地测试环境配置 143 5.4.2 WordCount 144 5.4.3 倒排索引 146 5.4.4 数据去重 154 5.4.5 Top-N 157 5.5 MapReduce实验 160 5.5.1 任务要求 161 5.5.2 环境准备 161 5.5.3 程序编写 162 5.5.4 本地测试 165 5.5.5 集群测试 166 5.6 本章小结 167 5.7 习题 168 第6章 ZooKeeper分布式协调服务 170 6.1 ZooKeeper概述 170 6.1.1 ZooKeeper的设计目标 170 6.1.2 ZooKeeper的特性 171 6.1.3 ZooKeeper集群角色 172 6.1.4 ZooKeeper实现 173 6.2 ZooKeeper数据模型 174 6.2.1 数据存储结构 174 6.2.2 节点类型 175 6.2.3 znode属性 176 6.2.4 znode数据访问 176 6.2.5 其他节点 176 6.2.6 ZooKeeper中的时间 177 6.3 watch机制 178 6.3.1 watch机制的定义 178 6.3.2 watch机制的语义 178 6.3.3 watch机制的实现 179 6.3.4 watch机制的特点 179 6.3.5 watch机制的通知状态和事件类型 180 6.3.6 ZooKeeper对watch的支持 180 6.4 ZooKeeper的选举机制 180 6.4.1 选举机制相关概念 180 6.4.2 选举机制类型 181 6.5 ZooKeeper会话 182 6.6 ZooKeeper使用ACL进行访问控制 185 6.6.1 ACL权限与内置方案 185 6.6.2 ZooKeeper C API 186 6.7 可插拔ZooKeeper身份验证 187 6.8 ZooKeeper绑定 189 6.8.1 Java绑定 189 6.8.2 C绑定 191 6.9 ZooKeeper部署及操作 191 6.9.1 ZooKeeper的下载与安装 192 6.9.2 配置修改 192 6.9.3 ZooKeeper操作 194 6.9.4 ZooKeeper集群部署 195 6.9.5 ZooKeeper的Java API操作 203 6.10 ZooKeeper典型应用 209 6.10.1 数据发布与订阅 209 6.10.2 负载均衡 209 6.10.3 命名服务 210 6.10.4 分布式锁 210 6.11 本章小结 211 6.12 习题 211 第7章 YARN资源管理器 213 7.1 YARN介绍 213 7.1.1 YARN的概念 213 7.1.2 YARN的应用场景 213 7.2 YARN的基本组成 214 7.2.1 ResourceManager 215 7.2.2 NodeManager 215 7.2.3 ApplicationMaster 216 7.3 YARN的工作流程 216 7.4 YARN的调度器 217 7.4.1 先进先出调度器 218 7.4.2 容量调度器 218 7.4.3 公平调度器 221 7.5 YARN的常用命令 227 7.5.1 查看任务 227 7.5.2 查看日志 228 7.5.3 查看尝试运行任务 228 7.5.4 查看容器 229 7.5.5 查看节点状态 229 7.5.6 更新配置 229 7.5.7 查看队列 230 7.6 本章小结 230 7.7 习题 230 第8章 HBase分布式数据库 232 8.1 HBase简介 232 8.2 HBase的基本组成结构 232 8.2.1 表 233 8.2.2 行 233 8.2.3 列簇 233 8.2.4 列限定符 233 8.2.5 单元格 233 8.3 HBase数据模型 234 8.4 HBase的系统架构 235 8.5 HBase的安装部署 237 8.6 HBase的Shell操作 241 8.6.1 基本命令 241 8.6.2 命名空间操作 242 8.6.3 常用DDL操作 243 8.6.4 常用DML操作 247 8.7 HBase的Java API介绍 251 8.7.1 环境配置 251 8.7.2 Java API操作 252 8.8 本章小结 255 8.9 习题 255 第9章 Hive数据仓储 256 9.1 Hive简介 256 9.1.1 Hive的体系结构 256 9.1.2 Hive的工作流程 257 9.2 Hive的安装与配置 258 9.2.1 Hive的安装 258 9.2.2 Hive的配置 260 9.3 Hive数据操作 261 9.3.1 Hive的数据类型 261 9.3.2 DDL操作 263 9.3.3 DML操作 267 9.3.4 Hive SQL操作 270 9.4 实验 274 9.4.1 例1:MovieLens用户评分 274 9.4.2 例2:Apache网络日志数据 276 9.5 本章小结 276 9.6 习题 277 第10章 PySpark数据处理与分析 278 10.1 Spark概述 278 10.1.1 基本概念 279 10.1.2 Spark的基本组成与架构 280 10.1.3 Spark编程模型 282 10.1.4 Spark集群架构 283 10.2 PySpark简介 285 10.3 PySpark的部署和操作 285 10.3.1 PySpark部署 285 10.3.2 快速启动DataFrame 287 10.4 Spark Pandas API 299 10.4.1 快速入门 299 10.4.2 常用的操作运算 305 10.4.3 PySpark使用方法的详细讲解 307 10.5 实验 332 10.5.1 DataFrame数据操作 333 10.5.2 Spark Pandas API的操作 334 10.6 本章小结 335 10.7 习题 335 第11章 综合案例 337 11.1 实验准备 337 11.2 实验环境 337 11.3 实验目的 337 11.4 数据预处理 338 11.5 数据入库 339 11.5.1 启动Hadoop环境 339 11.5.2 数据导入HBase 340 11.6 构建索引表 341 11.6.1 创建Jingdong工程 342 11.6.2 导入相关jar包 343 11.6.3 创建ItemsInfo实体类 346 11.6.4 编写创建HBase索引表的代码 348 11.6.5 将程序打包成jar包 356 11.6.6 运行环境配置 361 11.6.7 运行程序 363 11.7 构建搜索引擎 363 11.7.1 创建Java Web工程 364 11.7.2 导入相关jar包 366 11.7.3 部署Tomcat到IntelliJ IDEA中 367 11.7.4 创建相关类 370 11.7.5 创建前端页面DataSearch.jsp 378 11.7.6 加载hbase-site.xml配置文件 382 11.8 页面访问 385 11.9 本章小结 386 参考文献 387
http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=G0463480